diff --git a/README.md b/README.md index a35f2243..2d7cc7d0 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ django-admin-interface is a modern **responsive flat admin interface customizabl - `django-dynamic-raw-id` - `django-json-widget` - `django-modeltranslation` + - `django-object-actions` - `django-rangefilter` - `django-streamfield` - `django-tabbed-admin` diff --git a/admin_interface/templates/admin/change_form.html b/admin_interface/templates/admin/change_form.html index 73014c2d..ebd2ab92 100644 --- a/admin_interface/templates/admin/change_form.html +++ b/admin_interface/templates/admin/change_form.html @@ -1,6 +1,19 @@ {% extends "admin/change_form.html" %} {% load admin_interface_tags static %} +{% block object-tools-items %} + {% admin_interface_use_object_actions adminform.model_admin as show_object_actions %} + {% if show_object_actions %} + {% for tool in objectactions %} +
  • + {% url tools_view_name pk=object_id tool=tool.name as action_url %} + {% include 'django_object_actions/action_trigger.html' %} +
  • + {% endfor %} + {% endif %} + {{ block.super }} +{% endblock object-tools-items %} + {% block field_sets %} {% get_admin_interface_setting "show_fieldsets_as_tabs" as show_fieldsets_as_tabs %} diff --git a/admin_interface/templates/admin/change_list.html b/admin_interface/templates/admin/change_list.html index 2e8bde3a..e8c9ccba 100644 --- a/admin_interface/templates/admin/change_list.html +++ b/admin_interface/templates/admin/change_list.html @@ -1,5 +1,19 @@ {% extends "admin/change_list.html" %} {% load admin_interface_tags admin_list i18n %} + +{% block object-tools-items %} + {% admin_interface_use_object_actions cl.model_admin as show_object_actions %} + {% if show_object_actions %} + {% for tool in objectactions %} +
  • + {% url tools_view_name tool=tool.name as action_url %} + {% include 'django_object_actions/action_trigger.html' %} +
  • + {% endfor %} + {% endif %} + {{ block.super }} +{% endblock object-tools-items %} + {# copied from django 5.1.2 #} {% block filters %} diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py index a675dff1..6e5c9afa 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -15,6 +15,13 @@ from admin_interface.metadata import __version__ from admin_interface.models import Theme +try: + from django_object_actions import BaseDjangoObjectActions + + DJANGO_OBJECT_ACTIONS_INSTALLED = True +except ImportError: + DJANGO_OBJECT_ACTIONS_INSTALLED = False + register = template.Library() @@ -191,3 +198,10 @@ def admin_interface_use_changeform_tabs(adminform, inline_forms): @register.filter def admin_interface_slugify(name): return slugify(str(name or "")) + + +@register.simple_tag +def admin_interface_use_object_actions(model_admin): + return DJANGO_OBJECT_ACTIONS_INSTALLED and isinstance( + model_admin, BaseDjangoObjectActions + )