46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from __future__ import annotations
|
||
|
||
from django.db.models import TextChoices
|
||
|
||
|
||
class RequestType(TextChoices):
|
||
"""Перечень типов заявлений (значение хранится в БД)."""
|
||
|
||
SHORT_DAY_OFF = "short_day_off", "Короткий отгул"
|
||
VACATION = "vacation", "Отпуск"
|
||
SICK_LEAVE = "sick_leave", "Больничный"
|
||
DAY_OFF = "day_off", "Отгул"
|
||
MATERNITY = "maternity", "Декрет"
|
||
TRANSFER = "transfer", "Перевод"
|
||
DISMISSAL = "dismissal", "Увольнение"
|
||
OTHER = "other", "Другое"
|
||
|
||
|
||
DAY_OFF_REQUEST_TYPES = frozenset({RequestType.DAY_OFF, RequestType.SHORT_DAY_OFF})
|
||
|
||
|
||
class RequestStatus(TextChoices):
|
||
"""Статусы жизненного цикла заявления (значение хранится в БД)."""
|
||
|
||
DRAFT = "draft", "Черновик"
|
||
PENDING = "pending", "На рассмотрении"
|
||
APPROVED = "approved", "Одобрено"
|
||
REJECTED = "rejected", "Отклонено"
|
||
CANCELLED = "cancelled", "Отменено"
|
||
|
||
|
||
class VacationFinanceStatus(TextChoices):
|
||
"""Состояние передачи согласованных условий отпуска в финансы."""
|
||
|
||
NOT_DECIDED = "not_decided", "Не решено"
|
||
SKIPPED = "skipped", "Не передавать"
|
||
PENDING = "pending", "Ожидает расчёта"
|
||
POSTED = "posted", "Передано в начисления"
|
||
|
||
|
||
FINAL_STATUS = {
|
||
RequestStatus.APPROVED,
|
||
RequestStatus.REJECTED,
|
||
RequestStatus.CANCELLED,
|
||
}
|