diff options
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'])) | 
