This repository has been archived on 2023-09-24. You can view files and clone it, but cannot push or open issues or pull requests.
takahe/users/models/user.py

69 lines
1.7 KiB
Python
Raw Normal View History

2022-12-17 00:38:52 +01:00
import urlman
2022-11-05 21:17:27 +01:00
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)
last_seen = models.DateTimeField(auto_now_add=True)
2022-11-05 21:17:27 +01:00
USERNAME_FIELD = "email"
EMAIL_FIELD = "email"
REQUIRED_FIELDS: list[str] = []
2022-11-05 21:17:27 +01:00
objects = UserManager()
2022-12-17 00:38:52 +01:00
class urls(urlman.Urls):
admin = "/admin/users/"
admin_edit = "{admin}{self.pk}/"
2022-11-05 21:17:27 +01:00
@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
2022-11-06 00:51:54 +01:00
def has_module_perms(self, module):
return self.admin
def has_perm(self, perm):
return self.admin