week preference insertion date

This commit is contained in:
2025-12-10 11:26:40 +01:00
parent 46e6749fd5
commit 99d24583d6
3 changed files with 44 additions and 6 deletions

View File

@@ -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

View File

@@ -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'),
),
]

View File

@@ -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]}."