✨(organization) add admin action for plugin
This allows admin user to run the post creation plugins from the organization list.
This commit is contained in:
@@ -10,6 +10,7 @@ and this project adheres to
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
- ✨(organization) add admin action for plugin #640
|
||||||
- ✨(anct) fetch and display organization names of communes #583
|
- ✨(anct) fetch and display organization names of communes #583
|
||||||
- ✨(frontend) display email if no username #562
|
- ✨(frontend) display email if no username #562
|
||||||
- 🧑💻(oidc) add ability to pull registration ID (e.g. SIRET) from OIDC #577
|
- 🧑💻(oidc) add ability to pull registration ID (e.g. SIRET) from OIDC #577
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
"""Admin classes and registrations for People's core app."""
|
"""Admin classes and registrations for People's core app."""
|
||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin, messages
|
||||||
from django.contrib.auth import admin as auth_admin
|
from django.contrib.auth import admin as auth_admin
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from mailbox_manager.admin import MailDomainAccessInline
|
from mailbox_manager.admin import MailDomainAccessInline
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
|
from .plugins.loader import (
|
||||||
|
get_organization_plugins,
|
||||||
|
organization_plugins_run_after_create,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TeamAccessInline(admin.TabularInline):
|
class TeamAccessInline(admin.TabularInline):
|
||||||
@@ -206,10 +210,23 @@ class OrganizationServiceProviderInline(admin.TabularInline):
|
|||||||
extra = 0
|
extra = 0
|
||||||
|
|
||||||
|
|
||||||
|
@admin.action(description=_("Run post creation plugins"), permissions=["change"])
|
||||||
|
def run_post_creation_plugins(modeladmin, request, queryset): # pylint: disable=unused-argument
|
||||||
|
"""Run the post creation plugins for the selected organizations."""
|
||||||
|
for organization in queryset:
|
||||||
|
organization_plugins_run_after_create(organization)
|
||||||
|
|
||||||
|
messages.success(
|
||||||
|
request,
|
||||||
|
_("Post creation plugins have been run for the selected organizations."),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Organization)
|
@admin.register(models.Organization)
|
||||||
class OrganizationAdmin(admin.ModelAdmin):
|
class OrganizationAdmin(admin.ModelAdmin):
|
||||||
"""Admin interface for organizations."""
|
"""Admin interface for organizations."""
|
||||||
|
|
||||||
|
actions = [run_post_creation_plugins]
|
||||||
list_display = (
|
list_display = (
|
||||||
"name",
|
"name",
|
||||||
"created_at",
|
"created_at",
|
||||||
@@ -219,6 +236,13 @@ class OrganizationAdmin(admin.ModelAdmin):
|
|||||||
inlines = (OrganizationAccessInline, OrganizationServiceProviderInline)
|
inlines = (OrganizationAccessInline, OrganizationServiceProviderInline)
|
||||||
exclude = ("service_providers",) # Handled by the inline
|
exclude = ("service_providers",) # Handled by the inline
|
||||||
|
|
||||||
|
def get_actions(self, request):
|
||||||
|
"""Adapt actions list to the context."""
|
||||||
|
actions = super().get_actions(request)
|
||||||
|
if not get_organization_plugins():
|
||||||
|
actions.pop("run_post_creation_plugins", None)
|
||||||
|
return actions
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.OrganizationAccess)
|
@admin.register(models.OrganizationAccess)
|
||||||
class OrganizationAccessAdmin(admin.ModelAdmin):
|
class OrganizationAccessAdmin(admin.ModelAdmin):
|
||||||
|
|||||||
Reference in New Issue
Block a user