datetime filed for weekpreference
This commit is contained in:
@@ -19,14 +19,15 @@ from ..custom.colortag import course_color
|
|||||||
from ..custom.student_permissions import has_edit_permission, has_week_add_permission
|
from ..custom.student_permissions import has_edit_permission, has_week_add_permission
|
||||||
from ..actions.exportweek import export_selected
|
from ..actions.exportweek import export_selected
|
||||||
|
|
||||||
from datetime import date
|
from datetime import date, datetime
|
||||||
from typing import Dict, List, Any
|
from typing import Dict, List, Tuple, Any
|
||||||
|
|
||||||
class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin):
|
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", )
|
list_filter = ("week", "student__course", )
|
||||||
search_fields = ("student__surname","student__name", )
|
search_fields = ("student__surname","student__name", )
|
||||||
actions = ("export", )
|
actions = ("export", )
|
||||||
|
readonly_fields = ("inserted", )
|
||||||
|
|
||||||
@admin.action(description="Export Selected Preferences")
|
@admin.action(description="Export Selected Preferences")
|
||||||
def export(self, request: HttpRequest, queryset: QuerySet[WeekPreference]) -> HttpResponse | None:
|
def export(self, request: HttpRequest, queryset: QuerySet[WeekPreference]) -> HttpResponse | None:
|
||||||
@@ -47,6 +48,12 @@ class WeekPreferenceAdmin(nested_admin.NestedPolymorphicModelAdmin):
|
|||||||
return SafeText("")
|
return SafeText("")
|
||||||
return course_color(obj.student.course.color)
|
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
|
# If a user is registered as student hide filters
|
||||||
def get_list_filter(self, request: HttpRequest) -> List[str]:
|
def get_list_filter(self, request: HttpRequest) -> List[str]:
|
||||||
list_filter = super().get_list_filter(request)
|
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:
|
def get_form(self, request: HttpRequest, obj: WeekPreference | None = None, **kwargs: Dict[str, Any]) -> Form:
|
||||||
form: Form = super().get_form(request, obj, **kwargs)
|
form: Form = super().get_form(request, obj, **kwargs)
|
||||||
today: date = date.today()
|
current_week = date.today().isocalendar().week
|
||||||
current_week = today.isocalendar().week
|
|
||||||
# If form contains the week field
|
# If form contains the week field
|
||||||
if "week" in form.base_fields:
|
if "week" in form.base_fields:
|
||||||
# Set default value as current week
|
# Set default value as current week
|
||||||
form.base_fields["week"].initial = 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 student is current user making request
|
||||||
if hasattr(request.user, "student"):
|
if hasattr(request.user, "student"):
|
||||||
student: Student = 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"].initial = student
|
||||||
form.base_fields["student"].disabled = True
|
form.base_fields["student"].disabled = True
|
||||||
form.base_fields["week"].disabled = True # student cannot change week
|
form.base_fields["week"].disabled = True # student cannot change week
|
||||||
form.base_fields["inserted"].disabled = True # student cannot change insertion date
|
|
||||||
return form
|
return form
|
||||||
|
|
||||||
# If user is a student deny edit permission for week past the current one
|
# If user is a student deny edit permission for week past the current one
|
||||||
|
|||||||
@@ -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)),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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)),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from datetime import date
|
from datetime import date, datetime
|
||||||
|
|
||||||
from ..models.students import Student
|
from ..models.students import Student
|
||||||
|
|
||||||
@@ -24,9 +24,9 @@ class WeekPreference(models.Model):
|
|||||||
verbose_name="Student Selection"
|
verbose_name="Student Selection"
|
||||||
)
|
)
|
||||||
|
|
||||||
inserted = models.DateField(
|
inserted = models.DateTimeField(
|
||||||
null=False,
|
null=False,
|
||||||
default=date.today()
|
default=datetime.now(),
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user