aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pydis_site/settings.py10
-rw-r--r--pydis_site/static/css/base/base.css8
-rw-r--r--pydis_site/templates/home/index.html16
-rw-r--r--pydis_site/utils/views.py25
4 files changed, 59 insertions, 0 deletions
diff --git a/pydis_site/settings.py b/pydis_site/settings.py
index 21841e15..919547de 100644
--- a/pydis_site/settings.py
+++ b/pydis_site/settings.py
@@ -272,6 +272,16 @@ LOGGING = {
}
}
+# Django Messages framework config
+
+MESSAGE_TAGS = {
+ messages.DEBUG: 'primary',
+ messages.INFO: 'info',
+ messages.SUCCESS: 'success',
+ messages.WARNING: 'warning',
+ messages.ERROR: 'danger',
+}
+
# Custom settings for Crispyforms
CRISPY_ALLOWED_TEMPLATE_PACKS = (
"bootstrap",
diff --git a/pydis_site/static/css/base/base.css b/pydis_site/static/css/base/base.css
index ce1503a3..283e89cb 100644
--- a/pydis_site/static/css/base/base.css
+++ b/pydis_site/static/css/base/base.css
@@ -70,3 +70,11 @@ div.card.has-equal-height {
#pydis-text {
font-weight: bold;
}
+
+button.is-size-navbar-menu {
+ font-size: 14px;
+}
+
+section.message-section {
+ padding: 1.5rem 1.5rem 0 1.5rem;
+}
diff --git a/pydis_site/templates/home/index.html b/pydis_site/templates/home/index.html
index 205e92ff..a367fe70 100644
--- a/pydis_site/templates/home/index.html
+++ b/pydis_site/templates/home/index.html
@@ -9,6 +9,22 @@
{% block content %}
{% include "base/navbar.html" %}
+ {% if messages %}
+ <section class="section message-section is-centered">
+ <div class="columns is-mobile is-centered">
+ <div class="column is-one-third-desktop is-full-tablet is-full-mobile">
+ {% for message in messages %}
+ <div class="notification {% if message.tags %}is-{{ message.tags }}{% endif %}">
+ <button class="delete"></button>
+
+ {{ message }}
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ </section>
+ {% endif %}
+
<section class="section">
{# Who are we? #}
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)