From 6a356e6ea94ce28b5f57aef3cab35cb658cc4a2f Mon Sep 17 00:00:00 2001 From: Emanuele Date: Wed, 10 Dec 2025 12:08:10 +0100 Subject: [PATCH] datetime filed for weekpreference --- cntmanage/flightslot/admins/weekpref_adm.py | 20 ++++++++++--------- .../0032_alter_weekpreference_inserted.py | 19 ++++++++++++++++++ .../0033_alter_weekpreference_inserted.py | 19 ++++++++++++++++++ cntmanage/flightslot/models/weekpref.py | 6 +++--- 4 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 cntmanage/flightslot/migrations/0032_alter_weekpreference_inserted.py create mode 100644 cntmanage/flightslot/migrations/0033_alter_weekpreference_inserted.py diff --git a/cntmanage/flightslot/admins/weekpref_adm.py b/cntmanage/flightslot/admins/weekpref_adm.py index 9327deb..65668a7 100644 --- a/cntmanage/flightslot/admins/weekpref_adm.py +++ b/cntmanage/flightslot/admins/weekpref_adm.py @@ -19,14 +19,15 @@ from ..custom.colortag import course_color from ..custom.student_permissions import has_edit_permission, has_week_add_permission from ..actions.exportweek import export_selected -from datetime import date -from typing import Dict, List, Any +from datetime import date, datetime +from typing import Dict, List, Tuple, Any class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin): - list_display = ("week", "student__surname", "student__name", "student__course", "course_color", "student_brief_mix", "inserted") + #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", ) + readonly_fields = ("inserted", ) @admin.action(description="Export Selected Preferences") def export(self, request: HttpRequest, queryset: QuerySet[WeekPreference]) -> HttpResponse | None: @@ -47,6 +48,12 @@ class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin): return SafeText("") return course_color(obj.student.course.color) + # Hide brief mix count and inserted fields for students + def get_list_display(self, request: HttpRequest) -> Tuple: + if hasattr(request.user, "student"): + return ("week", "student__surname", "student__name", "student__course", "course_color", ) + return ("week", "student__surname", "student__name", "student__course", "course_color", "student_brief_mix", "inserted") + # If a user is registered as student hide filters def get_list_filter(self, request: HttpRequest) -> List[str]: list_filter = super().get_list_filter(request) @@ -89,16 +96,12 @@ 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) - today: date = date.today() - current_week = today.isocalendar().week + current_week = date.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 @@ -106,7 +109,6 @@ 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/0032_alter_weekpreference_inserted.py b/cntmanage/flightslot/migrations/0032_alter_weekpreference_inserted.py new file mode 100644 index 0000000..edd016f --- /dev/null +++ b/cntmanage/flightslot/migrations/0032_alter_weekpreference_inserted.py @@ -0,0 +1,19 @@ +# Generated by Django 5.2.8 on 2025-12-10 10:47 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('flightslot', '0031_student_mail_sent_alter_student_phone'), + ] + + operations = [ + migrations.AlterField( + model_name='weekpreference', + name='inserted', + field=models.DateTimeField(default=datetime.datetime(2025, 12, 10, 10, 47, 2, 305637)), + ), + ] diff --git a/cntmanage/flightslot/migrations/0033_alter_weekpreference_inserted.py b/cntmanage/flightslot/migrations/0033_alter_weekpreference_inserted.py new file mode 100644 index 0000000..f934c70 --- /dev/null +++ b/cntmanage/flightslot/migrations/0033_alter_weekpreference_inserted.py @@ -0,0 +1,19 @@ +# Generated by Django 5.2.8 on 2025-12-10 11:02 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('flightslot', '0032_alter_weekpreference_inserted'), + ] + + operations = [ + migrations.AlterField( + model_name='weekpreference', + name='inserted', + field=models.DateTimeField(default=datetime.datetime(2025, 12, 10, 11, 2, 58, 110972)), + ), + ] diff --git a/cntmanage/flightslot/models/weekpref.py b/cntmanage/flightslot/models/weekpref.py index 240c598..10afe00 100644 --- a/cntmanage/flightslot/models/weekpref.py +++ b/cntmanage/flightslot/models/weekpref.py @@ -1,5 +1,5 @@ from django.db import models -from datetime import date +from datetime import date, datetime from ..models.students import Student @@ -24,9 +24,9 @@ class WeekPreference(models.Model): verbose_name="Student Selection" ) - inserted = models.DateField( + inserted = models.DateTimeField( null=False, - default=date.today() + default=datetime.now(), ) def __str__(self):