From 3f2cceb76480111e4b9270106f3a83e1d8929f77 Mon Sep 17 00:00:00 2001 From: Lacey Williams Henschel Date: Thu, 9 Mar 2023 12:00:32 -0800 Subject: [PATCH 1/3] :bank: Add claimed and valid_email --- users/migrations/0008_auto_20230308_2245.py | 31 +++++++++++++++++++++ users/models.py | 12 ++++++++ 2 files changed, 43 insertions(+) create mode 100644 users/migrations/0008_auto_20230308_2245.py diff --git a/users/migrations/0008_auto_20230308_2245.py b/users/migrations/0008_auto_20230308_2245.py new file mode 100644 index 00000000..47eb0b90 --- /dev/null +++ b/users/migrations/0008_auto_20230308_2245.py @@ -0,0 +1,31 @@ +# Generated by Django 3.2.2 on 2023-03-08 22:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("users", "0007_user_image"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="claimed", + field=models.BooleanField( + default=True, + help_text="Designates whether this user has been claimed.", + verbose_name="claimed", + ), + ), + migrations.AddField( + model_name="user", + name="valid_email", + field=models.BooleanField( + default=True, + help_text="Designates whether this user's email address is valid, to the best of our knowledge.", + verbose_name="valid_email", + ), + ), + ] diff --git a/users/models.py b/users/models.py index 05f1b759..67a86344 100644 --- a/users/models.py +++ b/users/models.py @@ -150,6 +150,18 @@ class User(BaseUser): badges = models.ManyToManyField(Badge) github_username = models.CharField(_("github username"), max_length=100, blank=True) image = models.FileField(upload_to="profile-images", null=True, blank=True) + claimed = models.BooleanField( + _("claimed"), + default=True, + help_text=_("Designates whether this user has been claimed."), + ) + valid_email = models.BooleanField( + _("valid_email"), + default=True, + help_text=_( + "Designates whether this user's email address is valid, to the best of our knowledge." + ), + ) def save_image_from_github(self, avatar_url): response = requests.get(avatar_url) From 37d6dbbb76ee93e6e9c5d3a7e8a95be88251bcfb Mon Sep 17 00:00:00 2001 From: Lacey Williams Henschel Date: Thu, 9 Mar 2023 12:17:18 -0800 Subject: [PATCH 2/3] :sparkles: Add method to create stub user --- users/models.py | 7 +++++++ users/tests/test_managers.py | 31 ++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/users/models.py b/users/models.py index 67a86344..e1f14dbd 100644 --- a/users/models.py +++ b/users/models.py @@ -58,6 +58,13 @@ class UserManager(BaseUserManager): logger.info("Creating superuser with email='%s'", email) return self._create_user(email, password, **extra_fields) + def create_stub_user(self, email, password=None, claimed=False, **extra_fields): + """Creates a placeholder ("stub") user.""" + extra_fields.setdefault("is_staff", False) + extra_fields.setdefault("is_superuser", False) + logger.info("Creating stub user with email='%s'", email) + return self._create_user(email, password, claimed=claimed, **extra_fields) + def record_login(self, user=None, email=None): """ Record a succesful login to last_login for the user by user diff --git a/users/tests/test_managers.py b/users/tests/test_managers.py index 38d4c25b..145cecdb 100644 --- a/users/tests/test_managers.py +++ b/users/tests/test_managers.py @@ -21,20 +21,33 @@ def test_record_login_user(user): def test_user_creation(db): u = User.objects.create_user("t1@example.com", "t1pass") - assert u.is_active == True - assert u.is_staff == False - assert u.is_superuser == False + assert u.is_active is True + assert u.is_staff is False + assert u.is_superuser is False def test_staff_user_creation(db): u = User.objects.create_staffuser("t2@example.com", "t2pass") - assert u.is_active == True - assert u.is_staff == True - assert u.is_superuser == False + assert u.is_active is True + assert u.is_staff is True + assert u.is_superuser is False def test_super_user_creation(db): u = User.objects.create_superuser("t3@example.com", "t3pass") - assert u.is_active == True - assert u.is_staff == True - assert u.is_superuser == True + assert u.is_active is True + assert u.is_staff is True + assert u.is_superuser is True + + +def test_create_stub_user(db): + u = User.objects.create_stub_user( + "t4@example.com", None, first_name="Tester", last_name="Testerson", valid_email=False + ) + assert u.claimed is False + assert u.valid_email is False + assert u.is_active is True + assert u.is_staff is False + assert u.is_superuser is False + assert u.first_name == "Tester" + assert u.last_name == "Testerson" From f8d2910c1d873233d00ec292e3ddf1adb18f6f7c Mon Sep 17 00:00:00 2001 From: Lacey Williams Henschel Date: Thu, 9 Mar 2023 12:23:12 -0800 Subject: [PATCH 3/3] :tshirt: Linter --- users/tests/test_managers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/users/tests/test_managers.py b/users/tests/test_managers.py index 145cecdb..092f11c1 100644 --- a/users/tests/test_managers.py +++ b/users/tests/test_managers.py @@ -42,7 +42,11 @@ def test_super_user_creation(db): def test_create_stub_user(db): u = User.objects.create_stub_user( - "t4@example.com", None, first_name="Tester", last_name="Testerson", valid_email=False + "t4@example.com", + None, + first_name="Tester", + last_name="Testerson", + valid_email=False, ) assert u.claimed is False assert u.valid_email is False