From d2aa4f4dd76c13e372c7b8de32491a7d0c7b323a Mon Sep 17 00:00:00 2001 From: Pablo Moreno Date: Fri, 17 Jan 2025 12:06:24 +0100 Subject: [PATCH] fix: styling --- users/forms/login.py | 10 ++++++- users/forms/register.py | 13 +++++++- users/forms/reset_password.py | 19 +++++++++--- web/context_processors.py | 1 + web/mixins.py | 30 +++++++++++++++++++ web/templates/mails/reset_password.txt | 1 - .../mails/subject_reset_password.txt | 3 ++ web/templates/users/login.html | 2 +- web/templates/users/register.html | 2 +- web/templates/users/reset_password.html | 4 +-- .../users/reset_password_confirm.html | 4 +-- .../users/reset_password_email_sent.html | 2 +- web/templates/web/product_detail.html | 2 ++ web/views/users.py | 12 ++++++-- web/views/web.py | 11 ++----- 15 files changed, 90 insertions(+), 26 deletions(-) delete mode 100644 web/templates/mails/reset_password.txt diff --git a/users/forms/login.py b/users/forms/login.py index c5c1b0d..fd9ed9e 100644 --- a/users/forms/login.py +++ b/users/forms/login.py @@ -2,8 +2,16 @@ from django import forms from django.contrib.auth.forms import AuthenticationForm, UsernameField from django.utils.text import gettext_lazy as _ +from web.mixins import StylingMixin + + +class LoginForm(StylingMixin, AuthenticationForm): + styled_fields = ['username', 'password', ] + placeholder_for_field = { + "username": _("pablo@shoppy.com"), + "password": "********" + } -class LoginForm(AuthenticationForm): username = UsernameField( widget=forms.EmailInput( attrs={ diff --git a/users/forms/register.py b/users/forms/register.py index bf3cc74..db46d92 100644 --- a/users/forms/register.py +++ b/users/forms/register.py @@ -2,10 +2,21 @@ from django import forms from django.contrib.auth.forms import BaseUserCreationForm, SetPasswordMixin from django.contrib.auth.models import User from django.forms import EmailField +from django.utils.text import gettext_lazy as _ + +from web.mixins import StylingMixin -class RegisterForm(BaseUserCreationForm, SetPasswordMixin): +class RegisterForm(StylingMixin, BaseUserCreationForm, SetPasswordMixin): password1, password2 = SetPasswordMixin.create_password_fields() + styled_fields = ["email", "first_name", "last_name", "password1", "password2"] + placeholder_for_field = { + "email": _('pablo@shoppy.com'), + "first_name": _("Pablo"), + "last_name": _("Moreno"), + "password1": "********", + "password2": "********", + } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/users/forms/reset_password.py b/users/forms/reset_password.py index 9508b55..a9c22e3 100644 --- a/users/forms/reset_password.py +++ b/users/forms/reset_password.py @@ -5,12 +5,23 @@ from django.contrib.auth.tokens import default_token_generator from django.core.exceptions import ValidationError from django.utils.text import gettext_lazy as _ - -class PasswordResetForm(BasePasswordResetForm): - pass +from web.mixins import StylingMixin -class SetPasswordForm(BaseSetPasswordForm): +class PasswordResetForm(StylingMixin, BasePasswordResetForm): + styled_fields = ['email', ] + placeholder_for_field = { + "email": _("pablo@shoppy.com"), + } + + +class SetPasswordForm(StylingMixin, BaseSetPasswordForm): + styled_fields = ['new_password1', 'new_password2', ] + placeholder_for_field = { + "new_password1": "********", + "new_password2": "********", + } + token = forms.CharField( required=True, widget=forms.HiddenInput(), diff --git a/web/context_processors.py b/web/context_processors.py index 3334d14..bdddd4f 100644 --- a/web/context_processors.py +++ b/web/context_processors.py @@ -9,6 +9,7 @@ def web_settings(request): ) return { + "web_title": settings.web_title, "logo": settings.logo.url if settings.logo else "", "navbar_categories": navbar_categories, } diff --git a/web/mixins.py b/web/mixins.py index f0b87a4..97f24ed 100644 --- a/web/mixins.py +++ b/web/mixins.py @@ -1,5 +1,6 @@ from django.conf import settings from django.core.paginator import Paginator +from django.utils.text import gettext_lazy as _ class FilteredQuerysetMixin: @@ -25,3 +26,32 @@ class PaginatedQuerysetMixin: page = self.request.GET.get("page", 1) qs = paginator.get_page(page) return qs + + +class StylingMixin: + placeholder_for_field = {} + styled_fields = [] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.style_fields() + + def style_fields(self): + for field_name in self.styled_fields: + field = self.fields[field_name] + field.required = True + field.widget.attrs.update( + { + "class": "my-2 bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg " + "focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 " + "dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 " + "dark:focus:border-primary-500" + } + ) + + if self.placeholder_for_field.get(field_name): + field.widget.attrs.update( + { + "placeholder": self.placeholder_for_field.get(field_name), + } + ) diff --git a/web/templates/mails/reset_password.txt b/web/templates/mails/reset_password.txt deleted file mode 100644 index ba35d17..0000000 --- a/web/templates/mails/reset_password.txt +++ /dev/null @@ -1 +0,0 @@ -Hola madafaka diff --git a/web/templates/mails/subject_reset_password.txt b/web/templates/mails/subject_reset_password.txt index e69de29..eb30fcb 100644 --- a/web/templates/mails/subject_reset_password.txt +++ b/web/templates/mails/subject_reset_password.txt @@ -0,0 +1,3 @@ +{% load i18n %}{% autoescape off %} +{% blocktranslate %}Password reset on {{ site_name }}{% endblocktranslate %} +{% endautoescape %} \ No newline at end of file diff --git a/web/templates/users/login.html b/web/templates/users/login.html index 95f9092..a61cf78 100644 --- a/web/templates/users/login.html +++ b/web/templates/users/login.html @@ -8,7 +8,7 @@ logo - {{ title }} + {{ web_title }}
logo - {{ title }} + {{ web_title }}
logo - {{ title }} + {{ web_title }}
+