some updates

This commit is contained in:
Ross
2025-07-07 11:41:44 +01:00
parent f3b6f8ef59
commit d7499e9166
9 changed files with 283 additions and 60 deletions
+99 -32
View File
@@ -32,6 +32,7 @@ from atlas.models import (
Resource,
SelfReview,
Series,
SeriesDetail,
SeriesImage,
SeriesFinding,
Condition,
@@ -296,6 +297,31 @@ class SeriesForm(ModelForm):
}
#def save(self, commit=True):
# # Get the unsaved Case instance
# instance = ModelForm.save(self, False)
# # Prepare a 'save_m2m' method for the form,
# old_save_m2m = self.save_m2m
# def save_m2m():
# old_save_m2m()
# # instance.exams.clear()
# # for exam in self.cleaned_data["exams"]:
# # # We need the id here
# # instance.exams.add(exam.pk)
# self.save_m2m = save_m2m
# # Do we need to save all changes now?
# # if commit:
# instance.save()
# self.save_m2m()
# return instance
class CaseForm(ModelForm):
class Media:
@@ -523,28 +549,28 @@ class CaseResourceForm(ModelForm):
self.fields["pre_review"] = BooleanField(required=False)
class CaseSeriesForm(ModelForm):
def __init__(self, *args, user, **kwargs):
super(CaseSeriesForm, self).__init__(*args, **kwargs)
if not user.groups.filter(name="atlas_editor").exists():
queryset = Series.objects.filter(author__id=user.id)
else:
queryset = Series.objects.all()
# Optimize the queryset for the ModelChoiceField
queryset = queryset.select_related(
"modality"
).prefetch_related(
"examination", "plane", "contrast", "images"
)
self.fields["series"] = ModelChoiceField(
required=False,
queryset=queryset,
# widget=Select(verbose_name="Series", is_stacked=False),
)
#class CaseSeriesForm(ModelForm):
#
# def __init__(self, *args, user, **kwargs):
# super(CaseSeriesForm, self).__init__(*args, **kwargs)
#
# if not user.groups.filter(name="atlas_editor").exists():
# queryset = Series.objects.filter(author__id=user.id)
# else:
# queryset = Series.objects.all()
#
# # Optimize the queryset for the ModelChoiceField
# queryset = queryset.select_related(
# "modality"
# ).prefetch_related(
# "examination", "plane", "contrast", "images"
# )
#
# self.fields["series"] = ModelChoiceField(
# required=False,
# queryset=queryset,
# # widget=Select(verbose_name="Series", is_stacked=False),
# )
@@ -561,15 +587,15 @@ class CaseCollectionCaseForm(ModelForm):
)
SeriesFormSet = inlineformset_factory(
Case,
Series.case.through,
form=CaseSeriesForm,
exclude=[],
can_delete=True,
extra=0,
max_num=10,
)
#SeriesFormSet = inlineformset_factory(
# Case,
# Series.case.through,
# form=CaseSeriesForm,
# exclude=[],
# can_delete=True,
# extra=0,
# max_num=10,
#)
CaseCollectionCaseFormSet = inlineformset_factory(
CaseCollection,
@@ -893,4 +919,45 @@ class PriorCaseForm(Form):
# self.fields["case"] = ChoiceField(
# required=False,
# # widget=Select(verbose_name="Series", is_stacked=False),
# )
# )
class CaseSeriesForm(forms.ModelForm):
def __init__(self, *args, user=None, is_atlas_editor=False, **kwargs):
super().__init__(*args, **kwargs)
if not is_atlas_editor:
queryset = Series.objects.filter(author__id=user.id)
else:
queryset = Series.objects.all()
queryset = queryset.select_related("modality").prefetch_related(
"examination", "plane", "contrast", "images"
)
self.fields["series"].queryset = queryset
class Meta:
model = SeriesDetail # through model for Case.series
fields = ["series", "sort_order", "feedback"]
class CaseUpdateSeriesForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user")
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = "id-case-form"
self.helper.form_class = "case-form"
self.helper.form_method = "post"
self.helper.form_action = "submit"
self.helper.form_tag = False
self.helper.layout = Layout()
class Meta:
model = Case
fields = [] # No fields, just for compatibility with UpdateView
SeriesFormSet = inlineformset_factory(
Case,
SeriesDetail,
form=CaseSeriesForm,
extra=1,
can_delete=True,
)