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):
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)
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:
@@ -952,12 +945,22 @@ class CaseUpdateSeriesForm(forms.ModelForm):
model = Case
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(
Case,
SeriesDetail,
form=CaseSeriesForm,
formset=BaseSeriesFormSet,
extra=1,
can_delete=True,
)
+23 -9
View File
@@ -4,6 +4,7 @@ from typing import Any
from dal import autocomplete
from django.db.models.base import Model as Model
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 import forms
from django.utils import timezone
@@ -974,11 +975,11 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
def get_context_data(self, **kwargs):
context = super(AtlasCreateBase, self).get_context_data(**kwargs)
if self.request.POST:
context["series_formset"] = SeriesFormSet(
self.request.POST,
self.request.FILES,
form_kwargs={"user": self.request.user},
)
#context["series_formset"] = SeriesFormSet(
# self.request.POST,
# self.request.FILES,
# form_kwargs={"user": self.request.user},
#)
context["casedifferential_formset"] = CaseDifferentialFormSet(
self.request.POST, self.request.FILES
)
@@ -987,14 +988,14 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
self.request.FILES,
form_kwargs={"user": self.request.user},
)
context["series_formset"].full_clean()
#context["series_formset"].full_clean()
context["casedifferential_formset"].full_clean()
context["caseresource_formset"].full_clean()
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(
form_kwargs={"user": self.request.user}
)
#context["series_formset"] = SeriesFormSet(
# form_kwargs={"user": self.request.user}
#)
context["casedifferential_formset"] = CaseDifferentialFormSet()
context["caseresource_formset"] = CaseResourceFormSet(
form_kwargs={"user": self.request.user}
@@ -1174,16 +1175,29 @@ class AtlasSeriesUpdate(
context = super().get_context_data(**kwargs)
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}
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:
context["series_formset"] = SeriesFormSet(
self.request.POST,
self.request.FILES,
queryset=queryset,
instance=self.object,
form_kwargs=form_kwargs,
)
context["series_formset"].full_clean()
else:
context["series_formset"] = SeriesFormSet(
queryset=queryset,
instance=self.object,
form_kwargs=form_kwargs,
)