aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/utils
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2019-10-05 14:49:29 +0100
committerGravatar Gareth Coles <[email protected]>2019-10-05 14:49:29 +0100
commit23f7f9e5f09e7b5b52810d19ffe7ad31eeabd054 (patch)
tree92b534413076b32bb722e8f2d75f93ea90832d0c /pydis_site/utils
parentClean up and comment signal tests (diff)
Add MessageRedirectView and show messages on the index page
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)