.
This commit is contained in:
+151
-9
@@ -27,6 +27,8 @@ from django.http import Http404, JsonResponse
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
|
||||
from .forms import (
|
||||
CaseCollectionCaseFormSet,
|
||||
CaseCollectionForm,
|
||||
CaseForm,
|
||||
ConditionForm,
|
||||
FindingForm,
|
||||
@@ -349,6 +351,60 @@ def case_clone(request, pk):
|
||||
return render(request, "atlas/case_form.html", context)
|
||||
|
||||
|
||||
class CaseCollectionCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
model = CaseCollection
|
||||
form_class = CaseCollectionForm
|
||||
|
||||
def get_initial(self):
|
||||
# print(self.request)
|
||||
if "pk" in self.kwargs:
|
||||
initial = super(CaseCollectionCreate, self).get_initial()
|
||||
# case = get_object_or_404(Case, pk=self.kwargs["pk"])
|
||||
|
||||
# initial["case"] = case.id
|
||||
|
||||
return initial
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super(CaseCollectionCreate, self).get_form_kwargs()
|
||||
kwargs.update({"user": self.request.user})
|
||||
return kwargs
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(CaseCollectionCreate, self).get_context_data(**kwargs)
|
||||
|
||||
if self.request.POST:
|
||||
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||
self.request.POST,
|
||||
self.request.FILES,
|
||||
form_kwargs={"user": self.request.user},
|
||||
)
|
||||
context["case_formset"].full_clean()
|
||||
else:
|
||||
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||
form_kwargs={"user": self.request.user}
|
||||
)
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
|
||||
self.object = form.save(commit=False)
|
||||
self.object.save()
|
||||
|
||||
form.instance.author.add(self.request.user.id)
|
||||
|
||||
context = self.get_context_data(form=form)
|
||||
case_formset = context["case_formset"]
|
||||
if case_formset.is_valid():
|
||||
response = super().form_valid(form)
|
||||
case_formset.instance = self.object
|
||||
case_formset.save()
|
||||
return response
|
||||
|
||||
else:
|
||||
return super().form_invalid(form)
|
||||
|
||||
|
||||
class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
model = Series
|
||||
form_class = SeriesForm
|
||||
@@ -399,6 +455,67 @@ class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
return super().form_invalid(form)
|
||||
|
||||
|
||||
class CaseCollectionUpdate(RevisionMixin, LoginRequiredMixin, UpdateView):
|
||||
model = CaseCollection
|
||||
form_class = CaseCollectionForm
|
||||
|
||||
# fields = '__all__'
|
||||
# #fields = [ 'condition' ]
|
||||
# #initial = {'date_of_death': '05/01/2018'}
|
||||
# exclude = [ 'created_date', 'published_date' ]
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super(CaseCollectionUpdate, self).get_form_kwargs()
|
||||
kwargs.update({"user": self.request.user})
|
||||
return kwargs
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(CaseCollectionUpdate, self).get_context_data(**kwargs)
|
||||
if self.request.POST:
|
||||
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||
self.request.POST,
|
||||
self.request.FILES,
|
||||
instance=self.object,
|
||||
form_kwargs={"user": self.request.user},
|
||||
)
|
||||
context["case_formset"].full_clean()
|
||||
else:
|
||||
context["case_formset"] = CaseCollectionCaseFormSet(
|
||||
instance=self.object, form_kwargs={"user": self.request.user}
|
||||
)
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
# save exam orders (there must be a better way to do this)
|
||||
# exam_orders = {}
|
||||
# for exam in self.object.exams.all():
|
||||
# exam_orders[exam] = list(exam.exam_questions.all())
|
||||
|
||||
self.object = form.save(commit=False)
|
||||
self.object.save()
|
||||
|
||||
form.instance.author.add(self.request.user.id)
|
||||
|
||||
context = self.get_context_data(form=form)
|
||||
case_formset = context["case_formset"]
|
||||
# logger.debug(formset.is_valid())
|
||||
if case_formset.is_valid():
|
||||
response = super().form_valid(form)
|
||||
case_formset.instance = self.object
|
||||
case_formset.save()
|
||||
|
||||
# restore exam orders
|
||||
# for exam in self.object.exams.all():
|
||||
# if exam in exam_orders and self.object in exam_orders[exam]:
|
||||
# print(exam_orders[exam])
|
||||
# exam.exam_questions.set(exam_orders[exam])
|
||||
# exam.save()
|
||||
|
||||
return response
|
||||
else:
|
||||
return super().form_invalid(form)
|
||||
|
||||
|
||||
class SeriesUpdate(
|
||||
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView
|
||||
):
|
||||
@@ -494,7 +611,9 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
||||
context = super(AtlasCreateBase, self).get_context_data(**kwargs)
|
||||
if self.request.POST:
|
||||
context["series_formset"] = SeriesFormSet(
|
||||
self.request.POST, self.request.FILES, queryset=Series.objects.filter(author__id=self.request.user.id)
|
||||
self.request.POST,
|
||||
self.request.FILES,
|
||||
form_kwargs={"user": self.request.user},
|
||||
)
|
||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||
self.request.POST, self.request.FILES
|
||||
@@ -502,8 +621,10 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin):
|
||||
context["series_formset"].full_clean()
|
||||
context["casedifferential_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()
|
||||
# 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["casedifferential_formset"] = CaseDifferentialFormSet()
|
||||
return context
|
||||
|
||||
@@ -569,7 +690,10 @@ class AtlasUpdate(
|
||||
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, queryset=Series.objects.filter(author__id=self.request.user.id)
|
||||
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
|
||||
@@ -577,7 +701,9 @@ class AtlasUpdate(
|
||||
context["series_formset"].full_clean()
|
||||
context["casedifferential_formset"].full_clean()
|
||||
else:
|
||||
context["series_formset"] = SeriesFormSet(instance=self.object, queryset=Series.objects.filter(author__id=self.request.user.id))
|
||||
context["series_formset"] = SeriesFormSet(
|
||||
instance=self.object, form_kwargs={"user": self.request.user}
|
||||
)
|
||||
context["casedifferential_formset"] = CaseDifferentialFormSet(
|
||||
instance=self.object
|
||||
)
|
||||
@@ -908,12 +1034,18 @@ def categories_list(request):
|
||||
def collection_index_view(request):
|
||||
collections = CaseCollection.objects.all()
|
||||
|
||||
return render(request, "atlas/collection_index_view.html", {"collections": collections})
|
||||
return render(
|
||||
request, "atlas/collection_index_view.html", {"collections": collections}
|
||||
)
|
||||
|
||||
|
||||
def collection_detail_view(request, pk):
|
||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||
|
||||
return render(request, "atlas/collection_detail_view.html", {"collection": collection})
|
||||
return render(
|
||||
request, "atlas/collection_detail_view.html", {"collection": collection}
|
||||
)
|
||||
|
||||
|
||||
def collection_case_view(request, pk, case_number):
|
||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||
@@ -926,5 +1058,15 @@ def collection_case_view(request, pk, case_number):
|
||||
previous = case_number > 0
|
||||
next = case_number < (len(cases) - 1)
|
||||
|
||||
|
||||
return render(request, "atlas/collection_case_view.html", {"collection": collection, "case": case, "series_list": series_list, "case_number": case_number, "previous": previous, "next": next})
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_case_view.html",
|
||||
{
|
||||
"collection": collection,
|
||||
"case": case,
|
||||
"series_list": series_list,
|
||||
"case_number": case_number,
|
||||
"previous": previous,
|
||||
"next": next,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user