This commit is contained in:
Ross
2021-11-30 22:32:43 +00:00
parent fea2167f08
commit d69bc503cb
+78 -93
View File
@@ -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