summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
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
commit575a7fd93e52b750e323cde669e5a4c329ead978 (patch)
treeec9c9767e29588622d0e70c58fcf3bbd2b8e98de /ishtar_common/views.py
parent7998a1f6d3096b8a6a2d8bdb80d3034a68bc544d (diff)
downloadIshtar-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.py50
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"{} &ndash; {}".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']))