diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-09-05 13:56:09 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-24 12:06:08 +0200 |
commit | 575a7fd93e52b750e323cde669e5a4c329ead978 (patch) | |
tree | ec9c9767e29588622d0e70c58fcf3bbd2b8e98de /ishtar_common/views.py | |
parent | 7998a1f6d3096b8a6a2d8bdb80d3034a68bc544d (diff) | |
download | Ishtar-575a7fd93e52b750e323cde669e5a4c329ead978.tar.bz2 Ishtar-575a7fd93e52b750e323cde669e5a4c329ead978.zip |
Fix display of QA form. Improve layout of criteria search.
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index eed175753..8b22048f2 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1795,3 +1795,53 @@ class AlertList(JSONResponseMixin, LoginRequiredMixin, 'number': nb} ) return {'alerts': alerts} + + +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 + + def get_context_data(self, **kwargs): + data = super(QAItemEditForm, self).get_context_data(**kwargs) + data['page_name'] = u"{} – {}".format( + self.model._meta.verbose_name, self.model.QA_EDIT.text) + return data + + + + 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'])) |