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):
# Do something with the queryset
@add_form_to_action(NoteActionForm)
def object_action(modeladmin, request, object):
# Do something with the object
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
Hashes for django-admin-action-tools-1.0.0a3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68771da1a031b2868aa2b8947a2bdb50ec784ef29808d29278d31d11950d0897 |
|
MD5 | 1f2d03fd92307a50a2d009048a79b39b |
|
BLAKE2b-256 | 3d232176047c154d7ac2014108deef79519bb7ebb45a7d92ec63a02c0cf62a90 |
Hashes for django_admin_action_tools-1.0.0a3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52a1e5c10b41a1d12e11c3b2ce561627698b2b077301446e6e3f0105bd378d71 |
|
MD5 | 10778bde8ca6e57d0185b1226140b91f |
|
BLAKE2b-256 | baae068ef2cbdd179e1ce812fabe6697a3340a071f3cdaa4aa3fe69414bb425a |