As aRkadeFR says, you seam to have mixed code there....

The row:
user.set_password(self.cleaned_data["password"])

is taken from a form somewhere and won't work. It should instead be :
user.set_password(password)

I suppose the password is going through to the create method via the kwargs
argument at the end of you create method. But if you change like I said,
everything should work.


Med vänliga hälsningar,

Andréas Kühne
Software Development Manager
Suitopia Scandinavia AB

2015-11-12 16:20 GMT+01:00 aRkadeFR <[email protected]>:

> Hello,
>
> I don't quite get the code in your method: 'MyUserManager.create_user':
>         user.set_password(self.cleaned_data["password"])
>
> You're in your Manager method but call self.cleaned_data ?
>
> You can set a breakpoint inside your method with pdb to see
> what's going on with your fields?
>
>
> On 11/12/2015 04:11 PM, Benjamin Smith wrote:
>
> I have my own custom User model, and its own Manger too.
>
> Models:
>
> class MyUser(AbstractBaseUser, PermissionsMixin):
>     email = models.EmailField(max_length=255, unique=True)
>     first_name = models.CharField(max_length=35)
>     last_name = models.CharField(max_length=35)
>     username = models.CharField(max_length=70, unique=True)
>     date_of_birth = models.DateField()
>     is_active = models.BooleanField(default=True)
>     is_admin = models.BooleanField(default=False)
>
>     @property
>     def is_staff(self):
>         return self.is_admin
>
>     def get_full_name(self):
>         return ('%s %s') % (self.first_name, self.last_name)
>
>     def get_short_name(self):
>         return self.username
>
>     objects = MyUserManager()
>     USERNAME_FIELD = 'email'
>     REQUIRED_FIELDS = ['first_name', 'last_name', 'username',
> 'date_of_birth']
>
>
> Manager:
>
> class MyUserManager(BaseUserManager):
>     def create_user(self, email, first_name, last_name, username,
> date_of_birth, password=None, **kwargs):
>         if not email:
>             raise ValueError('User must have an email address')
>
>         user = self.model(
>             email=self.normalize_email(email),
>             first_name=first_name,
>             last_name=last_name,
>             username=username,
>             date_of_birth=date_of_birth,
>             **kwargs
>         )
>         user.set_password(self.cleaned_data["password"])
>         user.save(using=self._db)
>         return user
>
>     def create_superuser(self, email, first_name, last_name, username,
> date_of_birth, password, **kwargs):
>         user = self.create_user(
>             email,
>             first_name=first_name,
>             last_name=last_name,
>             username=username,
>             date_of_birth=date_of_birth,
>             password=password,
>             is_superuser=True,
>             **kwargs
>         )
>         user.is_admin = True
>         user.save(using=self._db)
>         return user
>
>
> Everything works when creating a new user without any errors. But when I
> try to login I can't. So I checked the user's email and password to
> confirm. Then I noticed that the password is displayed as plain text (eg.
> *strongpassword)*, and when changed the admin form to get the hashed
> password using *ReadOnlyPasswordHashField()* I get an error inside the
> password field, even though I used *set_password()* for the Manger inside
> the *create_user()* function.
>
> *Invalid password format or unknown hashing algorithm*
>
>
> However, if I manually do *set_password('strongpassword')* for that user
> inside the console, then only the password is hashed. Could you please help
> me solve this problem. Thank you.
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAM4YLWJNGdSj-rVAuhta_UA50Cjna8zg-c14FPxK%3DtdU49mngQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAM4YLWJNGdSj-rVAuhta_UA50Cjna8zg-c14FPxK%3DtdU49mngQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> aRkadeFR
>
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/5644AE3A.5050609%40arkade.info
> <https://groups.google.com/d/msgid/django-users/5644AE3A.5050609%40arkade.info?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CALXYUb%3D-V1fqJLJSbUaPUWaYX6srAf9s0qnZ0ZrTZOv9757o2w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to