Tools for django admin
Project description
Django Admin Confirm
Features
-
AdminConfirmMixin Based on django-admin-confirm with support for django-object-actions AdminConfirmMixin is a mixin for ModelAdmin to add confirmations to change, add and actions.
-
AdminFormMixin AdminFormMixin is a mixin for ModelAdmin to add a form to configure your actions.
-
Ability to Confirm an action form with a preview of the objects and form data
-
Add support to chain form
ScreenShot
Confirm ScreenShot
Form ScreenShot
Installation
Install django-admin-action-tools by running:
poetry add django-admin-action-tools
Add admin_action_tools
to INSTALLED_APPS
in your project settings before django.contrib.admin
:
INSTALLED_APPS = [
...
'admin_action_tools',
'django.contrib.admin',
...
'widget_tweaks'
...
]
To use ActionFormMixin
you also need to add widget_tweaks
to the INSTALLED_APPS
Note that this project follows the template override rules of Django.
To override a template, your app should be listed before admin_confirm
, admin_form
in INSTALLED_APPS.
Configuration Options
Environment Variables:
Caching is used to cache files for confirmation. When change/add is submitted on the ModelAdmin, if confirmation is required, files will be cached until all validations pass and confirmation is received.
ADMIN_CONFIRM_CACHE_TIMEOUT
default: 1000ADMIN_CONFIRM_CACHE_KEY_PREFIX
default: admin_confirm__file_cache
Attributes:
confirm_change
Optional[bool] - decides if changes should trigger confirmationconfirm_add
Optional[bool] - decides if additions should trigger confirmationconfirmation_fields
Optional[Array[string]] - sets which fields should trigger confirmation for add/change. For adding new instances, the field would only trigger a confirmation if it's set to a value that's not its default.change_confirmation_template
Optional[string] - path to custom html template to use for change/addaction_confirmation_template
Optional[string] - path to custom html template to use for actions
Note that setting confirmation_fields
without setting confirm_change
or confirm_add
would not trigger confirmation for change/add. Confirmations for actions does not use the confirmation_fields
option.
Method Overrides: If you want even more control over the confirmation, these methods can be overridden:
get_confirmation_fields(self, request: HttpRequest, obj: Optional[Object]) -> List[str]
render_change_confirmation(self, request: HttpRequest, context: dict) -> TemplateResponse
render_action_confirmation(self, request: HttpRequest, context: dict) -> TemplateResponse
Usage
AdminConfirmMixin
It can be configured to add a confirmation page on ModelAdmin upon:
- saving changes
- adding new instances
- performing actions
Confirm Change:
from admin_confirm import AdminConfirmMixin
class MyModelAdmin(AdminConfirmMixin, ModelAdmin):
confirm_change = True
confirmation_fields = ['field1', 'field2']
This would confirm changes on changes that include modifications onfield1
and/or field2
.
Confirm Add:
from admin_confirm import AdminConfirmMixin
class MyModelAdmin(AdminConfirmMixin, ModelAdmin):
confirm_add = True
confirmation_fields = ['field1', 'field2']
This would confirm add on adds that set field1
and/or field2
to a non default value.
Note: confirmation_fields
apply to both add/change confirmations.
Confirm Action:
from admin_confirm import AdminConfirmMixin
class MyModelAdmin(AdminConfirmMixin, ModelAdmin):
actions = ["action1", "action2"]
def action1(modeladmin, request, queryset):
# Do something with the queryset
@confirm_action()
def action2(modeladmin, request, queryset):
# Do something with the queryset
action2.allowed_permissions = ('change',)
This would confirm action2
but not action1
.
Action confirmation will respect allowed_permissions
and the has_xxx_permission
methods.
Note: AdminConfirmMixin does not confirm any changes on inlines
Confirm Object Action:
from admin_confirm import AdminConfirmMixin
from django_object_actions import DjangoObjectActions
class MyModelAdmin(AdminConfirmMixin, DjangoObjectActions, ModelAdmin):
change_actions = ["action1"]
@confirm_action()
def action1(self, request, object):
# Do something with the object
AdminFormMixin
Action Form
from admin_confirm import ActionFormMixin, add_form_to_action
from myapp.form import NoteActionForm
from django_object_actions import DjangoObjectActions
class MyModelAdmin(ActionFormMixin, DjangoObjectActions, ModelAdmin):
change_actions = ["object_action"]
@add_form_to_action(NoteActionForm)
def action1(modeladmin, request, queryset, form=None):
# Do something with the queryset
@add_form_to_action(NoteActionForm)
def object_action(modeladmin, request, object, form=None):
# Do something with the object
Chaining tools
from admin_confirm import AdminConfirmMixin, ActionFormMixin, confirm_action, add_form_to_action
from django_object_actions import DjangoObjectActions
from myapp.form import NoteActionForm
class MyModelAdmin(AdminConfirmMixin, ActionFormMixin, DjangoObjectActions, ModelAdmin):
change_actions = ["action1"]
@add_form_to_action(NoteActionForm)
@confirm_action()
def action1(self, request, object, form=None):
# Do something with the object
This will chain form and confirmation. The confirmation page will have the actions & form values displayed. If you only want the action (same as confirm only), you can pass the following argument
from admin_confirm import AdminConfirmMixin, ActionFormMixin, confirm_action, add_form_to_action
from django_object_actions import DjangoObjectActions
from myapp.form import NoteActionForm
class MyModelAdmin(AdminConfirmMixin, ActionFormMixin, DjangoObjectActions, ModelAdmin):
change_actions = ["action1"]
@add_form_to_action(NoteActionForm)
@confirm_action(display_form=False)
def action1(self, request, object, form=None):
# Do something with the object and form
from admin_confirm import AdminConfirmMixin, ActionFormMixin, confirm_action, add_form_to_action
from django_object_actions import DjangoObjectActions
from myapp.form import NoteActionForm, SecondForm
class MyModelAdmin(AdminConfirmMixin, ActionFormMixin, DjangoObjectActions, ModelAdmin):
change_actions = ["action1"]
@add_form_to_action(NoteActionForm)
@add_form_to_action(SecondForm)
@confirm_action()
def action1(self, request, object, forms=None):
# Do something with the object and forms
This will chain 2 forms and confirmation. The confirmation page will have the actions & form values displayed.
if you want to not display the impacted objects, you can use
from admin_confirm import AdminConfirmMixin, ActionFormMixin, confirm_action, add_form_to_action
from django_object_actions import DjangoObjectActions
from myapp.form import NoteActionForm, SecondForm
class MyModelAdmin(AdminConfirmMixin, ActionFormMixin, DjangoObjectActions, ModelAdmin):
change_actions = ["action1"]
@add_form_to_action(NoteActionForm, display_queryset=False)
@add_form_to_action(SecondForm, display_queryset=False)
@confirm_action(display_queryset=False)
def action1(self, request, object, forms=None):
# Do something with the object and forms
Development
Check out our development process if you're interested.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django_admin_action_tools-1.2.0.tar.gz
.
File metadata
- Download URL: django_admin_action_tools-1.2.0.tar.gz
- Upload date:
- Size: 129.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4199721fe5080eaaad891b48bae555429a8e9eaad25262da91d0413e0090378 |
|
MD5 | 33d0e0bbb4aebb224de42dc863dc1256 |
|
BLAKE2b-256 | cb697c2998915304a9c624a5014aee1b445733ee79311a22f95c4c1a57d297f4 |
File details
Details for the file django_admin_action_tools-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: django_admin_action_tools-1.2.0-py3-none-any.whl
- Upload date:
- Size: 148.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a87a6d7aadb7e9e3b46bafafe39e6dd2f94d0bd9a2a7ce0e95b7311f64477069 |
|
MD5 | 019ce20e0072149d2b046e2df78f9c51 |
|
BLAKE2b-256 | 430e99cfde9a201a4aabff4e378ca7afcd5d41144d711665970e4db706ec6e29 |