Files
links/backend/users/models.py
2025-05-06 20:44:33 +09:00

102 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
"""
Пользовательская модель, расширяющая стандартную AbstractUser.
"""
full_name = models.CharField(
max_length=150,
blank=True,
help_text='Полное имя пользователя'
)
bio = models.TextField(
blank=True,
help_text='Краткая биография пользователя'
)
avatar = models.ImageField(
upload_to='avatars/',
null=True,
blank=True,
help_text='Аватар пользователя'
)
cover = models.ImageField(
upload_to='avatars/covers/',
null=True,
blank=True,
)
def __str__(self):
return self.username
def get_full_name(self):
"""
Возвращает полное имя пользователя.
"""
return self.full_name if self.full_name else self.username
def get_short_name(self):
"""
Возвращает короткое имя пользователя.
"""
return self.username
def get_bio(self):
"""
Возвращает биографию пользователя.
"""
return self.bio if self.bio else "Нет информации о пользователе"
def get_avatar(self):
"""
Возвращает URL аватара пользователя.
"""
return self.avatar.url if self.avatar else None
def get_user_info(self):
"""
Возвращает словарь с информацией о пользователе.
"""
return {
'username': self.username,
'full_name': self.get_full_name(),
'bio': self.get_bio(),
'avatar': self.get_avatar()
}
def get_user_links(self):
"""
Возвращает список ссылок пользователя.
"""
from links.models import Link
return Link.objects.filter(group__owner=self).values('title', 'url')
def get_user_design(self):
"""
Возвращает настройки дизайна пользователя.
"""
from customization.models import DesignSettings
try:
design = DesignSettings.objects.get(user=self)
return {
'theme_color': design.theme_color,
'background_image': design.background_image.url if design.background_image else None,
'font_family': design.font_family,
'custom_css': design.custom_css
}
except DesignSettings.DoesNotExist:
return None
def get_user_groups(self):
"""
Возвращает группы пользователя.
"""
return list(self.link_groups.values('title', 'order'))
def get_user_permissions(self):
"""
Возвращает разрешения пользователя.
"""
return list(self.user_permissions.values_list('codename', flat=True))