Monday, July 22, 2013

How to set the email to lowercase on User Creation?

I have a custom auth app. I am trying to only allow emails to be lower case in the database.
I can create a user in the admin with Capitalized letters, even with email.lower() in the create_user method.

Another solution would be to specify to the authenticate that the email can be any case.

user = authenticate(email=email, password=password)


#models.py
class MyUserManager(BaseUserManager):      def create_user(self, username, name, email, company, password, is_manager):          #if not username:          #    raise ValueError('User must have a username')            user = self.model(username=username,              email=MyUserManager.normalize_email(email.lower()),              #email=email.lower(),              name=name, company=company, is_manager=is_manager          )            user.set_password(password)          user.save(using=self._db)            #checks pending teams in the login view          return user        def create_superuser(self, password, username='', email=''):          user = self.create_user(username=username,              name='',              email=email,              company='not_a_companyNAMe',              password=password,              is_manager=False          )          user.is_admin = True          user.is_superuser = True          user.save(using=self._db)          return user      class Users(AbstractBaseUser, PermissionsMixin):      email           = models.EmailField(verbose_name=_('email address'), max_length=255, blank=True, unique=True)      name            = models.CharField(verbose_name=_('Name'), max_length=50, blank=True)      company         = models.CharField(verbose_name=_('Company'), max_length=255, blank=True)      is_manager      = models.BooleanField(default=False, verbose_name=_('Check this box if you are a manager or need to create teams'))      is_active       = models.BooleanField(default=True)      is_admin        = models.BooleanField(default=False)      is_customer     = models.BooleanField(default=False)      datecreated     = models.DateField(auto_now=True)        objects         = MyUserManager()      if settings.LDAP:          username        = models.CharField(verbose_name=_('Username'), max_length=50, unique=True)          USERNAME_FIELD  = 'username'      else:          username        = models.CharField(verbose_name=_('Username'), max_length=50)          USERNAME_FIELD  = 'email'        REQUIRED_FIELDS = []        class Meta:          verbose_name_plural = "Users"

#admin.py
class UserCreationForm(forms.ModelForm):
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput)      password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)      name      = forms.CharField(label='Name', widget=forms.TextInput)      company   = forms.CharField(label='Company', widget=forms.TextInput)      is_manager= forms.BooleanField(label='Manager', required=False)        class Meta:          model = Users        def clean_password2(self):          # Check that the two password entries match          password1 = self.cleaned_data.get("password1")          password2 = self.cleaned_data.get("password2")          if password1 and password2 and password1 != password2:              raise forms.ValidationError("Passwords don't match")          return password2        def save(self, commit=True):          # Save the provided password in hashed format          user = super(UserCreationForm, self).save(commit=False)          user.set_password(self.cleaned_data["password1"])          user.name = self.cleaned_data["name"]          user.company = self.cleaned_data["company"]          user.is_manager = self.cleaned_data['is_manager']          if commit:              user.save()          return user      class UserChangeForm(forms.ModelForm):      password = ReadOnlyPasswordHashField()        class Meta:          model = Users        def clean_password(self):          return self.initial["password"]      class MyUserAdmin(UserAdmin):      form         = UserChangeForm      add_form     = UserCreationForm        readonly_fields = ('last_login',)        list_display = ('name', 'email', 'is_manager', 'company',)      list_editable = ('email', 'is_manager', 'company',)      list_filter = ('is_admin',)      fieldsets = (          (None, {'fields': ('username', 'email', 'name', 'company', 'password')}),          ('Permissions', {'fields': ('is_manager', 'is_admin', 'groups', 'user_permissions')}),          ('Important dates', {'fields': ('last_login',)}),      )      add_fieldsets = (          (None, {              'classes': ('wide',),              'fields': ('email', 'name', 'company', 'password1', 'password2', 'is_manager')}          ),      )      search_fields = ('email', 'name', 'company', 'username',)      ordering = ('email',)      filter_horizontal = ()    admin.site.register(Users, MyUserAdmin)



--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate