import nested_admin from django import forms from django.db import models from django.forms import TextInput, Textarea from django.http import HttpRequest from ..models.students import Student from ..models.missions import Training from ..models.weekpref import WeekPreference from datetime import date class TrainingForm(forms.ModelForm): model=Training class TrainingInLIne(nested_admin.NestedTabularInline): model = Training form = TrainingForm extra = 0 fk_name = 'weekpref' verbose_name_plural = "Training Missions" max_num = 7 formfield_overrides = { models.CharField: {'widget': TextInput(attrs={'size':'20'})}, models.TextField: {'widget': Textarea(attrs={'rows':4, 'cols':35})}, } # If user is a student deny edit permission for week past the current one def has_change_permission(self, request: HttpRequest, obj: WeekPreference | None = None) -> bool: if hasattr(request.user, 'student') and obj: student: Student = request.user.student current_week: int = date.today().isocalendar().week if current_week > obj.week or not student.active: return False return True def has_delete_permission(self, request: HttpRequest, obj: WeekPreference | None = None) -> bool: return self.has_change_permission(request=request, obj=obj) def has_add_permission(self, request: HttpRequest, obj: WeekPreference | None = None) -> bool: return self.has_change_permission(request=request, obj=obj)