41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
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.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:
|
|
current_week: int = date.today().isocalendar().week
|
|
if current_week > obj.week:
|
|
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)
|