
    Vh                     6    dd d ddZ 	 dd d d d ddZd ddZy )N)permissionsdescriptionc                *    fd}| |S  ||       S )az  
    Conveniently add attributes to an action function::

        @admin.action(
            permissions=['publish'],
            description='Mark selected stories as published',
        )
        def make_published(self, request, queryset):
            queryset.update(status='p')

    This is equivalent to setting some attributes (with the original, longer
    names) on the function directly::

        def make_published(self, request, queryset):
            queryset.update(status='p')
        make_published.allowed_permissions = ['publish']
        make_published.short_description = 'Mark selected stories as published'
    c                 ,    | _         | _        | S N)allowed_permissionsshort_description)funcr   r   s    O/home/dcms/DCMS/lib/python3.12/site-packages/django/contrib/admin/decorators.py	decoratorzaction.<locals>.decorator   s$    "'2D$"%0D"     )functionr   r   r   s    `` r
   actionr      s!    ( ""r   )booleanorderingr   empty_valuec                2    fd}| |S  ||       S )a~  
    Conveniently add attributes to a display function::

        @admin.display(
            boolean=True,
            ordering='-publish_date',
            description='Is Published?',
        )
        def is_published(self, obj):
            return obj.publish_date is not None

    This is equivalent to setting some attributes (with the original, longer
    names) on the function directly::

        def is_published(self, obj):
            return obj.publish_date is not None
        is_published.boolean = True
        is_published.admin_order_field = '-publish_date'
        is_published.short_description = 'Is Published?'
    c                 n    t        d      | _        | _        | _        | _        | S )NzWThe boolean and empty_value arguments to the @display decorator are mutually exclusive.)
ValueErrorr   admin_order_fieldr   empty_value_display)r	   r   r   r   r   s    r
   r   zdisplay.<locals>.decorator:   s^    ;#:4  "DL%-D""%0D""'2D$r   r   )r   r   r   r   r   r   s    ```` r
   displayr   "   s!    0  ""r   sitec                 F     ddl m ddlm ddlm  fd}|S )z
    Register the given model(s) classes and wrapped ModelAdmin class with
    admin site:

    @register(Author)
    class AuthorAdmin(admin.ModelAdmin):
        pass

    The `site` kwarg is an admin site to use instead of the default admin site.
        )
ModelAdmin)	AdminSiter   c                     st        d      xs }t        |      st        d      t        |       st        d      |j                  |        | S )Nz.At least one model must be passed to register.zsite must subclass AdminSitez'Wrapped class must subclass ModelAdmin.)admin_class)r   
isinstance
issubclassregister)r    
admin_siter   r   default_sitemodelsr   s     r
   _model_admin_wrapperz&register.<locals>._model_admin_wrapper_   sa    MNN)\
*i0;<<+z2FGGF<r   )django.contrib.adminr   django.contrib.admin.sitesr   r   )r   r&   r'   r   r   r%   s   `` @@@r
   r#   r#   P   s      04?    r   r   )r   r   r#   r   r   r
   <module>r*      s8   #4 #D +#"TtQU+#\    r   