From 68ac5cba3304e8e1e17ab75b37998d162a5ac2f8 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 7 Jun 2024 10:18:56 +0200 Subject: [PATCH] New style for old login page --- modoboa/core/forms.py | 11 +- modoboa/core/templatetags/core_tags.py | 2 +- modoboa/static/css/modoboa-white.png | Bin 0 -> 8336 bytes modoboa/static/css/offline.css | 150 +++++++++++++++--- modoboa/templates/registration/base.html | 28 +--- modoboa/templates/registration/login.html | 41 ++--- .../registration/password_reset_complete.html | 2 +- .../registration/password_reset_confirm.html | 37 +++-- .../registration/password_reset_done.html | 3 +- .../registration/password_reset_form.html | 39 ++--- test_project/test_project/settings.py | 3 +- 11 files changed, 202 insertions(+), 114 deletions(-) create mode 100644 modoboa/static/css/modoboa-white.png diff --git a/modoboa/core/forms.py b/modoboa/core/forms.py index 6358d365e..08a44abf8 100644 --- a/modoboa/core/forms.py +++ b/modoboa/core/forms.py @@ -10,7 +10,6 @@ from django.utils.translation import gettext as _, gettext_lazy import django_otp from modoboa.core.models import User, UserFidoKeys -from modoboa.core import utils from modoboa.lib.form_utils import UserKwargModelFormMixin from modoboa.parameters import tools as param_tools @@ -120,8 +119,8 @@ class ProfileForm(forms.ModelForm): class TwoFAChoiceForm(forms.Form): """Form to select the 2FA method of choice.""" - two_fa_choices = forms.ChoiceField(choices=(), - required=True) + + two_fa_choices = forms.ChoiceField(choices=(), required=True) def __init__(self, *args, **kwargs): user = kwargs.pop("user") @@ -129,8 +128,8 @@ class TwoFAChoiceForm(forms.Form): if fido_keys.exists(): self.fields["two_fa_choices.choices"].choices = [ ("TOTP", "TOTP or recovery codes"), - ("FIDO", "Webauthn device") - ] + ("FIDO", "Webauthn device"), + ] class APIAccessForm(forms.Form): @@ -169,7 +168,7 @@ class PasswordResetForm(auth_forms.PasswordResetForm): ): """Send message to secondary email instead.""" to_email = context["user"].secondary_email - super(PasswordResetForm, self).send_mail( + super().send_mail( subject_template_name, email_template_name, context, diff --git a/modoboa/core/templatetags/core_tags.py b/modoboa/core/templatetags/core_tags.py index 859996d0d..e7285fcf3 100644 --- a/modoboa/core/templatetags/core_tags.py +++ b/modoboa/core/templatetags/core_tags.py @@ -249,7 +249,7 @@ def get_modoboa_logo(): except AttributeError: logo = None if logo is None: - return os.path.join(settings.STATIC_URL, "css/modoboa.png") + return os.path.join(settings.STATIC_URL, "css/modoboa-white.png") return logo diff --git a/modoboa/static/css/modoboa-white.png b/modoboa/static/css/modoboa-white.png new file mode 100644 index 0000000000000000000000000000000000000000..6d49dd63b36b4ffc6285deda740859c1d0c006a7 GIT binary patch literal 8336 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 {% trans "Welcome to Modoboa" %} - {% block extra_css %}{% endblock %}
-
- -
+
+ + {% block sub_content %}{% endblock %} +
+
{% block main_content %}{% endblock %}
- {% block sub_content %}{% endblock %}
- - - - {% if TEMPLATE_DEBUG %} - - {% endif %} {% block extra_js %}{% endblock %} diff --git a/modoboa/templates/registration/login.html b/modoboa/templates/registration/login.html index 931f296bc..3ee975c4f 100644 --- a/modoboa/templates/registration/login.html +++ b/modoboa/templates/registration/login.html @@ -7,25 +7,28 @@ {% endblock %} {% block main_content %} -