Add initial implementations for forms and organization apps with serializers, factories, and admin configurations
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 45s
CI/CD Pipeline / Code Quality Checks (push) Failing after 48s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped

This commit is contained in:
2026-03-28 18:23:06 +01:00
parent 8ed3e1175c
commit 345b1d0cc8
201 changed files with 15097 additions and 6691 deletions

View File

@@ -13,17 +13,17 @@ class User(AbstractUser):
# Переопределяем группы и разрешения для избежания конфликта
groups = models.ManyToManyField(
"auth.Group",
verbose_name=_("groups"),
verbose_name="groups",
blank=True,
help_text=_(""),
help_text="",
related_name="custom_user_set",
related_query_name="custom_user",
)
user_permissions = models.ManyToManyField(
"auth.Permission",
verbose_name=_("user permissions"),
verbose_name="user permissions",
blank=True,
help_text=_("Specific permissions for this user."),
help_text="Specific permissions for this user.",
related_name="custom_user_set",
related_query_name="custom_user",
)
@@ -50,8 +50,8 @@ class User(AbstractUser):
updated_at = models.DateTimeField(_("updated at"), auto_now=True)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["username"]
USERNAME_FIELD = "username"
REQUIRED_FIELDS = ["email"]
class Meta:
db_table = "users"
@@ -72,6 +72,8 @@ class Profile(models.Model):
first_name = models.CharField(_("first name"), max_length=50, blank=True, null=True)
mid_name = models.CharField(_("middle name"), max_length=50, blank=True, null=True)
last_name = models.CharField(_("last name"), max_length=50, blank=True, null=True)
bio = models.TextField(
@@ -104,10 +106,6 @@ class Profile(models.Model):
@property
def full_name(self):
"""Полное имя пользователя"""
if self.first_name and self.last_name:
return f"{self.first_name} {self.last_name}"
elif self.first_name:
return self.first_name
elif self.last_name:
return self.last_name
return self.user.username
parts = [self.first_name, self.mid_name, self.last_name]
full_name = " ".join(part for part in parts if part)
return full_name or self.user.username