(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:
Quentin BEY
2025-01-15 12:37:50 +01:00
committed by BEY Quentin
parent 632a78c339
commit 76fc789eb6
2 changed files with 26 additions and 1 deletions

View File

@@ -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

View File

@@ -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):