Corp/backend/tasks/migrations/0001_initial.py
2026-07-06 13:47:03 +03:00

111 lines
6.8 KiB
Python

# Generated by Django 5.2.4 on 2026-07-06 07:50
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('employees', '0054_employee_id_guest_range_guard'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='TaskBoard',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, verbose_name='Название')),
('description', models.TextField(blank=True, verbose_name='Описание')),
('is_archived', models.BooleanField(default=False, verbose_name='Архивная')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Обновлено')),
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='created_task_boards', to=settings.AUTH_USER_MODEL, verbose_name='Создал')),
('departments', models.ManyToManyField(blank=True, related_name='task_boards', to='employees.department', verbose_name='Отделы')),
('members', models.ManyToManyField(blank=True, related_name='task_boards', to=settings.AUTH_USER_MODEL, verbose_name='Участники')),
],
options={
'verbose_name': 'Доска задач',
'verbose_name_plural': 'Доски задач',
'ordering': ['name', 'id'],
},
),
migrations.CreateModel(
name='TaskColumn',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=120, verbose_name='Название')),
('position', models.PositiveIntegerField(default=0, verbose_name='Позиция')),
('color', models.CharField(blank=True, max_length=32, verbose_name='Цвет')),
('is_done', models.BooleanField(default=False, verbose_name='Финальная колонка')),
('is_archived', models.BooleanField(default=False, verbose_name='Архивная')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Обновлено')),
('board', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='columns', to='tasks.taskboard', verbose_name='Доска')),
],
options={
'verbose_name': 'Колонка задач',
'verbose_name_plural': 'Колонки задач',
'ordering': ['position', 'id'],
},
),
migrations.CreateModel(
name='TaskLabel',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=80, verbose_name='Название')),
('color', models.CharField(default='#38bdf8', max_length=32, verbose_name='Цвет')),
('board', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='labels', to='tasks.taskboard', verbose_name='Доска')),
],
options={
'verbose_name': 'Метка задачи',
'verbose_name_plural': 'Метки задач',
'ordering': ['name', 'id'],
},
),
migrations.CreateModel(
name='Task',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='Название')),
('description', models.TextField(blank=True, verbose_name='Описание')),
('priority', models.CharField(choices=[('low', 'Низкий'), ('medium', 'Средний'), ('high', 'Высокий'), ('critical', 'Критический')], default='medium', max_length=20, verbose_name='Приоритет')),
('due_date', models.DateField(blank=True, null=True, verbose_name='Срок')),
('position', models.PositiveIntegerField(default=0, verbose_name='Позиция')),
('completed_at', models.DateTimeField(blank=True, null=True, verbose_name='Завершено')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Создано')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Обновлено')),
('assignee', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_tasks', to=settings.AUTH_USER_MODEL, verbose_name='Исполнитель')),
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='created_tasks', to=settings.AUTH_USER_MODEL, verbose_name='Создал')),
('board', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='tasks.taskboard', verbose_name='Доска')),
('column', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='tasks', to='tasks.taskcolumn', verbose_name='Колонка')),
('labels', models.ManyToManyField(blank=True, related_name='tasks', to='tasks.tasklabel', verbose_name='Метки')),
],
options={
'verbose_name': 'Задача',
'verbose_name_plural': 'Задачи',
'ordering': ['position', '-created_at', 'id'],
},
),
migrations.AddConstraint(
model_name='taskcolumn',
constraint=models.UniqueConstraint(fields=('board', 'name'), name='uniq_task_column_board_name'),
),
migrations.AddConstraint(
model_name='tasklabel',
constraint=models.UniqueConstraint(fields=('board', 'name'), name='uniq_task_label_board_name'),
),
migrations.AddIndex(
model_name='task',
index=models.Index(fields=['board', 'column', 'position'], name='tasks_task_board_i_6021b0_idx'),
),
migrations.AddIndex(
model_name='task',
index=models.Index(fields=['assignee', 'due_date'], name='tasks_task_assigne_5c11c7_idx'),
),
]