add linters
This commit is contained in:
39
cv/models.py
39
cv/models.py
@@ -1,9 +1,14 @@
|
||||
"""Модели профиля резюме, опыта и групп навыков."""
|
||||
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Profile(models.Model):
|
||||
"""Профиль пользователя с контактами и базовой информацией."""
|
||||
|
||||
GENDER_CHOICES = [
|
||||
('male', 'Мужской'),
|
||||
('female', 'Женский'),
|
||||
("male", "Мужской"),
|
||||
("female", "Женский"),
|
||||
]
|
||||
|
||||
full_name = models.CharField(max_length=200, verbose_name="ФИО")
|
||||
@@ -13,26 +18,32 @@ class Profile(models.Model):
|
||||
location = models.CharField(max_length=120, verbose_name="Местоположение")
|
||||
languages = models.JSONField(default=list, verbose_name="Языки")
|
||||
email = models.EmailField(null=True, blank=True, verbose_name="Email")
|
||||
phone = models.CharField(max_length=20, null=True, blank=True, verbose_name="Телефон")
|
||||
phone = models.CharField(max_length=20, null=True, blank=True, verbose_name="Телефон")
|
||||
telegram = models.CharField(max_length=40, null=True, blank=True, verbose_name="Telegram")
|
||||
git = models.URLField(null=True, blank=True, verbose_name="Git")
|
||||
photo = models.ImageField(upload_to='photos/', null=True, blank=True, verbose_name="Фото")
|
||||
photo = models.ImageField(upload_to="photos/", null=True, blank=True, verbose_name="Фото")
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="Дата обновления")
|
||||
|
||||
class Meta:
|
||||
"""Метаданные модели профиля для Django админки и БД."""
|
||||
|
||||
db_table = "profile"
|
||||
verbose_name = "Профиль"
|
||||
verbose_name_plural = "Профили"
|
||||
|
||||
def __str__(self):
|
||||
def __str__(self) -> str:
|
||||
"""Строковое представление профиля."""
|
||||
return self.full_name
|
||||
|
||||
|
||||
class Experience(models.Model):
|
||||
"""Запись опыта работы, связанная с профилем."""
|
||||
|
||||
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="experience", verbose_name="Профиль")
|
||||
profile = models.ForeignKey(
|
||||
Profile, on_delete=models.CASCADE, related_name="experience", verbose_name="Профиль"
|
||||
)
|
||||
|
||||
company = models.CharField(max_length=200, verbose_name="Компания")
|
||||
start_date = models.DateField(verbose_name="Дата начала")
|
||||
@@ -42,26 +53,34 @@ class Experience(models.Model):
|
||||
tech = models.JSONField(default=list, verbose_name="Технологии")
|
||||
|
||||
class Meta:
|
||||
"""Метаданные модели опыта работы: сортировка и отображение."""
|
||||
|
||||
db_table = "experience"
|
||||
ordering = ["-start_date"]
|
||||
verbose_name = "Опыт работы"
|
||||
verbose_name_plural = "Опыт работы"
|
||||
|
||||
def __str__(self):
|
||||
def __str__(self) -> str:
|
||||
"""Строковое представление записи опыта работы."""
|
||||
return f"{self.profile.full_name} - {self.company}"
|
||||
|
||||
|
||||
class SkillGroup(models.Model):
|
||||
"""Группы навыков с массивом значений, как в JSON."""
|
||||
|
||||
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="skills_map", verbose_name="Профиль")
|
||||
profile = models.ForeignKey(
|
||||
Profile, on_delete=models.CASCADE, related_name="skills_map", verbose_name="Профиль"
|
||||
)
|
||||
group = models.CharField(max_length=100, verbose_name="Группа")
|
||||
items = models.JSONField(default=list, verbose_name="Элементы")
|
||||
|
||||
class Meta:
|
||||
"""Метаданные модели группы навыков."""
|
||||
|
||||
db_table = "skill_group"
|
||||
verbose_name = "Группа навыков"
|
||||
verbose_name_plural = "Группы навыков"
|
||||
|
||||
def __str__(self):
|
||||
return self.group
|
||||
def __str__(self) -> str:
|
||||
"""Строковое представление группы навыков."""
|
||||
return self.group
|
||||
|
||||
Reference in New Issue
Block a user