diff --git a/training/forms.py b/training/forms.py
index 3859e0ec..41869833 100644
--- a/training/forms.py
+++ b/training/forms.py
@@ -16,7 +16,8 @@ def validate_user_can_train_in(supervisor, item):
class QualificationForm(forms.ModelForm):
related_models = {
- 'item': models.TrainingItem
+ 'item': models.TrainingItem,
+ 'supervisor': models.Trainee
}
class Meta:
@@ -27,29 +28,34 @@ class QualificationForm(forms.ModelForm):
cleaned_data = super().clean()
item = cleaned_data.get('item')
trainee = cleaned_data.get('trainee')
+ supervisor = self.cleaned_data.get('supervisor')
+ validate_user_can_train_in(supervisor, item)
if not item.user_has_requirements(trainee):
self.add_error('item', 'Missing prerequisites')
def clean_date(self):
- date = self.cleaned_data['date']
+ date = self.cleaned_data.get('date')
if date > date.today():
raise forms.ValidationError('Qualification date may not be in the future')
return date
def clean_supervisor(self):
- supervisor = self.cleaned_data['supervisor']
- item = self.cleaned_data['item']
- if supervisor.pk == self.cleaned_data['trainee'].pk:
+ supervisor = self.cleaned_data.get('supervisor')
+ if supervisor.pk == self.cleaned_data.get('trainee').pk:
raise forms.ValidationError('One may not supervise oneself...')
- validate_user_can_train_in(supervisor, item)
return supervisor
def __init__(self, *args, **kwargs):
- pk = kwargs.pop('pk', None)
+ super().__init__(*args, **kwargs)
+ self.fields['date'].widget.format = '%Y-%m-%d'
+
+
+class AddQualificationForm(QualificationForm):
+ def __init__(self, *args, **kwargs):
+ kwargs.pop('pk', None)
super().__init__(*args, **kwargs)
if pk:
self.fields['trainee'].initial = Profile.objects.get(pk=pk)
- self.fields['date'].widget.format = '%Y-%m-%d'
class RequirementForm(forms.ModelForm):
diff --git a/training/templates/partials/item_field.html b/training/templates/partials/item_field.html
index 7e0a5a79..618f8524 100644
--- a/training/templates/partials/item_field.html
+++ b/training/templates/partials/item_field.html
@@ -2,7 +2,7 @@
diff --git a/training/views.py b/training/views.py
index 8d1d218b..5d431c7c 100644
--- a/training/views.py
+++ b/training/views.py
@@ -103,7 +103,7 @@ class TraineeList(generic.ListView):
class AddQualification(generic.CreateView, ModalURLMixin):
template_name = "edit_training_record.html"
model = models.TrainingItemQualification
- form_class = forms.QualificationForm
+ form_class = forms.AddQualificationForm
def form_valid(self, form, *args, **kwargs):
reversion.add_to_revision(form.cleaned_data['trainee'])