add extra button admin
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@button()
|
||||
def import_namespace(self, request):
|
||||
# your business logic here
|
||||
import_namespace()
|
||||
self.message_user(request, 'Namespaces imported')
|
||||
|
||||
@@ -10,4 +10,4 @@ class JobAdmin(ImportExportModelAdmin):
|
||||
list_display = ('podcast_name','clickable_links','enabled')
|
||||
|
||||
def clickable_links(self, obj):
|
||||
return format_html('<a href="{}">{}</a>', obj.podcast_url,obj.podcast_url)
|
||||
return format_html('<a href="{}">{}</a>', obj.podcast_url,obj.podcast_url)
|
||||
|
||||
Reference in New Issue
Block a user