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(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) for field_name in self.fields.keys(): self.fields[field_name].required = True self.fields[field_name].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' } ) class Meta: model = User fields = ('email', 'first_name', 'last_name') field_classes = {'email': EmailField, 'first_name': forms.CharField, 'last_name': forms.CharField}