flows: fix FlowNonApplicableException and EmptyFlowException leading to infinite spinners

This commit is contained in:
Jens Langhammer 2020-09-14 18:40:26 +02:00
parent 2c07859b68
commit 5184c4b7ef
4 changed files with 36 additions and 8 deletions

View File

@ -0,0 +1,25 @@
{# Template used by bad_request_message within flows #}
{% extends 'login/base.html' %}
{% load static %}
{% load i18n %}
{% load passbook_utils %}
{% block title %}
{% trans card_title %}
{% endblock %}
{% block card_title %}
{% trans card_title %}
{% endblock %}
{% block card %}
<form method="POST" class="pf-c-form">
{% if message %}
<h3>{% trans message %}</h3>
{% endif %}
{% if 'back' in request.GET %}
<a href="{% back %}" class="btn btn-primary btn-block btn-lg">{% trans 'Back' %}</a>
{% endif %}
</form>
{% endblock %}

View File

@ -2,8 +2,8 @@
class FlowNonApplicableException(BaseException): class FlowNonApplicableException(BaseException):
"""Exception raised when a Flow does not apply to a user.""" """Flow does not apply to current user (denied by policy)."""
class EmptyFlowException(BaseException): class EmptyFlowException(BaseException):
"""Exception raised when a Flow Plan is empty""" """Flow has no stages."""

View File

@ -54,7 +54,10 @@ class FlowExecutorView(View):
LOGGER.debug("f(exec): Redirecting to next on fail") LOGGER.debug("f(exec): Redirecting to next on fail")
return redirect(self.request.GET.get(NEXT_ARG_NAME)) return redirect(self.request.GET.get(NEXT_ARG_NAME))
message = exc.__doc__ if exc.__doc__ else str(exc) message = exc.__doc__ if exc.__doc__ else str(exc)
return bad_request_message(self.request, message) return to_stage_response(
self.request,
bad_request_message(self.request, message, template="error/embedded.html"),
)
def dispatch(self, request: HttpRequest, flow_slug: str) -> HttpResponse: def dispatch(self, request: HttpRequest, flow_slug: str) -> HttpResponse:
# Early check if theres an active Plan for the current session # Early check if theres an active Plan for the current session

View File

@ -27,12 +27,12 @@ class CreateAssignPermView(CreateView):
def bad_request_message( def bad_request_message(
request: HttpRequest, message: str, title="Bad Request" request: HttpRequest,
message: str,
title="Bad Request",
template="error/generic.html",
) -> TemplateResponse: ) -> TemplateResponse:
"""Return generic error page with message, with status code set to 400""" """Return generic error page with message, with status code set to 400"""
return TemplateResponse( return TemplateResponse(
request, request, template, {"message": message, "card_title": _(title)}, status=400,
"error/generic.html",
{"message": message, "card_title": _(title)},
status=400,
) )