FEAT(T): Add ability to log items at various depths during a session

Also fixes inability to search by reference number
This commit is contained in:
2022-03-01 18:36:17 +00:00
parent 7d785f4f1b
commit dedb8d81fe
3 changed files with 27 additions and 24 deletions

View File

@@ -219,18 +219,20 @@ class SessionLog(generic.FormView):
success_url = reverse_lazy('trainee_list')
def form_valid(self, form, *args, **kwargs):
for trainee in form.cleaned_data.get('trainees'):
for item in form.cleaned_data.get('items'):
try:
with transaction.atomic():
models.TrainingItemQualification.objects.create(trainee=trainee, item=item, supervisor=form.cleaned_data.get('supervisor'), depth=form.cleaned_data.get('depth'), notes=form.cleaned_data.get('notes'), date=form.cleaned_data.get('date'))
reversion.add_to_revision(trainee)
except IntegrityError:
pass # There was an attempt to create a duplicate qualification, ignore it
for trainee in form.cleaned_data.get('trainees', []):
for depth in models.TrainingItemQualification.CHOICES:
for item in form.cleaned_data.get(f'items_{depth[0]}', []):
try:
with transaction.atomic():
models.TrainingItemQualification.objects.create(trainee=trainee, item=item, supervisor=form.cleaned_data.get('supervisor'), depth=depth[0], notes=form.cleaned_data.get('notes'), date=form.cleaned_data.get('date'))
reversion.add_to_revision(trainee)
except IntegrityError:
pass # There was an attempt to create a duplicate qualification, ignore it
return super().form_valid(form, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["depths"] = models.TrainingItemQualification.CHOICES
context["page_title"] = "Log Training Session"
get_related(context['form'], context)
return context