From f61add82598bae0d05052b5c883e09f41393c44c Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Mon, 5 Feb 2018 17:20:18 +0000
Subject: [PATCH] Update the manager to seperate the email activation into a
 seperate method

---
 opentech/apply/funds/models.py |  2 +-
 opentech/apply/users/models.py | 11 +++++++----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py
index 341f6676c..7b368cdf4 100644
--- a/opentech/apply/funds/models.py
+++ b/opentech/apply/funds/models.py
@@ -70,7 +70,7 @@ class SubmittableStreamForm(AbstractStreamForm):
             User = get_user_model()
             email = cleaned_data.get('email')
             full_name = cleaned_data.get('full_name')
-            user = User.objects.get_or_create(
+            user, _ = User.objects.get_or_create_and_notify(
                 email=email,
                 defaults={'full_name': full_name}
             )
diff --git a/opentech/apply/users/models.py b/opentech/apply/users/models.py
index 5f69dd3c3..aea201191 100644
--- a/opentech/apply/users/models.py
+++ b/opentech/apply/users/models.py
@@ -12,15 +12,18 @@ def convert_full_name_to_parts(full_name):
 
 class UserManager(BaseUserManager):
     def get_or_create(self, defaults, **kwargs):
-        defaults.update(is_active=False)
-
+        # Allow passing of 'full_name' but replace it with actual database fields
         first_name, last_name = convert_full_name_to_parts(defaults.pop('full_name', ''))
         defaults.update(first_name=first_name, last_name=last_name)
 
-        user, created = super().get_or_create(defaults=defaults, **kwargs)
+        return super().get_or_create(defaults=defaults, **kwargs)
+
+    def get_or_create_and_notify(self, defaults=dict(), **kwargs):
+        defaults.update(is_active=False)
+        user, created = self.get_or_create(defaults=defaults, **kwargs)
         if created:
             send_activation_email(user)
-        return user
+        return user, created
 
 
 class User(AbstractUser):
-- 
GitLab