This commit is contained in:
2025-10-28 03:21:01 +01:00
parent 10796dcb31
commit 73da41b514
44 changed files with 1868 additions and 452 deletions

View File

@@ -34,37 +34,41 @@ class CustomUser(SoftDeleteModel, AbstractUser):
related_query_name="customuser",
)
ROLE_CHOICES = (
('admin', 'Administrátor'),
('user', 'Uživatel'),
)
role = models.CharField(max_length=32, choices=ROLE_CHOICES, null=True, blank=True)
class Role(models.TextChoices):
ADMIN = "admin", "Admin"
MANAGER = "mod", "Moderator"
CUSTOMER = "regular", "Regular"
"""ACCOUNT_TYPES = (
('company', 'Firma'),
('individual', 'Fyzická osoba')
)
account_type = models.CharField(max_length=32, choices=ACCOUNT_TYPES, null=True, blank=True)"""
role = models.CharField(max_length=20, choices=Role.choices, default=Role.CUSTOMER)
email_verified = models.BooleanField(default=False)
phone_number = models.CharField(
null=True,
blank=True,
unique=True,
max_length=16,
blank=True,
validators=[RegexValidator(r'^\+?\d{9,15}$', message="Zadejte platné telefonní číslo.")]
)
email_verified = models.BooleanField(default=False)
email = models.EmailField(unique=True, db_index=True)
gdpr = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
create_time = models.DateTimeField(auto_now_add=True)
city = models.CharField(null=True, blank=True, max_length=100)
street = models.CharField(null=True, blank=True, max_length=200)
postal_code = models.CharField(
max_length=5,
blank=True,
null=True,
max_length=5,
validators=[
RegexValidator(
regex=r'^\d{5}$',
@@ -73,11 +77,11 @@ class CustomUser(SoftDeleteModel, AbstractUser):
)
]
)
gdpr = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
REQUIRED_FIELDS = ['email', "username", "password"]
USERNAME_FIELD = "username"
REQUIRED_FIELDS = [
"email"
]
def __str__(self):
@@ -91,6 +95,10 @@ class CustomUser(SoftDeleteModel, AbstractUser):
def save(self, *args, **kwargs):
if self.pk is None: # if newely created user
from django.contrib.auth.models import Group
group, _ = Group.objects.get_or_create(name=self.role)
self.groups.set([group])
if self.is_superuser or self.role == "admin":
self.is_active = True
@@ -105,5 +113,5 @@ class CustomUser(SoftDeleteModel, AbstractUser):
self.is_staff = False
return super().save(*args, **kwargs)