diff --git a/.gitignore b/.gitignore index 24e58f4..6516270 100644 --- a/.gitignore +++ b/.gitignore @@ -225,3 +225,4 @@ __marimo__/ */.env/* Webcal-python/* .idea/* +django_code/db.sqlite3 diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 8c38f3f..8cbe234 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -1,3 +1,44 @@ -from django.contrib import admin - +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. + +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 + +@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) + ) + #list_filter = ['seen'] + #fields = ['season', 'episode', 'url', 'seen'] + #actions = [make_seen,make_unseen] + +@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') + #list_filter = ['seen'] + #fields = ['season', 'episode', 'url', 'seen'] + #actions = [make_seen,make_unseen] + + +@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') + #list_filter = ['seen'] + #fields = ['season', 'episode', 'url', 'seen'] + #actions = [make_seen,make_unseen] + diff --git a/django_code/apps/cloudmanager/migrations/0001_initial.py b/django_code/apps/cloudmanager/migrations/0001_initial.py index b0b5a28..20ce565 100644 --- a/django_code/apps/cloudmanager/migrations/0001_initial.py +++ b/django_code/apps/cloudmanager/migrations/0001_initial.py @@ -1,6 +1,7 @@ -# Generated by Django 4.2.29 on 2026-06-11 19:35 +# Generated by Django 4.2.30 on 2026-06-17 13:00 from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -12,17 +13,68 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='CmmData', + name='Schedule_Day_Data', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name_schedule', models.CharField(max_length=100, unique=True)), + ('state_at_0', models.BooleanField()), + ('state_at_1', models.BooleanField()), + ('state_at_2', models.BooleanField()), + ('state_at_3', models.BooleanField()), + ('state_at_4', models.BooleanField()), + ('state_at_5', models.BooleanField()), + ('state_at_6', models.BooleanField()), + ('state_at_7', models.BooleanField()), + ('state_at_8', models.BooleanField()), + ('state_at_9', models.BooleanField()), + ('state_at_10', models.BooleanField()), + ('state_at_11', models.BooleanField()), + ('state_at_12', models.BooleanField()), + ('state_at_13', models.BooleanField()), + ('state_at_14', models.BooleanField()), + ('state_at_15', models.BooleanField()), + ('state_at_16', models.BooleanField()), + ('state_at_17', models.BooleanField()), + ('state_at_18', models.BooleanField()), + ('state_at_19', models.BooleanField()), + ('state_at_20', models.BooleanField()), + ('state_at_21', models.BooleanField()), + ('state_at_22', models.BooleanField()), + ('state_at_23', models.BooleanField()), + ], + options={ + 'db_table': 'schedule_day', + }, + ), + migrations.CreateModel( + name='Schedule_Week_Data', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name_schedule', models.CharField(max_length=100, unique=True)), + ('state_Monday', models.BooleanField()), + ('state_Tuesday', models.BooleanField()), + ('state_Wednesday', models.BooleanField()), + ('state_Thursday', models.BooleanField()), + ('state_Friday', models.BooleanField()), + ('state_Saturday', models.BooleanField()), + ('state_Sunday', models.BooleanField()), + ], + options={ + 'db_table': 'schedule_week', + }, + ), + migrations.CreateModel( + name='Machine_Data', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('namespace', models.CharField(max_length=100)), - ('schedule_day', models.CharField(max_length=100)), - ('schedule_hour', models.CharField(max_length=100)), ('replicas', models.IntegerField()), + ('schedule_day', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cloudmanager.schedule_day_data')), + ('schedule_week', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cloudmanager.schedule_week_data')), ], options={ - 'db_table': 'cloudmanager', + 'db_table': 'machine', }, ), ] diff --git a/django_code/apps/cloudmanager/models.py b/django_code/apps/cloudmanager/models.py index 17ac29b..1f9b526 100644 --- a/django_code/apps/cloudmanager/models.py +++ b/django_code/apps/cloudmanager/models.py @@ -1,12 +1,58 @@ from django.db import models -class CmmData(models.Model): + + +class Schedule_Week_Data(models.Model): + name_schedule = models.CharField(max_length=100,unique=True) + state_Monday = models.BooleanField() + state_Tuesday = models.BooleanField() + state_Wednesday = models.BooleanField() + state_Thursday = models.BooleanField() + state_Friday = models.BooleanField() + state_Saturday = models.BooleanField() + state_Sunday = models.BooleanField() + class Meta: + db_table = 'schedule_week' + def __str__(self): + return self.name_schedule + +class Schedule_Day_Data(models.Model): + name_schedule = models.CharField(max_length=100,unique=True) + state_at_0 = models.BooleanField() + state_at_1 = models.BooleanField() + state_at_2 = models.BooleanField() + state_at_3 = models.BooleanField() + state_at_4 = models.BooleanField() + state_at_5 = models.BooleanField() + state_at_6 = models.BooleanField() + state_at_7 = models.BooleanField() + state_at_8 = models.BooleanField() + state_at_9 = models.BooleanField() + state_at_10 = models.BooleanField() + state_at_11 = models.BooleanField() + state_at_12 = models.BooleanField() + state_at_13 = models.BooleanField() + state_at_14 = models.BooleanField() + state_at_15 = models.BooleanField() + state_at_16 = models.BooleanField() + state_at_17 = models.BooleanField() + state_at_18 = models.BooleanField() + state_at_19 = models.BooleanField() + state_at_20 = models.BooleanField() + state_at_21 = models.BooleanField() + state_at_22 = models.BooleanField() + state_at_23 = models.BooleanField() + class Meta: + db_table = 'schedule_day' + def __str__(self): + return self.name_schedule + +class Machine_Data(models.Model): name = models.CharField(max_length=100) namespace = models.CharField(max_length=100) - schedule_day = models.CharField(max_length=100) - schedule_hour = models.CharField(max_length=100) + schedule_week = models.ForeignKey(Schedule_Week_Data,null=True, blank=True, on_delete=models.SET_NULL) + schedule_day = models.ForeignKey(Schedule_Day_Data,null=True, blank=True, on_delete=models.SET_NULL) replicas = models.IntegerField() - - class Meta: - db_table = 'cloudmanager' \ No newline at end of file + db_table = 'machine' + \ No newline at end of file diff --git a/django_code/apps/cloudmanager/views.py b/django_code/apps/cloudmanager/views.py index da280b3..ac26e14 100644 --- a/django_code/apps/cloudmanager/views.py +++ b/django_code/apps/cloudmanager/views.py @@ -1,7 +1,7 @@ from django.http import HttpResponse # IMPORT AT THE TOP HERE: This is completely safe! -from apps.cloudmanager.models import CmmData +from apps.cloudmanager.models import Machine_Data,Schedule_Week_Data def coucou(request): # 1. Prepare the data inside the function diff --git a/django_code/apps/random_simpsons/migrations/0001_initial.py b/django_code/apps/random_simpsons/migrations/0001_initial.py new file mode 100644 index 0000000..30a8f06 --- /dev/null +++ b/django_code/apps/random_simpsons/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.30 on 2026-06-16 08:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='SimpsonsData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('season', models.IntegerField()), + ('episode', models.IntegerField()), + ('url', models.CharField(max_length=1000)), + ('seen', models.BooleanField()), + ], + options={ + 'db_table': 'episodes', + }, + ), + ] diff --git a/django_code/db.sqlite3 b/django_code/db.sqlite3 deleted file mode 100644 index 059f3e3..0000000 Binary files a/django_code/db.sqlite3 and /dev/null differ diff --git a/django_code/django_code/__pycache__/settings.cpython-312.pyc b/django_code/django_code/__pycache__/settings.cpython-312.pyc index 51ca3a1..a209ae3 100644 Binary files a/django_code/django_code/__pycache__/settings.cpython-312.pyc and b/django_code/django_code/__pycache__/settings.cpython-312.pyc differ diff --git a/django_code/django_code/__pycache__/urls.cpython-312.pyc b/django_code/django_code/__pycache__/urls.cpython-312.pyc index b3da020..7a87ae5 100644 Binary files a/django_code/django_code/__pycache__/urls.cpython-312.pyc and b/django_code/django_code/__pycache__/urls.cpython-312.pyc differ diff --git a/docker-compose.yml b/docker-compose.yml index 6a252cf..3cec3ed 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,7 @@ services: db: image: docker.io/library/postgres:latest restart: always + container_name: postgres volumes: - db:/var/lib/postgresql/ ports: