some updates
This commit is contained in:
+105
-24
@@ -48,6 +48,7 @@ from .forms import (
|
||||
CaseDetailForm,
|
||||
CaseForm,
|
||||
CaseResourceFormSet,
|
||||
CaseUpdateSeriesForm,
|
||||
CidQuestionAnswerForm,
|
||||
CidReportAnswerForm,
|
||||
CidReportAnswerMarkForm,
|
||||
@@ -197,14 +198,32 @@ class AtlasEditorRequiredMixin(object):
|
||||
@login_required
|
||||
@user_has_case_view_access
|
||||
def case_detail(request, pk):
|
||||
case = get_object_or_404(Case, pk=pk)
|
||||
|
||||
# if request.user not in atlas.author.all():
|
||||
# raise PermissionDenied
|
||||
# Prefetch all related objects needed for the template
|
||||
case = (
|
||||
Case.objects
|
||||
.select_related() # Add any FK fields if needed
|
||||
.prefetch_related(
|
||||
"series__examination",
|
||||
"series__plane",
|
||||
"series__contrast",
|
||||
"series__images",
|
||||
"series__findings__findings",
|
||||
"series__findings__conditions",
|
||||
"series__findings__structures",
|
||||
"subspecialty",
|
||||
"condition",
|
||||
"presentation",
|
||||
"pathological_process",
|
||||
#"differential",
|
||||
"caseresource_set",
|
||||
"author",
|
||||
"casecollection_set",
|
||||
)
|
||||
.get(pk=pk)
|
||||
)
|
||||
|
||||
can_edit = case.check_user_can_edit(request.user)
|
||||
|
||||
# logging.debug(atlas.subspecialty.first().name.all())
|
||||
return render(
|
||||
request,
|
||||
"atlas/case_detail.html",
|
||||
@@ -215,7 +234,6 @@ def case_detail(request, pk):
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
@user_is_author_or_atlas_series_checker_or_atlas_marker_or_open_access
|
||||
def series_thumbnail_fail(request, pk):
|
||||
@@ -1023,6 +1041,7 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
||||
|
||||
|
||||
# @login_required
|
||||
# CaseCreate
|
||||
class AtlasCreate(AtlasCreateBase, CreateView):
|
||||
def get_initial(self):
|
||||
if "pk" in self.kwargs:
|
||||
@@ -1041,6 +1060,7 @@ class AtlasCreate(AtlasCreateBase, CreateView):
|
||||
# return self.initial
|
||||
|
||||
|
||||
# CaseUpdate
|
||||
class AtlasUpdate(
|
||||
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView
|
||||
):
|
||||
@@ -1079,12 +1099,12 @@ class AtlasUpdate(
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(AtlasUpdate, self).get_context_data(**kwargs)
|
||||
if self.request.POST:
|
||||
context["series_formset"] = SeriesFormSet(
|
||||
self.request.POST,
|
||||
self.request.FILES,
|
||||
instance=self.object,
|
||||
form_kwargs={"user": self.request.user},
|
||||
)
|
||||
#context["series_formset"] = SeriesFormSet(
|
||||
# self.request.POST,
|
||||
# self.request.FILES,
|
||||
# instance=self.object,
|
||||
# form_kwargs={"user": self.request.user},
|
||||
#)
|
||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||
self.request.POST, self.request.FILES, instance=self.object
|
||||
)
|
||||
@@ -1094,13 +1114,13 @@ class AtlasUpdate(
|
||||
instance=self.object,
|
||||
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=self.object, form_kwargs={"user": self.request.user}
|
||||
)
|
||||
#context["series_formset"] = SeriesFormSet(
|
||||
# instance=self.object, form_kwargs={"user": self.request.user}
|
||||
#)
|
||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||
instance=self.object
|
||||
)
|
||||
@@ -1117,18 +1137,18 @@ class AtlasUpdate(
|
||||
form.instance.author.add(self.request.user.id)
|
||||
|
||||
context = self.get_context_data(form=form)
|
||||
series_formset = context["series_formset"]
|
||||
#series_formset = context["series_formset"]
|
||||
casedifferential_formset = context["casedifferential_formset"]
|
||||
caseresource_formset = context["caseresource_formset"]
|
||||
# logger.debug(formset.is_valid())
|
||||
if (
|
||||
series_formset.is_valid()
|
||||
and casedifferential_formset.is_valid()
|
||||
#series_formset.is_valid()
|
||||
casedifferential_formset.is_valid()
|
||||
and caseresource_formset.is_valid()
|
||||
):
|
||||
response = super().form_valid(form)
|
||||
series_formset.instance = self.object
|
||||
series_formset.save()
|
||||
#series_formset.instance = self.object
|
||||
#series_formset.save()
|
||||
casedifferential_formset.instance = self.object
|
||||
casedifferential_formset.save()
|
||||
caseresource_formset.instance = self.object
|
||||
@@ -1138,6 +1158,56 @@ class AtlasUpdate(
|
||||
else:
|
||||
return super().form_invalid(form)
|
||||
|
||||
class AtlasSeriesUpdate(
|
||||
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView
|
||||
):
|
||||
model = Case
|
||||
form_class = CaseUpdateSeriesForm
|
||||
template_name = "atlas/case_update_series.html"
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
kwargs.update({"user": self.request.user})
|
||||
return kwargs
|
||||
|
||||
def get_context_data(self, **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
|
||||
form_kwargs = {"user": self.request.user, "is_atlas_editor": is_atlas_editor}
|
||||
if self.request.POST:
|
||||
context["series_formset"] = SeriesFormSet(
|
||||
self.request.POST,
|
||||
self.request.FILES,
|
||||
instance=self.object,
|
||||
form_kwargs=form_kwargs,
|
||||
)
|
||||
context["series_formset"].full_clean()
|
||||
else:
|
||||
context["series_formset"] = SeriesFormSet(
|
||||
instance=self.object,
|
||||
form_kwargs=form_kwargs,
|
||||
)
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
context = self.get_context_data(form=form)
|
||||
series_formset = context["series_formset"]
|
||||
if series_formset.is_valid():
|
||||
series_formset.instance = self.object
|
||||
series_formset.save()
|
||||
return super().form_valid(form)
|
||||
else:
|
||||
return self.form_invalid(form)
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
qs = Case.objects.select_related().prefetch_related(
|
||||
"seriesdetail_set__series__modality",
|
||||
"seriesdetail_set__series__examination",
|
||||
"seriesdetail_set__series__plane",
|
||||
"seriesdetail_set__series__contrast",
|
||||
"seriesdetail_set__series__images",
|
||||
)
|
||||
return qs.get(pk=self.kwargs["pk"])
|
||||
|
||||
def add_collection_to_case_form(request, case_id):
|
||||
if request.method == "POST":
|
||||
@@ -1642,10 +1712,21 @@ def collection_viva(request, pk):
|
||||
# )
|
||||
#)
|
||||
|
||||
casedetails = CaseDetail.objects.filter(collection=collection).order_by(
|
||||
"sort_order"
|
||||
casedetails = (
|
||||
CaseDetail.objects
|
||||
.filter(collection=collection)
|
||||
.select_related("case")
|
||||
.order_by("sort_order")
|
||||
.prefetch_related(
|
||||
# Prefetch series and their images directly on the case
|
||||
"case__series",
|
||||
"case__series__modality",
|
||||
"case__series__examination",
|
||||
"case__series__plane",
|
||||
"case__series__contrast",
|
||||
"case__series__images",
|
||||
)
|
||||
)
|
||||
logger.debug(casedetails)
|
||||
|
||||
|
||||
return render(
|
||||
|
||||
Reference in New Issue
Block a user