# 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" ), ), ]