diff options
author | 2019-10-05 14:49:29 +0100 | |
---|---|---|
committer | 2019-10-05 14:49:29 +0100 | |
commit | 23f7f9e5f09e7b5b52810d19ffe7ad31eeabd054 (patch) | |
tree | 92b534413076b32bb722e8f2d75f93ea90832d0c /pydis_site | |
parent | Clean up and comment signal tests (diff) |
Add MessageRedirectView and show messages on the index page
Diffstat (limited to 'pydis_site')
-rw-r--r-- | pydis_site/settings.py | 10 | ||||
-rw-r--r-- | pydis_site/static/css/base/base.css | 8 | ||||
-rw-r--r-- | pydis_site/templates/home/index.html | 16 | ||||
-rw-r--r-- | pydis_site/utils/views.py | 25 |
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) |