226 lines
8.4 KiB
Python
226 lines
8.4 KiB
Python
# Generated by Django 5.2.4 on 2025-08-04 07:59
|
||
|
||
import django.db.models.deletion
|
||
import django.utils.timezone
|
||
import phonenumber_field.modelfields
|
||
from django.conf import settings
|
||
from django.db import migrations, models
|
||
|
||
import employees.models
|
||
|
||
|
||
class Migration(migrations.Migration):
|
||
initial = True
|
||
|
||
dependencies = [
|
||
("auth", "0012_alter_user_first_name_max_length"),
|
||
]
|
||
|
||
operations = [
|
||
migrations.CreateModel(
|
||
name="Employee",
|
||
fields=[
|
||
(
|
||
"id",
|
||
models.BigAutoField(
|
||
auto_created=True,
|
||
primary_key=True,
|
||
serialize=False,
|
||
verbose_name="ID",
|
||
),
|
||
),
|
||
("password", models.CharField(max_length=128, verbose_name="password")),
|
||
(
|
||
"last_login",
|
||
models.DateTimeField(
|
||
blank=True, null=True, verbose_name="last login"
|
||
),
|
||
),
|
||
(
|
||
"is_superuser",
|
||
models.BooleanField(
|
||
default=False,
|
||
help_text="Designates that this user has all permissions without explicitly assigning them.",
|
||
verbose_name="superuser status",
|
||
),
|
||
),
|
||
(
|
||
"first_name",
|
||
models.CharField(
|
||
blank=True, max_length=150, verbose_name="first name"
|
||
),
|
||
),
|
||
(
|
||
"last_name",
|
||
models.CharField(
|
||
blank=True, max_length=150, verbose_name="last name"
|
||
),
|
||
),
|
||
(
|
||
"is_staff",
|
||
models.BooleanField(
|
||
default=False,
|
||
help_text="Designates whether the user can log into this admin site.",
|
||
verbose_name="staff status",
|
||
),
|
||
),
|
||
(
|
||
"is_active",
|
||
models.BooleanField(
|
||
default=True,
|
||
help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.",
|
||
verbose_name="active",
|
||
),
|
||
),
|
||
(
|
||
"date_joined",
|
||
models.DateTimeField(
|
||
default=django.utils.timezone.now, verbose_name="date joined"
|
||
),
|
||
),
|
||
(
|
||
"gender",
|
||
models.PositiveSmallIntegerField(
|
||
choices=[(1, "Мужской"), (2, "Женский"), (0, "Не указан")],
|
||
default=0,
|
||
verbose_name="Пол",
|
||
),
|
||
),
|
||
(
|
||
"avatar",
|
||
models.ImageField(upload_to="users/avatars", verbose_name="Фото"),
|
||
),
|
||
(
|
||
"phone_number",
|
||
phonenumber_field.modelfields.PhoneNumberField(
|
||
max_length=100,
|
||
region=None,
|
||
unique=True,
|
||
verbose_name="Номер телефона",
|
||
),
|
||
),
|
||
(
|
||
"patronymic",
|
||
models.CharField(
|
||
blank=True, max_length=100, verbose_name="Отчество"
|
||
),
|
||
),
|
||
(
|
||
"birth_date",
|
||
models.DateField(
|
||
blank=True, null=True, verbose_name="Дата рождения"
|
||
),
|
||
),
|
||
(
|
||
"position",
|
||
models.CharField(max_length=255, verbose_name="Должность"),
|
||
),
|
||
(
|
||
"email",
|
||
models.EmailField(
|
||
max_length=254, unique=True, verbose_name="email address"
|
||
),
|
||
),
|
||
(
|
||
"telegram",
|
||
models.CharField(
|
||
blank=True, max_length=100, verbose_name="Telegram"
|
||
),
|
||
),
|
||
(
|
||
"whatsapp",
|
||
phonenumber_field.modelfields.PhoneNumberField(
|
||
blank=True, max_length=128, region=None, verbose_name="WhatsApp"
|
||
),
|
||
),
|
||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||
("updated_at", models.DateTimeField(auto_now=True)),
|
||
(
|
||
"groups",
|
||
models.ManyToManyField(
|
||
blank=True,
|
||
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
|
||
related_name="user_set",
|
||
related_query_name="user",
|
||
to="auth.group",
|
||
verbose_name="groups",
|
||
),
|
||
),
|
||
(
|
||
"user_permissions",
|
||
models.ManyToManyField(
|
||
blank=True,
|
||
help_text="Specific permissions for this user.",
|
||
related_name="user_set",
|
||
related_query_name="user",
|
||
to="auth.permission",
|
||
verbose_name="user permissions",
|
||
),
|
||
),
|
||
],
|
||
options={
|
||
"verbose_name": "Сотрудник",
|
||
"verbose_name_plural": "Сотрудники",
|
||
"ordering": ("last_name", "first_name"),
|
||
},
|
||
managers=[
|
||
("objects", employees.models.EmployeeManager()),
|
||
],
|
||
),
|
||
migrations.CreateModel(
|
||
name="EmployeeAction",
|
||
fields=[
|
||
(
|
||
"id",
|
||
models.BigAutoField(
|
||
auto_created=True,
|
||
primary_key=True,
|
||
serialize=False,
|
||
verbose_name="ID",
|
||
),
|
||
),
|
||
(
|
||
"action",
|
||
models.CharField(
|
||
choices=[
|
||
("hired", "Принят"),
|
||
("dismissed", "Уволен"),
|
||
("on_leave", "В отпуске"),
|
||
("returned_from_leave", "Вернулся из отпуска"),
|
||
("on_maternity", "В декрете"),
|
||
("returned_from_maternity", "Вернулся из декрета"),
|
||
("transferred", "Переведен"),
|
||
("rehired", "Восстановлен"),
|
||
],
|
||
max_length=32,
|
||
verbose_name="Кадровое событие",
|
||
),
|
||
),
|
||
("date", models.DateTimeField(verbose_name="Дата действия")),
|
||
(
|
||
"comment",
|
||
models.TextField(blank=True, verbose_name="Комментарий/причина"),
|
||
),
|
||
(
|
||
"extra",
|
||
models.JSONField(
|
||
blank=True, null=True, verbose_name="Дополнительно"
|
||
),
|
||
),
|
||
(
|
||
"employee",
|
||
models.ForeignKey(
|
||
on_delete=django.db.models.deletion.CASCADE,
|
||
related_name="actions",
|
||
to=settings.AUTH_USER_MODEL,
|
||
),
|
||
),
|
||
],
|
||
options={
|
||
"verbose_name": "Кадровое событие",
|
||
"verbose_name_plural": "Кадровые события",
|
||
"ordering": ["-date"],
|
||
},
|
||
),
|
||
]
|