approval.admin.sandbox
Django Admin configuration for approval.
Attributes:
SandboxAdmin:
The ApprovalAdmin
class configures the Administration interface
to help admins monitor all the changed still pending in every
approval-enabled model.
1""" 2Django Admin configuration for approval. 3 4Attributes: 5 SandboxAdmin: 6 The `ApprovalAdmin` class configures the Administration interface 7 to help admins monitor all the changed still pending in every 8 approval-enabled model. 9""" 10from django.contrib.admin import display 11from django.contrib.admin.options import ModelAdmin 12from django.template.loader import render_to_string 13from django.utils.safestring import mark_safe 14from django.utils.translation import gettext_lazy as _ 15 16 17class SandboxAdmin(ModelAdmin): 18 """Moderation of approval sandboxes.""" 19 20 list_select_related = True 21 list_display = ["id", "source", "moderator", "approved", "draft", "updated", "get_sandbox_data"] 22 readonly_fields = ["source"] 23 list_display_links = ["id"] 24 list_filter = ["approved", "draft", "updated", "moderator__is_superuser"] 25 actions = ["do_deny", "do_approve"] 26 27 # Actions 28 @display(description=_("Deny selected approval requests")) 29 def do_deny(self, request, queryset): 30 """Refuse selected approval requests.""" 31 for approval in queryset: 32 approval.deny(user=request.user, save=True) 33 self.message_user(request, _("Selected edits have been denied.")) 34 35 @display(description=_("Approve selected approval requests")) 36 def do_approve(self, request, queryset): 37 """Accept selected approval requests.""" 38 for approval in queryset: 39 approval.approve(user=request.user, save=True) 40 self.message_user(request, _("Selected edits have been accepted.")) 41 42 # Getter 43 @display(description=_("Content")) 44 def get_sandbox_data(self, obj) -> str: 45 """Return a human-readable version of the sandbox contents.""" 46 fields = obj.sandbox.get("fields", {}) 47 store = obj.sandbox.get("store", {}) 48 return mark_safe( 49 render_to_string( 50 "approval/display/sandbox-data.html", {"fields": fields, "store": store} 51 ) 52 )
class
SandboxAdmin(django.contrib.admin.options.ModelAdmin):
18class SandboxAdmin(ModelAdmin): 19 """Moderation of approval sandboxes.""" 20 21 list_select_related = True 22 list_display = ["id", "source", "moderator", "approved", "draft", "updated", "get_sandbox_data"] 23 readonly_fields = ["source"] 24 list_display_links = ["id"] 25 list_filter = ["approved", "draft", "updated", "moderator__is_superuser"] 26 actions = ["do_deny", "do_approve"] 27 28 # Actions 29 @display(description=_("Deny selected approval requests")) 30 def do_deny(self, request, queryset): 31 """Refuse selected approval requests.""" 32 for approval in queryset: 33 approval.deny(user=request.user, save=True) 34 self.message_user(request, _("Selected edits have been denied.")) 35 36 @display(description=_("Approve selected approval requests")) 37 def do_approve(self, request, queryset): 38 """Accept selected approval requests.""" 39 for approval in queryset: 40 approval.approve(user=request.user, save=True) 41 self.message_user(request, _("Selected edits have been accepted.")) 42 43 # Getter 44 @display(description=_("Content")) 45 def get_sandbox_data(self, obj) -> str: 46 """Return a human-readable version of the sandbox contents.""" 47 fields = obj.sandbox.get("fields", {}) 48 store = obj.sandbox.get("store", {}) 49 return mark_safe( 50 render_to_string( 51 "approval/display/sandbox-data.html", {"fields": fields, "store": store} 52 ) 53 )
Moderation of approval sandboxes.
@display(description=_('Deny selected approval requests'))
def
do_deny(self, request, queryset):
29 @display(description=_("Deny selected approval requests")) 30 def do_deny(self, request, queryset): 31 """Refuse selected approval requests.""" 32 for approval in queryset: 33 approval.deny(user=request.user, save=True) 34 self.message_user(request, _("Selected edits have been denied."))
Refuse selected approval requests.
@display(description=_('Approve selected approval requests'))
def
do_approve(self, request, queryset):
36 @display(description=_("Approve selected approval requests")) 37 def do_approve(self, request, queryset): 38 """Accept selected approval requests.""" 39 for approval in queryset: 40 approval.approve(user=request.user, save=True) 41 self.message_user(request, _("Selected edits have been accepted."))
Accept selected approval requests.
@display(description=_('Content'))
def
get_sandbox_data(self, obj) -> str:
44 @display(description=_("Content")) 45 def get_sandbox_data(self, obj) -> str: 46 """Return a human-readable version of the sandbox contents.""" 47 fields = obj.sandbox.get("fields", {}) 48 store = obj.sandbox.get("store", {}) 49 return mark_safe( 50 render_to_string( 51 "approval/display/sandbox-data.html", {"fields": fields, "store": store} 52 ) 53 )
Return a human-readable version of the sandbox contents.
Inherited Members
- django.contrib.admin.options.ModelAdmin
- ModelAdmin
- list_per_page
- list_max_show_all
- list_editable
- search_fields
- search_help_text
- date_hierarchy
- save_as
- save_as_continue
- save_on_top
- paginator
- preserve_filters
- inlines
- add_form_template
- change_form_template
- change_list_template
- delete_confirmation_template
- delete_selected_confirmation_template
- object_history_template
- popup_response_template
- action_form
- actions_on_top
- actions_on_bottom
- actions_selection_counter
- checks_class
- model
- opts
- admin_site
- get_inline_instances
- get_urls
- urls
- get_model_perms
- get_form
- get_changelist
- get_changelist_instance
- get_object
- get_changelist_form
- get_changelist_formset
- get_formsets_with_inlines
- get_paginator
- log_addition
- log_change
- log_deletion
- action_checkbox
- get_actions
- get_action_choices
- get_action
- get_list_display
- get_list_display_links
- get_list_filter
- get_search_fields
- get_search_results
- get_preserved_filters
- construct_change_message
- message_user
- save_form
- save_model
- delete_model
- delete_queryset
- save_formset
- render_change_form
- response_add
- response_change
- response_post_save_add
- response_post_save_change
- response_action
- response_delete
- render_delete_form
- get_inline_formsets
- get_changeform_initial_data
- changeform_view
- add_view
- change_view
- changelist_view
- get_deleted_objects
- delete_view
- history_view
- get_formset_kwargs
- django.contrib.admin.options.BaseModelAdmin
- autocomplete_fields
- raw_id_fields
- fields
- exclude
- fieldsets
- form
- filter_vertical
- filter_horizontal
- radio_fields
- prepopulated_fields
- formfield_overrides
- ordering
- sortable_by
- view_on_site
- show_full_result_count
- check
- formfield_for_dbfield
- formfield_for_choice_field
- get_field_queryset
- formfield_for_foreignkey
- formfield_for_manytomany
- get_autocomplete_fields
- get_view_on_site_url
- get_empty_value_display
- get_exclude
- get_fields
- get_fieldsets
- get_inlines
- get_ordering
- get_readonly_fields
- get_prepopulated_fields
- get_queryset
- get_sortable_by
- lookup_allowed
- to_field_allowed
- has_add_permission
- has_change_permission
- has_delete_permission
- has_view_permission
- has_view_or_change_permission
- has_module_permission