Files
ACORE/apps/employees/migrations/0016_employee_hr_request.py
T
lokses 3359a8db13 employees: HR-заявки, приглашения на пароль, профиль и 2FA
Модель/сервисы HR-заявок с заменами, приглашения на установку пароля
(инвайты), обновлённая страница профиля сотрудника и правки 2FA.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 18:03:32 +03:00

61 lines
4.1 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.
# Generated by Django 6.0.3 on 2026-09-01 10:18
import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('employees', '0015_password_setup_invite'),
]
operations = [
migrations.CreateModel(
name='EmployeeHrRequest',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('request_type', models.CharField(choices=[('vacation', 'Отпуск'), ('additional_vacation', 'Дополнительный отпуск'), ('sick_leave', 'Больничный'), ('day_off', 'Отгул'), ('certificate', 'Справка')], max_length=32, verbose_name='Тип')),
('date_from', models.DateField(blank=True, null=True, verbose_name='Дата с')),
('date_to', models.DateField(blank=True, null=True, verbose_name='Дата по')),
('note', models.TextField(blank=True, verbose_name='Комментарий')),
('status', models.CharField(choices=[('pending', 'На рассмотрении'), ('approved', 'Утверждено'), ('rejected', 'Отклонено'), ('cancelled', 'Отменено')], default='pending', max_length=16, verbose_name='Статус')),
('decided_at', models.DateTimeField(blank=True, null=True, verbose_name='Дата решения')),
('decision_note', models.TextField(blank=True, verbose_name='Комментарий HR')),
('decided_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='hr_requests_decided', to=settings.AUTH_USER_MODEL, verbose_name='Решение принял')),
('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hr_requests', to=settings.AUTH_USER_MODEL, verbose_name='Сотрудник')),
],
options={
'verbose_name': 'Кадровая заявка',
'verbose_name_plural': 'Кадровые заявки',
'ordering': ['-created_at'],
'indexes': [models.Index(fields=['employee', 'status'], name='employees_e_employe_283616_idx'), models.Index(fields=['status', 'request_type'], name='employees_e_status_a446a1_idx')],
},
),
migrations.CreateModel(
name='LeaveEntitlement',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('year', models.PositiveIntegerField(verbose_name='Год')),
('annual_days', models.PositiveSmallIntegerField(default=24, verbose_name='Основной отпуск, дн.')),
('additional_days', models.PositiveSmallIntegerField(default=7, verbose_name='Доп. отпуск, дн.')),
('sick_days', models.PositiveSmallIntegerField(default=30, verbose_name='Больничные, дн.')),
('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='leave_entitlements', to=settings.AUTH_USER_MODEL, verbose_name='Сотрудник')),
],
options={
'verbose_name': 'Норма отпуска',
'verbose_name_plural': 'Нормы отпусков',
'ordering': ['-year', 'employee__last_name'],
'constraints': [models.UniqueConstraint(fields=('employee', 'year'), name='unique_leave_entitlement_per_year')],
},
),
]