aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/utils
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/utils')
-rw-r--r--pydis_site/utils/views.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/pydis_site/utils/views.py b/pydis_site/utils/views.py
new file mode 100644
index 00000000..c9803bd6
--- /dev/null
+++ b/pydis_site/utils/views.py
@@ -0,0 +1,25 @@
+from django.contrib import messages
+from django.http import HttpRequest
+from django.views.generic import RedirectView
+
+
+class MessageRedirectView(RedirectView):
+ """
+ Redirects to another URL, also setting a message using the Django Messages framework.
+
+ This is based on Django's own `RedirectView` and works the same way, but takes two additional
+ parameters.
+
+ * `message`: Set to the message content you wish to display.
+ * `message_level`: Set to one of the message levels from the Django messages framework. This
+ parameter defaults to `messages.INFO`.
+ """
+
+ message: str = ""
+ message_level: int = messages.INFO
+
+ def get(self, request: HttpRequest, *args, **kwargs) -> None:
+ """Called upon a GET request."""
+ messages.add_message(request, self.message_level, self.message)
+
+ return super().get(request, *args, **kwargs)