def dispatch(self, request, requestion_id, dst_status):
        u"""
        Метод переопределен, чтобы сохранить в атрибутах ``transition``
        """
        requestion = get_object_or_404(Requestion, id=requestion_id)

        redirect_to = request.REQUEST.get('next', '')
        self.redirect_to = check_url(
            redirect_to, self.default_redirect_to(requestion))

        if not requestion.is_available_for_actions:
            messages.error(
                request,
                u"Изменения заявки в статусе '{}' запрещены.".format(
                    requestion.get_status_display()
                ))
            return HttpResponseRedirect(self.redirect_to)

        transition_indexes = workflow.available_transitions(
            src=requestion.status, dst=int(dst_status))
        if transition_indexes:
            self.transition = workflow.get_transition_by_index(
                transition_indexes[0])
        else:
            self.transition = None

        # копирование ролей из workflow в проверку прав
        if self.transition:
            # Если на перевод есть права
            if self.transition.required_permissions:
                temp_copy = self.transition.required_permissions[:]
                # Пропустить публичный доступ ``ANONYMOUS_PERMISSION``
                if Transition.ANONYMOUS_PERMISSION in temp_copy:
                    temp_copy.remove(Transition.ANONYMOUS_PERMISSION)
                self.required_permissions = temp_copy

            # Если переод только внутрисистемный, запретить его выполнение
            else:
                self.required_permissions = None

            # задаем шаблон в зависимости от типа изменения статуса
            self.template_name = self.get_custom_template_name() or self.template_name

        response = super(RequestionStatusChange, self).dispatch(
            request, requestion)
        # если проверка прав прошла успешно, переход предполагает проверку
        # документов и у заявки не указан документ, то перенаправляем на
        # страницу указания документа
        if (isinstance(response, TemplateResponse) and not
            isinstance(request, FakeWSGIRequest) and self.transition and
                self.transition.check_document and
                requestion.is_fake_identity_documents):
            return HttpResponseRedirect(
                u'%s?next=%s' %
                (reverse('operator_requestion_set_identity_document',
                         kwargs={'requestion_id': requestion_id}),
                 urlquote(request.get_full_path()))
                )
        return response
Example #2
0
 def dispatch(self, request, requestion_id):
     if request.method == "GET":
         redirect_to = request.GET.get("next", "")
     else:
         redirect_to = request.POST.get("next", "")
     self.redirect_to = check_url(
         redirect_to, reverse("operator_requestion_info", kwargs={"requestion_id": requestion_id})
     )
     return super(SetIdentityDocument, self).dispatch(request, requestion_id)
Example #3
0
    def dispatch(self, request, requestion_id, dst_status):
        u"""
        Метод переопределен, чтобы сохранить в атрибутах ``transition``
        """
        requestion = get_object_or_404(Requestion, id=requestion_id)

        redirect_to = request.REQUEST.get('next', '')
        self.redirect_to = check_url(redirect_to, self.default_redirect_to(requestion))

        transition_indexes = workflow.available_transitions(src=requestion.status, dst=int(dst_status))
        if transition_indexes:
            self.transition = workflow.get_transition_by_index(transition_indexes[0])
        else:
            self.transition = None

        # копирование ролей из workflow в проверку прав
        if self.transition:
            # Если на перевод есть права
            if self.transition.required_permissions:
                temp_copy = self.transition.required_permissions[:]
                # Пропустить публичный доступ ``ANONYMOUS_PERMISSION``
                if Transition.ANONYMOUS_PERMISSION in temp_copy:
                    temp_copy.remove(Transition.ANONYMOUS_PERMISSION)
                self.required_permissions = temp_copy

            # Если переод только внутрисистемный, запретить его выполнение
            else:
                self.required_permissions = None

        response = super(RequestionStatusChange, self).dispatch(request, requestion)
        # если проверка прав прошла, то проверяем есть ли у заявки документы
        if isinstance(response, TemplateResponse):
            if not requestion.evidience_documents().filter(
                    template__destination=REQUESTION_IDENTITY).exists():
                return HttpResponseRedirect(
                    u'%s?next=%s' %
                    (reverse('operator_requestion_set_identity_document',
                             kwargs={'requestion_id': requestion_id}),
                     urlquote(request.get_full_path()))
                )
        return response
Example #4
0
 def dispatch(self, request):
     redirect_to = request.REQUEST.get('next', '')
     redirect_to = check_url(redirect_to, reverse('supervisor_frontpage'))
     return RequirePermissionsMixin.dispatch(self, request,
                                             redirect_to=redirect_to)
Example #5
0
 def dispatch(self, request):
     redirect_to = request.GET.get("next") or request.POST.get("next", "")
     redirect_to = check_url(redirect_to, reverse("supervisor_frontpage"))
     return RequirePermissionsMixin.dispatch(self, request, redirect_to=redirect_to)
Example #6
0
 def dispatch(self, request, requestion_id):
     redirect_to = request.REQUEST.get('next', '')
     self.redirect_to = check_url(redirect_to,
         reverse('operator_requestion_info',
                 kwargs={'requestion_id': requestion_id}))
     return super(SetIdentityDocument, self).dispatch(request, requestion_id)
Example #7
0
 def dispatch(self, request, backend, association_id):
     redirect_to = request.GET.get("next") or request.POST.get("next", "")
     redirect_to = check_url(redirect_to, reverse("frontpage"))
     return super(AccountSocialAuthDisconnect, self).dispatch(
         request, backend, association_id, redirect_to=redirect_to
     )