o ad @s:d dddddZd dddddddZdddd ZdS) N) permissions descriptioncs"fdd}|dur |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' cs dur|_dur|_|SN)allowed_permissionsshort_descriptionfuncrrA/usr/lib/python3/dist-packages/django/contrib/admin/decorators.py decorators zaction..decoratorNr )functionrrr r rr actionsr )booleanorderingr empty_valuecs&fdd}|dur|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?' csTdur dur tddur|_dur|_dur!|_dur(|_|S)NzWThe boolean and empty_value arguments to the @display decorator are mutually exclusive.) ValueErrorradmin_order_fieldrempty_value_displayrrrrrr r r 5szdisplay..decoratorNr )r rrrrr r rr display sr)sitecs4ddlmddlmmfdd}|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) AdminSitercsJstdp }t|stdt|std|j|d|S)Nz.At least one model must be passed to register.zsite must subclass AdminSitez'Wrapped class must subclass ModelAdmin.) admin_class)r isinstance issubclassregister)r admin_siterr default_sitemodelsrr r _model_admin_wrapperXs  z®ister.._model_admin_wrapper)django.contrib.adminrdjango.contrib.admin.sitesrr)rr!r"r rr rJs rr)r rrr r r r s*