diff options
author | Andrew Godwin | 2022-11-05 14:17:27 -0600 |
---|---|---|
committer | Andrew Godwin | 2022-11-05 14:17:27 -0600 |
commit | d77dcf62b4005a0f36ef2fa7ba6d3651d2ef38d7 (patch) | |
tree | dd356a933b8179a22e5da6e938acd96a175ac0d6 /users/models/user.py | |
download | takahe-d77dcf62b4005a0f36ef2fa7ba6d3651d2ef38d7.tar.gz takahe-d77dcf62b4005a0f36ef2fa7ba6d3651d2ef38d7.tar.bz2 takahe-d77dcf62b4005a0f36ef2fa7ba6d3651d2ef38d7.zip |
Initial commit (users and statuses)
Diffstat (limited to 'users/models/user.py')
-rw-r--r-- | users/models/user.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/users/models/user.py b/users/models/user.py new file mode 100644 index 0000000..de51380 --- /dev/null +++ b/users/models/user.py @@ -0,0 +1,58 @@ +from typing import List + +from django.contrib.auth.models import AbstractBaseUser, BaseUserManager +from django.db import models + + +class UserManager(BaseUserManager): + """ + Custom user manager that understands emails + """ + + def create_user(self, email, password=None): + user = self.create(email=email) + if password: + user.set_password(password) + user.save() + return user + + def create_superuser(self, email, password=None): + user = self.create(email=email, admin=True) + if password: + user.set_password(password) + user.save() + return user + + +class User(AbstractBaseUser): + """ + Custom user model that only needs an email + """ + + email = models.EmailField(unique=True) + + admin = models.BooleanField(default=False) + moderator = models.BooleanField(default=False) + banned = models.BooleanField(default=False) + deleted = models.BooleanField(default=False) + + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) + + USERNAME_FIELD = "email" + EMAIL_FIELD = "email" + REQUIRED_FIELDS: List[str] = [] + + objects = UserManager() + + @property + def is_active(self): + return not (self.deleted or self.banned) + + @property + def is_superuser(self): + return self.admin + + @property + def is_staff(self): + return self.admin |