This commit is contained in:
Ross
2022-03-29 22:04:03 +01:00
parent 8b34b679ba
commit 1a4d770a93
11 changed files with 341 additions and 22 deletions
+64 -9
View File
@@ -13,6 +13,7 @@ from django.forms import inlineformset_factory
from atlas.models import (
Case,
CaseCollection,
Differential,
Finding,
Series,
@@ -50,6 +51,26 @@ class ConditionForm(ModelForm):
),
}
class CaseCollectionForm(ModelForm):
class Meta:
model = CaseCollection
exclude = ["cases", "author"]
def __init__(self, *args, **kwargs):
self.user = kwargs.pop(
"user"
) # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
if kwargs.get("instance"):
# We get the 'initial' keyword argument or initialize it
# as a dict if it didn't exist.
initial = kwargs.setdefault("initial", {})
# The widget for a ModelMultipleChoiceField expects
# 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(CaseCollectionForm, self).__init__(*args, **kwargs)
class FindingForm(ModelForm):
class Meta:
@@ -153,7 +174,7 @@ class SeriesForm(ModelForm):
else:
case_queryset = Case.objects.filter(
author__id=self.user.id
) #| Case.objects.filter(open_access=True)
) # | Case.objects.filter(open_access=True)
self.fields["case"] = ModelMultipleChoiceField(
required=False,
@@ -226,7 +247,6 @@ class CaseForm(ModelForm):
ModelForm.__init__(self, *args, **kwargs)
super(CaseForm, self).__init__(*args, **kwargs)
print(1)
# self.fields["series"].queryset =
@@ -313,25 +333,60 @@ CaseDifferentialFormSet = inlineformset_factory(
},
)
class BaseSeriesFormSet(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
super(BaseSeriesFormSet, self).__init__(*args, **kwargs)
def __init__(self, *args, **kwargs):
self.queryset = Series.case.through.objects.filter(series__author__id=99)
super(BaseSeriesFormSet, self).__init__(*args, **kwargs)
#for form in self.forms:
# form.fields['series'].queryset = series_queryset
self.queryset = Series.case.through.objects.filter(series__author__id=99)
# for form in self.forms:
# form.fields['series'].queryset = series_queryset
class CaseSeriesForm(ModelForm):
def __init__(self, *args, user, **kwargs):
super(CaseSeriesForm, self).__init__(*args, **kwargs)
self.fields["series"] = ModelChoiceField(
required=False,
queryset=Series.objects.filter(author__id=user.id),
# widget=Select(verbose_name="Series", is_stacked=False),
)
class CaseCollectionCaseForm(ModelForm):
def __init__(self, *args, user, **kwargs):
super(CaseCollectionCaseForm, self).__init__(*args, **kwargs)
self.fields["case"] = ModelChoiceField(
required=False,
queryset=Case.objects.filter(author__id=user.id),
# widget=Select(verbose_name="Series", is_stacked=False),
)
SeriesFormSet = inlineformset_factory(
Case,
Series.case.through,
formset=BaseSeriesFormSet,
form=CaseSeriesForm,
# formset=BaseSeriesFormSet,
exclude=[],
can_delete=True,
extra=1,
extra=0,
max_num=10,
)
CaseCollectionCaseFormSet = inlineformset_factory(
CaseCollection,
Case.casecollection_set.through,
form=CaseCollectionCaseForm,
# formset=BaseSeriesFormSet,
exclude=[],
can_delete=True,
extra=0,
max_num=50,
)
SeriesImageFormSet = inlineformset_factory(
Series,