From 99d24583d680e30eeea7d2128c05309dc4c4db7d Mon Sep 17 00:00:00 2001 From: Emanuele Date: Wed, 10 Dec 2025 11:26:40 +0100 Subject: [PATCH] week preference insertion date --- cntmanage/flightslot/admins/weekpref_adm.py | 16 ++++++---- ...serted_alter_availability_week_and_more.py | 29 +++++++++++++++++++ cntmanage/flightslot/models/weekpref.py | 5 ++++ 3 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 cntmanage/flightslot/migrations/0030_weekpreference_inserted_alter_availability_week_and_more.py diff --git a/cntmanage/flightslot/admins/weekpref_adm.py b/cntmanage/flightslot/admins/weekpref_adm.py index 38ca8ce..9327deb 100644 --- a/cntmanage/flightslot/admins/weekpref_adm.py +++ b/cntmanage/flightslot/admins/weekpref_adm.py @@ -23,7 +23,7 @@ from datetime import date from typing import Dict, List, Any class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin): - list_display = ("week", "student__surname", "student__name", "student__course", "course_color", "student_brief_mix", ) + list_display = ("week", "student__surname", "student__name", "student__course", "course_color", "student_brief_mix", "inserted") list_filter = ("week", "student__course", ) search_fields = ("student__surname","student__name", ) actions = ("export", ) @@ -68,9 +68,9 @@ class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin): return (TrainingInLIne(self.model, self.admin_site), ) else: return ( - TrainingInLIne(self.model, self.admin_site), - HourBuildingInLine(self.model, self.admin_site), - ) + TrainingInLIne(self.model, self.admin_site), + HourBuildingInLine(self.model, self.admin_site), + ) # If a user is registered as student do not show actions def get_actions(self, request: HttpRequest) -> Dict[str, Any]: @@ -89,13 +89,16 @@ class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin): def get_form(self, request: HttpRequest, obj: WeekPreference | None = None, **kwargs: Dict[str, Any]) -> Form: form: Form = super().get_form(request, obj, **kwargs) - current_week = date.today().isocalendar().week - + today: date = date.today() + current_week = today.isocalendar().week # If form contains the week field if "week" in form.base_fields: # Set default value as current week form.base_fields["week"].initial = current_week + if "inserted" in form.base_fields: + form.base_fields["inserted"].initial = today + # If student is current user making request if hasattr(request.user, "student"): student: Student = request.user.student @@ -103,6 +106,7 @@ class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin): form.base_fields["student"].initial = student form.base_fields["student"].disabled = True form.base_fields["week"].disabled = True # student cannot change week + form.base_fields["inserted"].disabled = True # student cannot change insertion date return form # If user is a student deny edit permission for week past the current one diff --git a/cntmanage/flightslot/migrations/0030_weekpreference_inserted_alter_availability_week_and_more.py b/cntmanage/flightslot/migrations/0030_weekpreference_inserted_alter_availability_week_and_more.py new file mode 100644 index 0000000..3e10674 --- /dev/null +++ b/cntmanage/flightslot/migrations/0030_weekpreference_inserted_alter_availability_week_and_more.py @@ -0,0 +1,29 @@ +# Generated by Django 5.2.8 on 2025-12-10 10:18 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('flightslot', '0029_alter_course_ctype'), + ] + + operations = [ + migrations.AddField( + model_name='weekpreference', + name='inserted', + field=models.DateField(default=datetime.date(2025, 12, 10)), + ), + migrations.AlterField( + model_name='availability', + name='week', + field=models.PositiveSmallIntegerField(auto_created=True, db_default=50, db_index=True, verbose_name='Week Number'), + ), + migrations.AlterField( + model_name='weekpreference', + name='week', + field=models.PositiveSmallIntegerField(auto_created=True, db_default=50, db_index=True, verbose_name='Week Number'), + ), + ] diff --git a/cntmanage/flightslot/models/weekpref.py b/cntmanage/flightslot/models/weekpref.py index 1d9d7d6..240c598 100644 --- a/cntmanage/flightslot/models/weekpref.py +++ b/cntmanage/flightslot/models/weekpref.py @@ -24,5 +24,10 @@ class WeekPreference(models.Model): verbose_name="Student Selection" ) + inserted = models.DateField( + null=False, + default=date.today() + ) + def __str__(self): return f"Week {self.week} - {self.student.surname} {self.student.name[0]}."