diff options
Diffstat (limited to 'archaeological_finds/views.py')
| -rw-r--r-- | archaeological_finds/views.py | 52 | 
1 files changed, 50 insertions, 2 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 6c6d9fff9..034e1994f 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2016  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2018  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -21,7 +21,7 @@ import json  from django.core.urlresolvers import reverse  from django.db.models import Q -from django.http import HttpResponseRedirect, HttpResponse +from django.http import HttpResponseRedirect, HttpResponse, Http404  from django.shortcuts import redirect  from django.utils.translation import ugettext_lazy as _  from django.views.generic import TemplateView @@ -594,3 +594,51 @@ def reset_wizards(request):               'treatmentfle_admacttreatmentfle_deletion'),      ):          wizard_class.session_reset(request, url_name) + + +class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView): +    template_name = 'ishtar/qa_form.html' +    model = None +    form_class = None +    form_class_multi = None + +    def dispatch(self, request, *args, **kwargs): +        assert self.model +        pks = [int(pk) for pk in kwargs.get('pks').split('-')] +        self.items = list(self.model.objects.filter(pk__in=pks)) +        if not self.items: +            raise Http404() + +        # check availability +        if not self.model.QA_EDIT.is_available( +                user=request.user, session=request.session): +            for item in self.items: +                if not self.model.QA_EDIT.is_available( +                        user=request.user, session=request.session, obj=item): +                    raise Http404() + +        return super(QAItemEditForm, self).dispatch(request, *args, **kwargs) + +    def get_form_class(self): +        if len(self.items) > 1: +            return self.form_class_multi +        return self.form_class + +    def get_form_kwargs(self): +        kwargs = super(QAItemEditForm, self).get_form_kwargs() +        kwargs['items'] = self.items +        return kwargs + + +class QAFindForm(QAItemEditForm): +    model = models.Find +    form_class = QAFindFormSingle +    form_class_multi = QAFindFormMulti + +    def get_success_url(self, basket): +        return reverse('select_itemsinbasket', +                       kwargs={'pk': basket}) + +    def form_valid(self, form): +        return HttpResponseRedirect(self.get_success_url( +            form.cleaned_data['basket']))  | 
