diff --git a/rapids/views.py b/rapids/views.py index ac49335c..a9522a44 100755 --- a/rapids/views.py +++ b/rapids/views.py @@ -1,6 +1,7 @@ from django.shortcuts import render, get_object_or_404, redirect from django import forms -#from django.contrib.auth.models import User + +# from django.contrib.auth.models import User from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.models import User from django.core.exceptions import PermissionDenied @@ -16,7 +17,16 @@ from django.urls import reverse_lazy, reverse from django.http import Http404, JsonResponse from django.http import HttpResponseRedirect, HttpResponse -from .forms import RapidForm, ImageFormSet, NoteForm, RegionForm, AbnormalityForm, ExaminationForm, AnswerFormSet, AnswerUpdateFormSet +from .forms import ( + RapidForm, + ImageFormSet, + NoteForm, + RegionForm, + AbnormalityForm, + ExaminationForm, + AnswerFormSet, + AnswerUpdateFormSet, +) from .models import Rapid, Note, Abnormality, Region, Examination from .tables import RapidTable from .filters import RapidFilter @@ -33,16 +43,17 @@ from copy import deepcopy from django.forms.models import model_to_dict from rapids.forms import RapidCreationDefaultForm from rapids.models import RapidCreationDefault + logger = logging.getLogger(__name__) class AuthorOrCheckerRequiredMixin(object): def get_object(self, *args, **kwargs): obj = super(UpdateView, self).get_object(*args, **kwargs) - if self.request.user.groups.filter(name='rapid_checker').exists(): + if self.request.user.groups.filter(name="rapid_checker").exists(): return obj if self.request.user not in obj.author.all(): - raise PermissionDenied() #or Http404 + raise PermissionDenied() # or Http404 return obj @@ -50,22 +61,23 @@ class AuthorOrCheckerRequiredMixin(object): def index(request): other_rapids = Rapid.objects.exclude(author=request.user.pk) user_rapids = Rapid.objects.filter(author=request.user.pk) - return render(request, "rapids/index.html", { - "other_rapids": other_rapids, - "user_rapids": user_rapids - }) + return render( + request, + "rapids/index.html", + {"other_rapids": other_rapids, "user_rapids": user_rapids}, + ) @login_required def rapid_detail(request, pk): rapid = get_object_or_404(Rapid, pk=pk) - #if request.user not in rapid.author.all(): + # if request.user not in rapid.author.all(): # raise PermissionDenied - #logging.debug(rapid.rapid_notes.first()) - #logging.debug(rapid.subspecialty.first().name.all()) - return render(request, 'rapids/rapid_detail.html', {'rapid': rapid}) + # logging.debug(rapid.rapid_notes.first()) + # logging.debug(rapid.subspecialty.first().name.all()) + return render(request, "rapids/rapid_detail.html", {"rapid": rapid}) @login_required @@ -96,34 +108,33 @@ def rapid_split(request, pk): images[n].rapid = rapid images[n].save() - #images[-1].rapid + # images[-1].rapid - #if request.user not in rapid.author.all(): + # if request.user not in rapid.author.all(): # raise PermissionDenied - #logging.debug(rapid.rapid_notes.first()) - #logging.debug(rapid.subspecialty.first().name.all()) - return render(request, 'rapids/rapid_detail.html', {'rapid': rapid}) + # logging.debug(rapid.rapid_notes.first()) + # logging.debug(rapid.subspecialty.first().name.all()) + return render(request, "rapids/rapid_detail.html", {"rapid": rapid}) @login_required def author_detail(request, pk): - #logging.debug(Author.objects.all()) - #author = get_object_or_404(Author, pk=pk) + # logging.debug(Author.objects.all()) + # author = get_object_or_404(Author, pk=pk) author = User.objects.get(pk=pk) rapids = Rapid.objects.filter(author=pk) - return render(request, "rapids/category_detail.html", { - "category": author, - "rapids": rapids - }) + return render( + request, "rapids/category_detail.html", {"category": author, "rapids": rapids} + ) def author_list(request): authors = User.objects.all() - return render(request, 'rapids/author_list.html', {'authors': authors}) + return render(request, "rapids/author_list.html", {"authors": authors}) class RapidCreationDefaultView(LoginRequiredMixin, UpdateView): @@ -143,7 +154,8 @@ class RapidCreationDefaultView(LoginRequiredMixin, UpdateView): # return super().dispatch(request, *args, **kwargs) def get_object(self, queryset=None): obj, create = RapidCreationDefault.objects.get_or_create( - author=self.request.user) + author=self.request.user + ) return obj @@ -158,7 +170,7 @@ class RapidCreationDefaultView(LoginRequiredMixin, UpdateView): return response - #form.instance.author.add(self.request.user.id) + # form.instance.author.add(self.request.user.id) class AddNote(LoginRequiredMixin, CreateView): @@ -174,7 +186,7 @@ class AddNote(LoginRequiredMixin, CreateView): Overridden so we can make sure the `Rapid` instance exists before going any further. """ - self.pk = get_object_or_404(Rapid, pk=kwargs['pk']) + self.pk = get_object_or_404(Rapid, pk=kwargs["pk"]) return super().dispatch(request, *args, **kwargs) def form_valid(self, form): @@ -190,14 +202,14 @@ class AddNote(LoginRequiredMixin, CreateView): return response - #form.instance.author.add(self.request.user.id) + # form.instance.author.add(self.request.user.id) @login_required def rapid_clone(request, pk): new_item = get_object_or_404(Rapid, pk=pk) - new_item.pk = None #autogen a new pk (item_id) - #new_item.name = "Copy of " + new_item.name #need to change uniques + new_item.pk = None # autogen a new pk (item_id) + # new_item.name = "Copy of " + new_item.name #need to change uniques form = RapidForm(request.POST or None, instance=new_item) @@ -207,7 +219,7 @@ def rapid_clone(request, pk): if form.is_valid(): form.instance.author.add(request.user.id) - #logger.debug(formset.is_valid()) + # logger.debug(formset.is_valid()) if image_formset.is_valid() and answer_formset.is_valid(): response = super().form_valid(form) image_formset.instance = obj @@ -223,7 +235,7 @@ def rapid_clone(request, pk): "form": form, "image_formset": image_formset, "answer_formset": answer_formset - #other context + # other context } return render(request, "rapids/rapid_form.html", context) @@ -236,11 +248,12 @@ class RapidCreateBase(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super(RapidCreateBase, self).get_context_data(**kwargs) if self.request.POST: - context['image_formset'] = ImageFormSet(self.request.POST, - self.request.FILES) + context["image_formset"] = ImageFormSet( + self.request.POST, self.request.FILES + ) else: - context['image_formset'] = ImageFormSet() - context['answer_formset'] = AnswerFormSet() + context["image_formset"] = ImageFormSet() + context["answer_formset"] = AnswerFormSet() return context def form_valid(self, form): @@ -251,8 +264,8 @@ class RapidCreateBase(LoginRequiredMixin, CreateView): form.instance.author.add(self.request.user.id) context = self.get_context_data(form=form) - image_formset = context['image_formset'] - answer_formset = context['answer_formset'] + image_formset = context["image_formset"] + answer_formset = context["answer_formset"] if image_formset.is_valid() and answer_formset.is_valid(): response = super().form_valid(form) image_formset.instance = self.object @@ -264,22 +277,22 @@ class RapidCreateBase(LoginRequiredMixin, CreateView): return response # else we redirect to the clone url else: - return redirect('rapids:rapid_clone', pk=self.object.pk) + return redirect("rapids:rapid_clone", pk=self.object.pk) else: return super().form_invalid(form) -#@login_required +# @login_required class RapidCreate(RapidCreateBase): - initial = {'laterality': Rapid.NONE} + initial = {"laterality": Rapid.NONE} def get_initial(self): # There has to be a better way... try: s = (i.pk for i in self.request.user.rapid_default.site.all()) - self.initial.update({'site': s}) + self.initial.update({"site": s}) except AttributeError: pass return self.initial @@ -289,15 +302,14 @@ class RapidCreate(RapidCreateBase): # #initial = {'date_of_death': '05/01/2018'} # exclude = [ 'created_date', 'published_date' ] - #self.object = form.save(commit=False) - #self.object.save() + # self.object = form.save(commit=False) + # self.object.save() - #form.instance.author.add(self.request.user.id) - #return super().form_valid(form) + # form.instance.author.add(self.request.user.id) + # return super().form_valid(form) -class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, - UpdateView): +class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView): model = Rapid form_class = RapidForm @@ -308,13 +320,17 @@ class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, def get_context_data(self, **kwargs): context = super(RapidUpdate, self).get_context_data(**kwargs) if self.request.POST: - context['image_formset'] = ImageFormSet(self.request.POST, - self.request.FILES, - instance=self.object) - context['image_formset'].full_clean() + context["image_formset"] = ImageFormSet( + self.request.POST, self.request.FILES, instance=self.object + ) + context["image_formset"].full_clean() + context["answer_formset"] = AnswerFormSet( + self.request.POST, instance=self.object + ) + context["answer_formset"].full_clean() else: - context['image_formset'] = ImageFormSet(instance=self.object) - context['answer_formset'] = AnswerFormSet(instance=self.object) + context["image_formset"] = ImageFormSet(instance=self.object) + context["answer_formset"] = AnswerFormSet(instance=self.object) return context def form_valid(self, form): @@ -325,9 +341,9 @@ class RapidUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, form.instance.author.add(self.request.user.id) context = self.get_context_data(form=form) - image_formset = context['image_formset'] - answer_formset = context['answer_formset'] - #logger.debug(formset.is_valid()) + image_formset = context["image_formset"] + answer_formset = context["answer_formset"] + # logger.debug(formset.is_valid()) if image_formset.is_valid() and answer_formset.is_valid(): response = super().form_valid(form) image_formset.instance = self.object @@ -347,9 +363,9 @@ class RapidClone(RapidCreateBase): # #initial = {'date_of_death': '05/01/2018'} # exclude = [ 'created_date', 'published_date' ] def get_initial(self): - #print(self.request) - old_object = get_object_or_404(Rapid, pk=self.kwargs['pk']) - initial_data = model_to_dict(old_object, exclude=['id']) + # print(self.request) + old_object = get_object_or_404(Rapid, pk=self.kwargs["pk"]) + initial_data = model_to_dict(old_object, exclude=["id"]) return initial_data @@ -364,7 +380,7 @@ def rapid_scrap(request, pk): rapid.scrapped = not rapid.scrapped rapid.save() - return HttpResponseRedirect(reverse('rapids:rapid_detail', args=(pk, ))) + return HttpResponseRedirect(reverse("rapids:rapid_detail", args=(pk,))) # @login_required @@ -384,22 +400,22 @@ def create_abnormality(request): instance = form.save() return HttpResponse( '' - % (instance.pk, instance)) - return render(request, "rapids/create_simple.html", { - 'form': form, - 'name': "Abnormality" - }) + % (instance.pk, instance) + ) + return render( + request, "rapids/create_simple.html", {"form": form, "name": "Abnormality"} + ) @csrf_exempt def get_abnormality_id(request): if request.is_ajax(): - abnormality_name = request.GET['abnormality_name'] + abnormality_name = request.GET["abnormality_name"] abnormality_id = Abnormality.objects.get(name=abnormality_name).id data = { - 'abnormality_id': abnormality_id, + "abnormality_id": abnormality_id, } - return HttpResponse(json.dumps(data), content_type='application/json') + return HttpResponse(json.dumps(data), content_type="application/json") return HttpResponse("/") @@ -410,22 +426,22 @@ def create_examination(request): instance = form.save() return HttpResponse( '' - % (instance.pk, instance)) - return render(request, "rapids/create_simple.html", { - 'form': form, - 'name': "Examination" - }) + % (instance.pk, instance) + ) + return render( + request, "rapids/create_simple.html", {"form": form, "name": "Examination"} + ) @csrf_exempt def get_examination_id(request): if request.is_ajax(): - examination_name = request.GET['examination_name'] + examination_name = request.GET["examination_name"] examination_id = Examination.objects.get(name=examination_name).id data = { - 'examination_id': examination_id, + "examination_id": examination_id, } - return HttpResponse(json.dumps(data), content_type='application/json') + return HttpResponse(json.dumps(data), content_type="application/json") return HttpResponse("/") @@ -436,22 +452,22 @@ def create_region(request): instance = form.save() return HttpResponse( '' - % (instance.pk, instance)) - return render(request, "rapids/create_simple.html", { - 'form': form, - 'name': "Region" - }) + % (instance.pk, instance) + ) + return render( + request, "rapids/create_simple.html", {"form": form, "name": "Region"} + ) @csrf_exempt def get_region_id(request): if request.is_ajax(): - region_name = request.GET['region_name'] + region_name = request.GET["region_name"] region_id = Region.objects.get(name=region_name).id data = { - 'region_id': region_id, + "region_id": region_id, } - return HttpResponse(json.dumps(data), content_type='application/json') + return HttpResponse(json.dumps(data), content_type="application/json") return HttpResponse("/")