From ed240d3cd0decc166efc55e5f03671ca68d2e22b Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Thu, 18 Jun 2026 10:26:09 +0100 Subject: [PATCH] having to change the admin direction due to no router --- django_code/apps/cloudmanager/admin.py | 45 +++++++++++++++------- django_code/apps/random_simpsons/admin.py | 16 +++++++- django_code/apps/random_simpsons/models.py | 2 +- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 16c2296..0c89bcc 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -3,6 +3,9 @@ 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' @@ -16,23 +19,39 @@ class ActiveAtHourFilter(admin.SimpleListFilter): 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 Machine_Data(admin.ModelAdmin): - list_display = ('name', 'namespace', 'schedule_week', 'schedule_day','replicas') - list_filter = ( - 'schedule_week', # filter by week schedule (shows all Schedule_Week_Data entries) - ActiveAtHourFilter, # filter by active hour (e.g. who runs at 08:00) - ) +class MachineDataAdmin(MultiDBModelAdmin): + list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') + list_filter = (ActiveAtHourFilter,) @admin.register(Schedule_Day_Data) -class Schedule_Day_Data(admin.ModelAdmin): - list_display = ('name_schedule','state_at_0','state_at_1','state_at_2','state_at_3','state_at_4','state_at_5','state_at_6','state_at_7','state_at_8','state_at_9','state_at_10','state_at_11','state_at_12','state_at_13','state_at_14','state_at_15','state_at_16','state_at_17','state_at_18','state_at_19','state_at_20','state_at_21','state_at_22','state_at_23') - +class ScheduleDayAdmin(MultiDBModelAdmin): + list_display = ['name_schedule'] + [f'state_at_{h}' for h in range(24)] @admin.register(Schedule_Week_Data) -class Schedule_Week_Data(admin.ModelAdmin): - list_display = ('name_schedule','state_Monday','state_Tuesday','state_Wednesday','state_Thursday','state_Friday','state_Saturday','state_Sunday') - - +class ScheduleWeekAdmin(MultiDBModelAdmin): + list_display = ( + 'name_schedule', + 'state_Monday', 'state_Tuesday', 'state_Wednesday', + 'state_Thursday', 'state_Friday', 'state_Saturday', 'state_Sunday', + ) \ No newline at end of file diff --git a/django_code/apps/random_simpsons/admin.py b/django_code/apps/random_simpsons/admin.py index 6f8e167..b196772 100644 --- a/django_code/apps/random_simpsons/admin.py +++ b/django_code/apps/random_simpsons/admin.py @@ -3,6 +3,8 @@ from django.utils.translation import ngettext from .models import SimpsonsData # Register your models here. +DB = 'simpsons_db' + @admin.action(description="Mark episode as seen") def make_seen(modeladmin, request, queryset): @@ -37,4 +39,16 @@ class EpisodeAdmin(admin.ModelAdmin): list_display = ('season', 'episode', 'url', 'seen') list_filter = ['seen'] fields = ['season', 'episode', 'url', 'seen'] - actions = [make_seen,make_unseen] \ No newline at end of file + actions = [make_seen,make_unseen] + + def get_queryset(self, request): + return super().get_queryset(request).using(DB) + + def save_model(self, request, obj, form, change): + obj.save(using=DB) + + def delete_model(self, request, obj): + obj.delete(using=DB) + + def delete_queryset(self, request, queryset): + queryset.using(DB).delete() \ No newline at end of file diff --git a/django_code/apps/random_simpsons/models.py b/django_code/apps/random_simpsons/models.py index 857e88b..07f611f 100644 --- a/django_code/apps/random_simpsons/models.py +++ b/django_code/apps/random_simpsons/models.py @@ -7,4 +7,4 @@ class SimpsonsData(models.Model): seen = models.BooleanField() class Meta: - db_table = 'episodes' \ No newline at end of file + db_table = 'episodes'