datetime filed for weekpreference

This commit is contained in:
2025-12-10 12:08:10 +01:00
parent d79f30e96c
commit 6a356e6ea9
4 changed files with 52 additions and 12 deletions

View File

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