diff options
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): | 
