28 lines
1007 B
Python
28 lines
1007 B
Python
from django.contrib.auth.models import AbstractUser
|
|
from django.db import models
|
|
|
|
class User(AbstractUser):
|
|
class Role(models.TextChoices):
|
|
ADMIN = "admin", "Администратор"
|
|
WORKER = "worker", "Исполнитель"
|
|
|
|
role = models.CharField(max_length=16, choices=Role.choices, default=Role.WORKER)
|
|
must_change_password = models.BooleanField(default=True)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
@property
|
|
def is_app_admin(self):
|
|
return self.is_superuser or self.role == self.Role.ADMIN
|
|
|
|
def save(self, *args, **kwargs):
|
|
if self.role == self.Role.ADMIN:
|
|
self.is_staff = True
|
|
super().save(*args, **kwargs)
|
|
|
|
def has_perm(self, perm, obj=None):
|
|
return True if self.is_app_admin else super().has_perm(perm, obj)
|
|
|
|
def has_module_perms(self, app_label):
|
|
return True if self.is_app_admin else super().has_module_perms(app_label)
|