.
This commit is contained in:
+11
-8
@@ -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
@@ -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,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user