mirror of
https://github.com/boostorg/website-v2.git
synced 2026-02-27 05:32:08 +00:00
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:
31
users/migrations/0008_auto_20230308_2245.py
Normal file
31
users/migrations/0008_auto_20230308_2245.py
Normal 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",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user