add extra button admin

This commit is contained in:
pierre geeraert
2026-09-09 20:59:18 +01:00
parent 1012ea31ad
commit b540c7b7e8
3 changed files with 39 additions and 26 deletions
+36 -24
View File
@@ -1,8 +1,10 @@
from django.contrib import admin,messages from django.contrib import admin,messages
from django.utils.translation import ngettext from django.utils.translation import ngettext
from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data
from .utils import import_namespace,import_deployment,generate_default_day_schedule,generate_default_week_schedule,Check_server_supposed_XXX from .utils import import_namespace,import_deployment,generate_default_day_schedule,generate_default_week_schedule,Check_server_supposed_XXX,retrieve_and_apply
from apps.kubernetes_connection.utils import scale_up,scale_down from apps.kubernetes_connection.utils import scale_up,scale_down
from admin_extra_buttons.api import ExtraButtonsMixin, button
DB = 'cloudmanager_db' DB = 'cloudmanager_db'
@@ -50,21 +52,6 @@ def Check_server_supposed_true(modeladmin, request, queryset):
for server in servers_supposed_false: for server in servers_supposed_false:
messages.add_message(request, messages.INFO, server) messages.add_message(request, messages.INFO, server)
@admin.action(description="create default schedule")
def generate_default_day_schedule_admin(modeladmin, request, queryset):
generate_default_day_schedule()
generate_default_week_schedule()
@admin.action(description="import namespace")
def import_namespace_admin(modeladmin, request, queryset):
import_namespace()
@admin.action(description="import deployment")
def import_deployment_admin(modeladmin, request, queryset):
import_deployment()
class ActiveAtHourFilter(admin.SimpleListFilter): class ActiveAtHourFilter(admin.SimpleListFilter):
title = 'Active at hour' title = 'Active at hour'
@@ -98,27 +85,52 @@ class MultiDBModelAdmin(admin.ModelAdmin):
@admin.register(Deployment_Data) @admin.register(Deployment_Data)
class DeploymentDataAdmin(MultiDBModelAdmin): class DeploymentDataAdmin(ExtraButtonsMixin, MultiDBModelAdmin):
list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas')
list_filter = (ActiveAtHourFilter,) list_filter = (ActiveAtHourFilter,)
actions = [Check_server_supposed_False,Check_server_supposed_true,scale_up_deploy,scale_down_deploy,import_deployment_admin,generate_default_day_schedule_admin] actions = [Check_server_supposed_False,Check_server_supposed_true,scale_up_deploy,scale_down_deploy]
@button()
def retrieve_and_apply(self, request):
# your business logic here
retrieve_and_apply()
self.message_user(request, 'Operation started')
@button()
def import_deployment(self, request):
# your business logic here
import_deployment()
self.message_user(request, 'Deployments imported')
@admin.register(Schedule_Day_Data) @admin.register(Schedule_Day_Data)
class ScheduleDayAdmin(MultiDBModelAdmin): class ScheduleDayAdmin(ExtraButtonsMixin,MultiDBModelAdmin):
list_display = ['name_schedule'] + [f'state_at_{h}' for h in range(24)] list_display = ['name_schedule'] + [f'state_at_{h}' for h in range(24)]
actions = [import_deployment_admin,generate_default_day_schedule_admin] @button()
def generate_default_day_schedule_admin(self, request):
generate_default_day_schedule()
generate_default_week_schedule()
self.message_user(request, 'Created default schedules')
@admin.register(Schedule_Week_Data) @admin.register(Schedule_Week_Data)
class ScheduleWeekAdmin(MultiDBModelAdmin): class ScheduleWeekAdmin(ExtraButtonsMixin,MultiDBModelAdmin):
list_display = ( list_display = (
'name_schedule', 'name_schedule',
'state_Monday', 'state_Tuesday', 'state_Wednesday', 'state_Monday', 'state_Tuesday', 'state_Wednesday',
'state_Thursday', 'state_Friday', 'state_Saturday', 'state_Sunday', 'state_Thursday', 'state_Friday', 'state_Saturday', 'state_Sunday',
) )
actions = [import_deployment_admin,generate_default_day_schedule_admin] @button()
def generate_default_day_schedule_admin(self, request):
generate_default_day_schedule()
generate_default_week_schedule()
self.message_user(request, 'Created default schedules')
@admin.register(Namespace_Data) @admin.register(Namespace_Data)
class NamespaceAdmin(MultiDBModelAdmin): class NamespaceAdmin(ExtraButtonsMixin, MultiDBModelAdmin):
list_display = ('namespace',) list_display = ('namespace',)
actions = [import_namespace_admin]
@button()
def import_namespace(self, request):
# your business logic here
import_namespace()
self.message_user(request, 'Namespaces imported')
+1
View File
@@ -54,6 +54,7 @@ INSTALLED_APPS = [
'import_export', 'import_export',
'djangoql', 'djangoql',
'django_q', 'django_q',
'admin_extra_buttons',
] ]
MIDDLEWARE = [ MIDDLEWARE = [