Merge pull request #147 from CPPAlliance/141-stub-user

Add fields and method to User model to create stub users
This commit is contained in:
Lacey Williams Henschel
2023-03-09 12:32:40 -08:00
committed by GitHub
3 changed files with 76 additions and 9 deletions

View File

@@ -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",
),
),
]

View File

@@ -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
@@ -150,6 +157,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)

View File

@@ -21,20 +21,37 @@ 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"