From d69bc503cb2f57c0444c85209d128f2ca5732b4e Mon Sep 17 00:00:00 2001 From: Ross Date: Tue, 30 Nov 2021 22:32:43 +0000 Subject: [PATCH] . --- atlas/views.py | 171 ++++++++++++++++++++++--------------------------- 1 file changed, 78 insertions(+), 93 deletions(-) diff --git a/atlas/views.py b/atlas/views.py index fae2fd38..755f4937 100755 --- a/atlas/views.py +++ b/atlas/views.py @@ -31,7 +31,6 @@ from .forms import ( SeriesForm, SeriesImageFormSet, SeriesFormSet, - CaseDifferentialFormSet, ExaminationForm, SeriesFindingForm, ) @@ -174,37 +173,37 @@ class SeriesDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView): success_url = reverse_lazy("atlas:series_view") -# @login_required -# @user_is_author_or_atlas_checker -# def case_clone(request, pk): -# new_item = get_object_or_404(Case, pk=pk) -# new_item.pk = None # autogen a new pk (item_id) -# # new_item.name = "Copy of " + new_item.name #need to change uniques -# -# form = CaseForm(request.POST or None, instance=new_item) -# -# series_formset = SeriesFormSet() -# -# if form.is_valid(): -# form.instance.author.add(request.user.id) -# -# # logger.debug(formset.is_valid()) -# if series_formset.is_valid(): -# response = super().form_valid(form) -# series_formset.instance = obj -# series_formset.save() -# -# return response -# else: -# return super().form_invalid(form) -# -# context = { -# "form": form, -# "series_formset": series_formset, -# # other context -# } -# -# return render(request, "atlas/case_form.html", context) +@login_required +@user_is_author_or_atlas_checker +def case_clone(request, pk): + new_item = get_object_or_404(Case, pk=pk) + new_item.pk = None # autogen a new pk (item_id) + # new_item.name = "Copy of " + new_item.name #need to change uniques + + form = CaseForm(request.POST or None, instance=new_item) + + series_formset = SeriesFormSet() + + if form.is_valid(): + form.instance.author.add(request.user.id) + + # logger.debug(formset.is_valid()) + if series_formset.is_valid(): + response = super().form_valid(form) + series_formset.instance = obj + series_formset.save() + + return response + else: + return super().form_invalid(form) + + context = { + "form": form, + "series_formset": series_formset, + # other context + } + + return render(request, "atlas/case_form.html", context) class SeriesCreate(RevisionMixin, LoginRequiredMixin, CreateView): @@ -292,7 +291,7 @@ class SeriesUpdate( return super().form_invalid(form) -class AtlasCreateBase(RevisionMixin, LoginRequiredMixin): +class AtlasCreateBase(RevisionMixin, LoginRequiredMixin, CreateView): model = Case form_class = CaseForm @@ -305,18 +304,11 @@ 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, instance=self.object - ) - context["casedifferential_formset"] = CaseDifferentialFormSet( - self.request.POST, self.request.FILES, instance=self.object + self.request.POST, self.request.FILES ) context["series_formset"].full_clean() - context["casedifferential_formset"].full_clean() else: - context["series_formset"] = SeriesFormSet(instance=self.object) - context["casedifferential_formset"] = CaseDifferentialFormSet( - instance=self.object - ) + context["series_formset"] = SeriesFormSet() return context def form_valid(self, form): @@ -331,13 +323,10 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin): context = self.get_context_data(form=form) series_formset = context["series_formset"] - casedifferential_formset = context["casedifferential_formset"] - if series_formset.is_valid() and casedifferential_formset.is_valid(): + if series_formset.is_valid(): response = super().form_valid(form) series_formset.instance = self.object series_formset.save() - casedifferential_formset.instance = self.object - casedifferential_formset.save() # If the normal submit button is pressed we save as normal if "submit" in self.request.POST: return response @@ -350,7 +339,7 @@ class AtlasCreateBase(RevisionMixin, LoginRequiredMixin): # @login_required -class AtlasCreate(AtlasCreateBase, CreateView): +class AtlasCreate(AtlasCreateBase): def get_initial(self): # There has to be a better way... try: @@ -361,7 +350,9 @@ class AtlasCreate(AtlasCreateBase, CreateView): return self.initial -class AtlasUpdate(AuthorOrCheckerRequiredMixin, AtlasCreateBase, UpdateView): +class AtlasUpdate( + RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView +): model = Case form_class = CaseForm @@ -370,44 +361,43 @@ class AtlasUpdate(AuthorOrCheckerRequiredMixin, AtlasCreateBase, UpdateView): # #initial = {'date_of_death': '05/01/2018'} # exclude = [ 'created_date', 'published_date' ] + def get_form_kwargs(self): + kwargs = super(AtlasUpdate, self).get_form_kwargs() + kwargs.update({"user": self.request.user}) + return kwargs -# def get_form_kwargs(self): -# kwargs = super(AtlasUpdate, self).get_form_kwargs() -# kwargs.update({"user": self.request.user}) -# return kwargs -# -# 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 -# ) -# context["series_formset"].full_clean() -# else: -# context["series_formset"] = SeriesFormSet(instance=self.object) -# 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) -# series_formset = context["series_formset"] -# # logger.debug(formset.is_valid()) -# if series_formset.is_valid(): -# response = super().form_valid(form) -# series_formset.instance = self.object -# series_formset.save() -# -# return response -# else: -# return super().form_invalid(form) + 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 + ) + context["series_formset"].full_clean() + else: + context["series_formset"] = SeriesFormSet(instance=self.object) + 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) + series_formset = context["series_formset"] + # logger.debug(formset.is_valid()) + if series_formset.is_valid(): + response = super().form_valid(form) + series_formset.instance = self.object + series_formset.save() + + return response + else: + return super().form_invalid(form) -class AtlasClone(AtlasCreateBase, CreateView): +class AtlasClone(AtlasCreateBase): """Clones a existing atlas""" # fields = '__all__' @@ -426,12 +416,12 @@ class AtlasClone(AtlasCreateBase, CreateView): @user_is_author_or_atlas_checker def atlas_scrap(request, pk): try: - case = Case.objects.get(pk=pk) + atlas = Case.objects.get(pk=pk) except Case.DoesNotExist: raise Http404("Case does not exist") - case.scrapped = not case.scrapped - case.save() + atlas.scrapped = not atlas.scrapped + atlas.save() return HttpResponseRedirect(reverse("atlas:case_detail", args=(pk,))) @@ -584,13 +574,8 @@ class ConditionAutocomplete(autocomplete.Select2QuerySetView): if self.q: # This raises a fielderror which breaks creating a new item if not caught try: - primary = qs.filter(name__icontains=self.q) - - # synonyms = qs.filter(name__icontains=self.q, primary=False) - # for s in synonyms: - # primary.extend(s.synonym.filter(primary=True)) - + qs = qs.filter(name__istartswith=self.q) except FieldError: return Condition.objects.none() - return primary + return qs