Django Viewflow - flow.If с пользовательскими представлениями не работает для меня - PullRequest
1 голос
/ 08 января 2020

У меня есть такой поток:

    review_request = (
        flow.View(
            ReviewRequest,
        ).Permission(
            auto_create=True
        ).Next(this.check_response)
    )


    check_response = flow.If(cond=lambda act: True
        ).Then(
            this.approved_access_request
        ).Else(
            this.refused_access_request
        )


    approved_access_request = flow.View(
        AccessApproved,
    ).Assign(
        this.review_request.owner
    ).Permission(
        auto_create=True
    ).Next(this.end)

    refused_access_request = flow.View(
        AccessRefused,
    ).Assign(
        this.review_request.owner
    ).Permission(
        auto_create=True
    ).Next(this.end)

И представление:

class ReviewRequest(FlowMixin, generic.UpdateView):
    template_name = 'web/review-access-request.html'
    model = AccessRequest

    form_class = ReviewAccessRequestForm

    def get_object(self):
        return self.activation.process

    def request_details(self):
        return self.activation.process.access_request

    def form_valid(self, form):
        form.save()
        self.activation_done()
        next_view_url = self.get_success_url()
        return redirect(next_view_url)

Проблема в том, что страницы для AccessApproved и AccessRefused не отображаются. Часть назначения работает (показывается интерфейсом материала администратора), но представления не выполняются. Вместо этого происходит пауза в несколько секунд, и браузер отправляется администратору Входящие.

1 Ответ

2 голосов
/ 09 января 2020

Просмотр задачи не выполняется автоматически, но выбирается пользователем. Обычно после выполнения потока. Если новые назначенные задачи доступны в папке входящих сообщений пользователя.

Если вы нажмете кнопку Сохранить и продолжить в веб-интерфейсе по умолчанию, ваше представление ReviewRequest может решить, куда дальше go, вызвав viewflow.flow.utils.get_next_task_url

...