57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
from django.contrib import admin,messages
|
|
from django.utils.translation import ngettext
|
|
from .models import Machine_Data,Schedule_Day_Data,Schedule_Week_Data
|
|
# Register your models here.
|
|
|
|
DB = 'cloudmanager_db'
|
|
|
|
|
|
class ActiveAtHourFilter(admin.SimpleListFilter):
|
|
title = 'Active at hour'
|
|
parameter_name = 'active_at_hour'
|
|
|
|
def lookups(self, request, model_admin):
|
|
return [(str(h), f'{h:02d}:00') for h in range(24)]
|
|
|
|
def queryset(self, request, queryset):
|
|
if self.value() is not None:
|
|
hour = self.value()
|
|
return queryset.filter(**{f'schedule_day__state_at_{hour}': True})
|
|
return queryset
|
|
|
|
|
|
class MultiDBModelAdmin(admin.ModelAdmin):
|
|
"""Base class that pins all admin operations to DB."""
|
|
db = DB
|
|
|
|
def get_queryset(self, request):
|
|
return super().get_queryset(request).using(self.db)
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.save(using=self.db)
|
|
|
|
def delete_model(self, request, obj):
|
|
obj.delete(using=self.db)
|
|
|
|
def delete_queryset(self, request, queryset):
|
|
queryset.using(self.db).delete()
|
|
|
|
|
|
@admin.register(Machine_Data)
|
|
class MachineDataAdmin(MultiDBModelAdmin):
|
|
list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas')
|
|
list_filter = (ActiveAtHourFilter,)
|
|
|
|
|
|
@admin.register(Schedule_Day_Data)
|
|
class ScheduleDayAdmin(MultiDBModelAdmin):
|
|
list_display = ['name_schedule'] + [f'state_at_{h}' for h in range(24)]
|
|
|
|
|
|
@admin.register(Schedule_Week_Data)
|
|
class ScheduleWeekAdmin(MultiDBModelAdmin):
|
|
list_display = (
|
|
'name_schedule',
|
|
'state_Monday', 'state_Tuesday', 'state_Wednesday',
|
|
'state_Thursday', 'state_Friday', 'state_Saturday', 'state_Sunday',
|
|
) |