Skip to content
Snippets Groups Projects
Select Git revision
  • 01c7159ffebbae577d23b32a3fa23fbc2c5e3a3a
  • master default protected
  • fixed_merge
  • vero_dev
  • correct_doc
  • vero_removing_web
  • fixing_backend
  • vero_global_plot
  • use-ceph-fs
  • bbrancot-master-patch-43887
  • newmaster
  • rework-tests
  • masterko20240403
  • masterold20240403
  • mastersafe
  • dev_cnerin
  • 3.0
  • 2.3
  • 2.2
  • 2.1
  • 2.0
  • 1.0.1
  • 1.0
23 results

setup.py

Blame
  • forms.py 3.34 KiB
    from django import forms
    from django.contrib.auth import get_user_model, forms as auth_forms
    from django.db.models import Q
    from django.forms import widgets
    from django.urls import reverse
    from django.utils.safestring import mark_safe
    from django.utils.translation import gettext_lazy as _
    
    from basetheme_bootstrap.default_settings import is_username_is_email, is_first_last_name_required
    
    
    class CleanUsernameAndSuggestReset:
        class Meta:
            abstract = True
    
        def clean(self):
            f = super().clean()
            qs = get_user_model().objects
            if hasattr(self, 'instance'):
                qs = qs.filter(~Q(id=self.instance.id))
            if qs.filter(email=f["email"]).exists() or \
                    not is_username_is_email() and \
                    qs.filter(username=f.get("username", "")).exists():
                self.add_error("email", mark_safe(_(
                    'The email already exists, if you have lost your password you can reset it '
                    '<a href="%s">here</a>.') % (reverse('basetheme_bootstrap:password_reset'))))
            if is_first_last_name_required():
                if len(f.get("first_name", "")) == 0:
                    self.add_error("email", _("First name is required"))
                if len(f.get("last_name", "")) == 0:
                    self.add_error("email", _("Last name is required"))
            return f
    
    
    class UserCreationFormWithMore(CleanUsernameAndSuggestReset, auth_forms.UserCreationForm):
        class Meta:
            model = get_user_model()
            fields = ("username", "email", "first_name", "last_name")
            field_classes = {'username': auth_forms.UsernameField}
    
        next = forms.CharField(widget=widgets.HiddenInput(), required=False)
    
        def __init__(self, *args, **kwargs):
            super(UserCreationFormWithMore, self).__init__(*args, **kwargs)
            self.fields['email'].required = True
            if is_username_is_email():
                del self.fields['username']
            if is_first_last_name_required():
                self.fields['first_name'].required = True
                self.fields['last_name'].required = True
    
        def save(self, commit=True):
            user = super().save(commit=False)
            if is_username_is_email():
                user.username = user.email
            if commit:
                user.save()
            return user
    
    
    class MyUserChangeForm(CleanUsernameAndSuggestReset, auth_forms.UserChangeForm):
        password = None
    
        class Meta:
            model = get_user_model()
            fields = ("username", "email", "first_name", "last_name")
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            if is_username_is_email():
                del self.fields['username']
                self.fields['email'].required = True
            if is_first_last_name_required():
                self.fields['first_name'].required = True
                self.fields['last_name'].required = True
    
        def save(self, commit=True):
            user = super().save(commit=False)
            if is_username_is_email():
                user.username = user.email
            if commit:
                user.save()
            return user
    
    
    class UserDeleteForm(forms.ModelForm):
        class Meta:
            model = get_user_model()
            fields = ()
    
    
    class AuthenticationForm(auth_forms.AuthenticationForm):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            if is_username_is_email():
                self.fields["username"].label = _("Email")