From 2ec460f3abf45a19f9620bdee2022ef10a62bebc Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Mon, 5 Feb 2018 09:13:21 +0000 Subject: [PATCH] Make the User model more like the other models --- opentech/apply/funds/models.py | 2 +- opentech/apply/users/models.py | 25 ++++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py index e3855d57f..439e830b1 100644 --- a/opentech/apply/funds/models.py +++ b/opentech/apply/funds/models.py @@ -69,7 +69,7 @@ class SubmittableStreamForm(AbstractStreamForm): User = get_user_model() email = cleaned_data.get('email') full_name = cleaned_data.get('full_name') - user = User.get_or_create_new( + user = User.objects.get_or_create( email=email, defaults={'full_name': full_name} ) diff --git a/opentech/apply/users/models.py b/opentech/apply/users/models.py index 8d6d47cc5..0cdbf5765 100644 --- a/opentech/apply/users/models.py +++ b/opentech/apply/users/models.py @@ -1,12 +1,23 @@ from django.db import models -from django.contrib.auth.models import AbstractUser +from django.contrib.auth.models import AbstractUser, BaseUserManager from .utils import send_activation_email +class UserManager(BaseUserManager): + def get_or_create(self, defaults, **kwargs): + defaults.update(is_active=False) + user, created = super().get_or_create(defaults=defaults, **kwargs) + if created: + send_activation_email(user) + return user + + class User(AbstractUser): full_name = models.CharField(verbose_name='Full name', max_length=255, blank=True) + objects = UserManager() + class Meta: unique_together = ('email',) @@ -18,15 +29,3 @@ class User(AbstractUser): return self.full_name.strip() return super().get_full_name() - - def get_user_by_email(self, email): - email_field = getattr(self, 'EMAIL_FIELD', 'email') - return self.objects.filter(**{email_field + '__iexact': email}) - - @classmethod - def get_or_create_new(cls, defaults, **kwargs): - defaults.update(is_active=False) - user, created = cls.objects.get_or_create(defaults=defaults, **kwargs) - if created: - send_activation_email(user) - return user -- GitLab