summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-09-11 17:44:09 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-24 12:06:08 +0200
commitc3d78fb588769075d260e26086077785813e9448 (patch)
tree3a848bc6b55ac7bfaf59e9d0afdb6119839f4ece /ishtar_common/views.py
parent3e9cfd35489f6f24e69edb5b1fdcbfe9766f7e7f (diff)
downloadIshtar-c3d78fb588769075d260e26086077785813e9448.tar.bz2
Ishtar-c3d78fb588769075d260e26086077785813e9448.zip
Generic QA form - QA find basket form
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py50
1 files changed, 40 insertions, 10 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index aed24093f..9946a9dee 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1797,11 +1797,16 @@ class AlertList(JSONResponseMixin, LoginRequiredMixin,
return {'alerts': alerts}
-class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
- template_name = 'ishtar/qa_form.html'
+class QAItemForm(IshtarMixin, LoginRequiredMixin, FormView):
+ template_name = 'ishtar/forms/qa_form.html'
model = None
form_class = None
- form_class_multi = None
+ page_name = u""
+ success_url = "/success/"
+ modal_size = None # large, small or None (medium)
+
+ def get_quick_action(self):
+ raise NotImplementedError()
def dispatch(self, request, *args, **kwargs):
assert self.model
@@ -1811,16 +1816,44 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
raise Http404()
# check availability
- if not self.model.QA_EDIT.is_available(
+ quick_action = self.get_quick_action()
+ if not quick_action.is_available(
user=request.user, session=request.session):
for item in self.items:
- if not self.model.QA_EDIT.is_available(
+ if not quick_action.is_available(
user=request.user, session=request.session, obj=item):
raise Http404()
- self.confirm = kwargs.get('confirm', False) and True
self.url = request.get_full_path()
- return super(QAItemEditForm, self).dispatch(request, *args, **kwargs)
+ return super(QAItemForm, self).dispatch(request, *args, **kwargs)
+
+ def get_form_kwargs(self):
+ kwargs = super(QAItemForm, self).get_form_kwargs()
+ kwargs['items'] = self.items
+ return kwargs
+
+ def get_context_data(self, **kwargs):
+ data = super(QAItemForm, self).get_context_data(**kwargs)
+ data['url'] = self.url
+ data['items'] = self.items
+ data['modal_size'] = self.modal_size
+ data['page_name'] = u"{} &ndash; {}".format(
+ self.model._meta.verbose_name, self.page_name)
+ return data
+
+
+class QAItemEditForm(QAItemForm):
+ form_class_multi = None
+ modal_size = "large"
+
+ def get_quick_action(self):
+ return self.model.QA_EDIT
+
+ def dispatch(self, request, *args, **kwargs):
+ self.confirm = kwargs.get('confirm', False) and True
+ returned = super(QAItemEditForm, self).dispatch(request, *args,
+ **kwargs)
+ return returned
def get_form_class(self):
if len(self.items) > 1 and self.form_class_multi:
@@ -1829,7 +1862,6 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
def get_form_kwargs(self):
kwargs = super(QAItemEditForm, self).get_form_kwargs()
- kwargs['items'] = self.items
kwargs['confirm'] = self.confirm
return kwargs
@@ -1837,12 +1869,10 @@ class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView):
data = super(QAItemEditForm, self).get_context_data(**kwargs)
data['page_name'] = u"{} &ndash; {}".format(
self.model._meta.verbose_name, self.model.QA_EDIT.text)
- data['url'] = self.url
if self.confirm:
if 'confirm' not in self.url:
data['url'] = self.url.split('?')[0] + "confirm/"
data['confirm'] = True
- data['items'] = self.items
return data
def form_valid(self, form):