This commit is contained in:
Ross
2025-07-07 12:09:17 +01:00
parent c8939cf385
commit 0cdccbcdfb
2 changed files with 34 additions and 17 deletions
+11 -8
View File
@@ -922,15 +922,8 @@ class PriorCaseForm(Form):
# ) # )
class CaseSeriesForm(forms.ModelForm): class CaseSeriesForm(forms.ModelForm):
def __init__(self, *args, user=None, is_atlas_editor=False, **kwargs): def __init__(self, *args, queryset, user=None, is_atlas_editor=False, **kwargs):
super().__init__(*args, **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 self.fields["series"].queryset = queryset
class Meta: class Meta:
@@ -952,12 +945,22 @@ class CaseUpdateSeriesForm(forms.ModelForm):
model = Case model = Case
fields = [] # No fields, just for compatibility with UpdateView fields = [] # No fields, just for compatibility with UpdateView
class BaseSeriesFormSet(BaseInlineFormSet):
def __init__(self, *args, queryset=None, **kwargs):
self.series_queryset = queryset
super().__init__(*args, **kwargs)
def get_form_kwargs(self, index):
kwargs = super().get_form_kwargs(index)
kwargs['queryset'] = self.series_queryset
return kwargs
SeriesFormSet = inlineformset_factory( SeriesFormSet = inlineformset_factory(
Case, Case,
SeriesDetail, SeriesDetail,
form=CaseSeriesForm, form=CaseSeriesForm,
formset=BaseSeriesFormSet,
extra=1, extra=1,
can_delete=True, can_delete=True,
) )
+23 -9
View File
@@ -4,6 +4,7 @@ from typing import Any
from dal import autocomplete from dal import autocomplete
from django.db.models.base import Model as Model from django.db.models.base import Model as Model
from django.db.models.query import QuerySet from django.db.models.query import QuerySet
from django.db.models import Prefetch
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from django import forms from django import forms
from django.utils import timezone from django.utils import timezone
@@ -974,11 +975,11 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(AtlasCreateBase, self).get_context_data(**kwargs) context = super(AtlasCreateBase, self).get_context_data(**kwargs)
if self.request.POST: if self.request.POST:
context["series_formset"] = SeriesFormSet( #context["series_formset"] = SeriesFormSet(
self.request.POST, # self.request.POST,
self.request.FILES, # self.request.FILES,
form_kwargs={"user": self.request.user}, # form_kwargs={"user": self.request.user},
) #)
context["casedifferential_formset"] = CaseDifferentialFormSet( context["casedifferential_formset"] = CaseDifferentialFormSet(
self.request.POST, self.request.FILES self.request.POST, self.request.FILES
) )
@@ -987,14 +988,14 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
self.request.FILES, self.request.FILES,
form_kwargs={"user": self.request.user}, form_kwargs={"user": self.request.user},
) )
context["series_formset"].full_clean() #context["series_formset"].full_clean()
context["casedifferential_formset"].full_clean() context["casedifferential_formset"].full_clean()
context["caseresource_formset"].full_clean() context["caseresource_formset"].full_clean()
else: else:
# context["series_formset"] = SeriesFormSet(instance=Case.objects.filter(author__id=self.request.user.id), queryset=Series.objects.filter(author__id=self.request.user.id)) # context["series_formset"] = SeriesFormSet(instance=Case.objects.filter(author__id=self.request.user.id), queryset=Series.objects.filter(author__id=self.request.user.id))
context["series_formset"] = SeriesFormSet( #context["series_formset"] = SeriesFormSet(
form_kwargs={"user": self.request.user} # form_kwargs={"user": self.request.user}
) #)
context["casedifferential_formset"] = CaseDifferentialFormSet() context["casedifferential_formset"] = CaseDifferentialFormSet()
context["caseresource_formset"] = CaseResourceFormSet( context["caseresource_formset"] = CaseResourceFormSet(
form_kwargs={"user": self.request.user} form_kwargs={"user": self.request.user}
@@ -1174,16 +1175,29 @@ class AtlasSeriesUpdate(
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
is_atlas_editor = self.request.user.groups.filter(name="atlas_editor").exists() or self.request.user.is_superuser is_atlas_editor = self.request.user.groups.filter(name="atlas_editor").exists() or self.request.user.is_superuser
form_kwargs = {"user": self.request.user, "is_atlas_editor": is_atlas_editor} form_kwargs = {"user": self.request.user, "is_atlas_editor": is_atlas_editor}
if not is_atlas_editor:
queryset = Series.objects.filter(author__id=self.request.user.id)
else:
queryset = Series.objects.all()
queryset = queryset.select_related("modality").prefetch_related(
"examination", "plane", "contrast",
Prefetch("images", queryset=SeriesImage.objects.filter(removed=False).order_by("position"))
)
if self.request.POST: if self.request.POST:
context["series_formset"] = SeriesFormSet( context["series_formset"] = SeriesFormSet(
self.request.POST, self.request.POST,
self.request.FILES, self.request.FILES,
queryset=queryset,
instance=self.object, instance=self.object,
form_kwargs=form_kwargs, form_kwargs=form_kwargs,
) )
context["series_formset"].full_clean() context["series_formset"].full_clean()
else: else:
context["series_formset"] = SeriesFormSet( context["series_formset"] = SeriesFormSet(
queryset=queryset,
instance=self.object, instance=self.object,
form_kwargs=form_kwargs, form_kwargs=form_kwargs,
) )