diff --git a/max/routes/base_alias_views.py b/max/routes/base_alias_views.py index e86b36a..62cb1ec 100644 --- a/max/routes/base_alias_views.py +++ b/max/routes/base_alias_views.py @@ -4,6 +4,8 @@ from max.db import get_alias_with_user_by_id from max.exceptions import NotFound from max.views import BaseTemplateGetView +from .return_to_mixin import RETURN_DETAIL, ReturnToMixin + class FetchAliasMixin: def before_handler(self): @@ -21,9 +23,9 @@ class FetchAliasTemplateGetView(FetchAliasMixin, BaseTemplateGetView): return context -class BackToAliasesMixin: +class BackToAliasesMixin(ReturnToMixin): def get_back_text_and_url(self): - if self.request.args.get("return") == "detail": + if self.get_return_to() == RETURN_DETAIL: return self.user.email, url_for("alias-detail", alias_id=self.alias.id) else: return self.user.email, url_for("user-detail", user_id=self.user.id) diff --git a/max/routes/base_user_views.py b/max/routes/base_user_views.py index da32939..04b8879 100644 --- a/max/routes/base_user_views.py +++ b/max/routes/base_user_views.py @@ -5,6 +5,8 @@ from max.exceptions import NotFound from max.translations import t from max.views import BaseTemplateGetView +from .return_to_mixin import RETURN_DETAIL, ReturnToMixin + class FetchUserMixin: def before_handler(self): @@ -20,9 +22,9 @@ class FetchUserTemplateGetView(FetchUserMixin, BaseTemplateGetView): return context -class BackToUsersMixin: +class BackToUsersMixin(ReturnToMixin): def get_back_text_and_url(self): - if self.request.args.get("return") == "detail": + if self.get_return_to() == RETURN_DETAIL: return self.user.email, url_for("user-detail", user_id=self.user.id) else: return t("User list"), url_for("user-list") diff --git a/max/routes/return_to_mixin.py b/max/routes/return_to_mixin.py new file mode 100644 index 0000000..2d9c8fa --- /dev/null +++ b/max/routes/return_to_mixin.py @@ -0,0 +1,17 @@ +RETURN_DETAIL = "detail" + + +class ReturnToMixin: + """ + Reads the `return` query parameter, which tells where to go back to + """ + + def get_return_to(self): + if self.request.args.get("return") == RETURN_DETAIL: + return RETURN_DETAIL + return None + + def get_context(self): + context = super().get_context() + context["return_to"] = self.get_return_to() + return context diff --git a/max/templates/alias/delete.html b/max/templates/alias/delete.html index 4e47de5..ba6fb74 100644 --- a/max/templates/alias/delete.html +++ b/max/templates/alias/delete.html @@ -4,7 +4,7 @@ {% include "alerts.html" %} -