diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py
index bb6b80e..253caf2 100644
--- a/django_code/apps/cloudmanager/admin.py
+++ b/django_code/apps/cloudmanager/admin.py
@@ -1,8 +1,10 @@
from django.contrib import admin,messages
from django.utils.translation import ngettext
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 admin_extra_buttons.api import ExtraButtonsMixin, button
+
DB = 'cloudmanager_db'
@@ -49,21 +51,6 @@ def Check_server_supposed_true(modeladmin, request, queryset):
servers_supposed_false = Check_server_supposed_XXX(True)
for server in servers_supposed_false:
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):
@@ -98,27 +85,52 @@ class MultiDBModelAdmin(admin.ModelAdmin):
@admin.register(Deployment_Data)
-class DeploymentDataAdmin(MultiDBModelAdmin):
+class DeploymentDataAdmin(ExtraButtonsMixin, MultiDBModelAdmin):
list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas')
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)
-class ScheduleDayAdmin(MultiDBModelAdmin):
+class ScheduleDayAdmin(ExtraButtonsMixin,MultiDBModelAdmin):
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)
-class ScheduleWeekAdmin(MultiDBModelAdmin):
+class ScheduleWeekAdmin(ExtraButtonsMixin,MultiDBModelAdmin):
list_display = (
'name_schedule',
'state_Monday', 'state_Tuesday', 'state_Wednesday',
'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)
-class NamespaceAdmin(MultiDBModelAdmin):
+class NamespaceAdmin(ExtraButtonsMixin, MultiDBModelAdmin):
list_display = ('namespace',)
- actions = [import_namespace_admin]
\ No newline at end of file
+
+
+ @button()
+ def import_namespace(self, request):
+ # your business logic here
+ import_namespace()
+ self.message_user(request, 'Namespaces imported')
diff --git a/django_code/apps/podcast_aggregator/admin.py b/django_code/apps/podcast_aggregator/admin.py
index ecbf68e..932142f 100644
--- a/django_code/apps/podcast_aggregator/admin.py
+++ b/django_code/apps/podcast_aggregator/admin.py
@@ -10,4 +10,4 @@ class JobAdmin(ImportExportModelAdmin):
list_display = ('podcast_name','clickable_links','enabled')
def clickable_links(self, obj):
- return format_html('{}', obj.podcast_url,obj.podcast_url)
\ No newline at end of file
+ return format_html('{}', obj.podcast_url,obj.podcast_url)
diff --git a/django_code/core/settings.py b/django_code/core/settings.py
index c8bfcfd..a31ec4c 100644
--- a/django_code/core/settings.py
+++ b/django_code/core/settings.py
@@ -54,6 +54,7 @@ INSTALLED_APPS = [
'import_export',
'djangoql',
'django_q',
+ 'admin_extra_buttons',
]
MIDDLEWARE = [