pre series form update

This commit is contained in:
Ross
2022-07-24 11:11:58 +01:00
parent fde658c71c
commit 8f5c878bab
11 changed files with 286 additions and 91 deletions
+29
View File
@@ -16,6 +16,7 @@ from django.shortcuts import get_object_or_404
from atlas.models import (
Case,
CaseCollection,
CaseDetail,
CidReportAnswer,
Differential,
Finding,
@@ -39,6 +40,7 @@ from tinymce.widgets import TinyMCE
from dal import autocomplete
import logging
class ConditionForm(ModelForm):
class Meta:
@@ -240,9 +242,20 @@ class CaseForm(ModelForm):
js = ["jsi18n.js", "tesseract.min.js"]
def __init__(self, *args, **kwargs):
logging.info("LOG")
logging.debug(kwargs)
self.user = kwargs.pop(
"user"
) # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
# This is populated if we create the case from an exam/collection
self.collection = None
if "exams" in kwargs["initial"]:
collections = kwargs["initial"].pop("exams")
logging.debug(collections)
self.collection = get_object_or_404(CaseCollection, pk=collections[0])
if kwargs.get("instance"):
# We get the 'initial' keyword argument or initialize it
# as a dict if it didn't exist.
@@ -251,6 +264,7 @@ class CaseForm(ModelForm):
# a list of primary key for the selected data.
# initial["exams"] = [t.pk for t in kwargs["instance"].exams.all()]
ModelForm.__init__(self, *args, **kwargs)
super(CaseForm, self).__init__(*args, **kwargs)
@@ -307,6 +321,9 @@ class CaseForm(ModelForm):
# Get the unsaved Case instance
instance = ModelForm.save(self, False)
# Prepare a 'save_m2m' method for the form,
old_save_m2m = self.save_m2m
@@ -324,6 +341,18 @@ class CaseForm(ModelForm):
instance.save()
self.save_m2m()
logging.debug(f"{self.collection=}")
if self.collection is not None:
logging.debug(f"{self.collection=}")
case_no = self.collection.cases.count() + 1
logging.debug(f"{case_no=}")
logging.debug(f"{instance=}")
# Create through model
#cd = CaseDetail(case=instance, collection=exam, sort_order=case_no)
self.collection.cases.add(instance, through_defaults={"sort_order": case_no})
return instance