diff options
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 |
commit | c3d78fb588769075d260e26086077785813e9448 (patch) | |
tree | 3a848bc6b55ac7bfaf59e9d0afdb6119839f4ece /ishtar_common/views.py | |
parent | 3e9cfd35489f6f24e69edb5b1fdcbfe9766f7e7f (diff) | |
download | Ishtar-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.py | 50 |
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"{} – {}".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"{} – {}".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): |