# Generated by Django 3.2.24 on 2025-06-28 14:10

import uuid

import django.db.models.deletion
import django.utils.timezone
from django.db import (
    migrations,
    models,
)

import educommon.django.db.mixins

import edu_rdm_integration.core.utils
import edu_rdm_integration.stages.export_data.helpers


class Migration(migrations.Migration):
    initial = True

    dependencies = [
        ('edu_rdm_integration_entities', '0001_initial'),
        ('function_tools', '0005_auto_20220724_0050'),
        ('async_task', '0003_alter_runningtask_options'),
        ('rdm_collect_and_export_data', '0003_auto_20250704_0725'),
    ]

    operations = [
        migrations.SeparateDatabaseAndState(
            state_operations=[
                migrations.CreateModel(
                    name='ExportingDataStage',
                    fields=[
                        (
                            'id',
                            models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
                        ),
                        (
                            'period_started_at',
                            models.DateTimeField(
                                db_index=True, verbose_name='Левая граница периода выборки данных для выгрузки'
                            ),
                        ),
                        (
                            'period_ended_at',
                            models.DateTimeField(
                                db_index=True, verbose_name='Правая граница периода выборки данных для выгрузки'
                            ),
                        ),
                        (
                            'started_at',
                            models.DateTimeField(auto_now_add=True, verbose_name='Время начала выгрузки данных'),
                        ),
                        (
                            'ended_at',
                            models.DateTimeField(
                                blank=True, null=True, verbose_name='Время завершения выгрузки данных'
                            ),
                        ),
                        (
                            'manager',
                            models.ForeignKey(
                                blank=True,
                                null=True,
                                on_delete=django.db.models.deletion.PROTECT,
                                to='function_tools.entity',
                                verbose_name='Менеджер ранера Функции',
                            ),
                        ),
                    ],
                    options={
                        'verbose_name': 'Этап формирования данных для выгрузки',
                        'verbose_name_plural': 'Этапы формирования данных для выгрузки',
                        'db_table': 'rdm_exporting_data_stage',
                    },
                    bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
                ),
                migrations.CreateModel(
                    name='ExportingDataStageStatus',
                    fields=[
                        ('title', models.TextField(verbose_name='расшифровка значения')),
                        (
                            'key',
                            models.CharField(
                                db_index=True, max_length=512, primary_key=True, serialize=False, verbose_name='ключ'
                            ),
                        ),
                        ('order_number', models.PositiveIntegerField(default=100000, verbose_name='Порядковый номер')),
                    ],
                    options={
                        'verbose_name': 'Модель-перечисление статусов этапа выгрузки данных',
                        'verbose_name_plural': 'Модели-перечисления статусов этапов выгрузки данных',
                        'db_table': 'rdm_exporting_data_stage_status',
                    },
                ),
                migrations.CreateModel(
                    name='ExportingDataSubStage',
                    fields=[
                        (
                            'id',
                            models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
                        ),
                        (
                            'started_at',
                            models.DateTimeField(
                                auto_now_add=True, db_index=True, verbose_name='Время начала сбора данных'
                            ),
                        ),
                        (
                            'ended_at',
                            models.DateTimeField(
                                blank=True, db_index=True, null=True, verbose_name='Время завершения сбора данных'
                            ),
                        ),
                        (
                            'function',
                            models.ForeignKey(
                                blank=True,
                                null=True,
                                on_delete=django.db.models.deletion.PROTECT,
                                to='function_tools.entity',
                                verbose_name='Функция',
                            ),
                        ),
                        (
                            'stage',
                            models.ForeignKey(
                                on_delete=django.db.models.deletion.CASCADE,
                                to='edu_rdm_integration_export_data_stage.exportingdatastage',
                                verbose_name='Этап выгрузки данных',
                            ),
                        ),
                    ],
                    options={
                        'verbose_name': 'Стадия выгрузки данных',
                        'verbose_name_plural': 'Стадии выгрузки данных',
                        'db_table': 'rdm_exporting_data_sub_stage',
                    },
                    bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
                ),
                migrations.CreateModel(
                    name='ExportingDataSubStageStatus',
                    fields=[
                        ('title', models.TextField(verbose_name='расшифровка значения')),
                        (
                            'key',
                            models.CharField(
                                db_index=True, max_length=512, primary_key=True, serialize=False, verbose_name='ключ'
                            ),
                        ),
                        ('order_number', models.PositiveIntegerField(default=100000, verbose_name='Порядковый номер')),
                    ],
                    options={
                        'verbose_name': 'Модель-перечисление статусов подэтапа выгрузки данных',
                        'verbose_name_plural': 'Модели-перечисления статусов подэтапов выгрузки данных',
                        'db_table': 'rdm_exporting_data_sub_stage_status',
                    },
                ),
                migrations.CreateModel(
                    name='ExportingDataSubStageEntity',
                    fields=[
                        (
                            'id',
                            models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
                        ),
                        (
                            'entity',
                            models.ForeignKey(
                                on_delete=django.db.models.deletion.PROTECT,
                                to='edu_rdm_integration_entities.regionaldatamartentityenum',
                                verbose_name='Сущность РВД',
                            ),
                        ),
                        (
                            'exporting_data_sub_stage',
                            models.ForeignKey(
                                on_delete=django.db.models.deletion.CASCADE,
                                to='edu_rdm_integration_export_data_stage.exportingdatasubstage',
                                verbose_name='Подэтап выгрузки данных',
                            ),
                        ),
                    ],
                    options={
                        'verbose_name': 'Связь сущности и подэтапа выгрузки',
                        'verbose_name_plural': 'Связи сущности и подэтапа выгрузки',
                        'db_table': 'rdm_exporting_data_sub_stage_entity',
                    },
                ),
                migrations.CreateModel(
                    name='ExportingDataSubStageAttachment',
                    fields=[
                        (
                            'id',
                            models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
                        ),
                        (
                            'attachment',
                            models.FileField(
                                blank=True,
                                max_length=512,
                                null=True,
                                upload_to=edu_rdm_integration.stages.export_data.helpers.get_exporting_data_stage_attachment_path,
                                verbose_name='Сгенерированный файл',
                            ),
                        ),
                        (
                            'operation',
                            models.SmallIntegerField(
                                choices=[(1, 'Создание'), (2, 'Изменение'), (3, 'Удаление')], verbose_name='Действие'
                            ),
                        ),
                        ('created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Дата создания')),
                        ('modified', models.DateTimeField(auto_now=True, null=True, verbose_name='Дата изменения')),
                        ('attachment_size', models.PositiveIntegerField(null=True, verbose_name='Размер файла (байт)')),
                        (
                            'exporting_data_sub_stage',
                            models.ForeignKey(
                                on_delete=django.db.models.deletion.CASCADE,
                                to='edu_rdm_integration_export_data_stage.exportingdatasubstage',
                                verbose_name='Подэтап выгрузки данных',
                            ),
                        ),
                    ],
                    options={
                        'verbose_name': 'Сгенерированный файл для дальнейшей выгрузки в "Региональная витрина данных"',
                        'verbose_name_plural': 'Сгенерированные файлы для дальнейшей выгрузки в "Региональная витрина данных"',
                        'db_table': 'rdm_exporting_data_sub_stage_attachment',
                    },
                    bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
                ),
                migrations.AddField(
                    model_name='exportingdatasubstage',
                    name='status',
                    field=models.ForeignKey(
                        default='CREATED',
                        on_delete=django.db.models.deletion.PROTECT,
                        to='edu_rdm_integration_export_data_stage.exportingdatasubstagestatus',
                        verbose_name='Статус',
                    ),
                ),
                migrations.AddField(
                    model_name='exportingdatastage',
                    name='status',
                    field=models.ForeignKey(
                        default='CREATED',
                        on_delete=django.db.models.deletion.PROTECT,
                        to='edu_rdm_integration_export_data_stage.exportingdatastagestatus',
                        verbose_name='Статус',
                    ),
                ),
                migrations.CreateModel(
                    name='EduRdmExportDataCommandProgress',
                    fields=[
                        (
                            'id',
                            models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
                        ),
                        (
                            'created',
                            models.DateTimeField(default=django.utils.timezone.now, verbose_name='Дата создания'),
                        ),
                        (
                            'period_started_at',
                            models.DateTimeField(verbose_name='Левая граница периода выборки данных для выгрузки'),
                        ),
                        (
                            'period_ended_at',
                            models.DateTimeField(verbose_name='Правая граница периода выборки данных для выгрузки'),
                        ),
                        ('generation_id', models.UUIDField(default=uuid.uuid4, verbose_name='Идентификатор генерации')),
                        (
                            'logs_link',
                            models.FileField(
                                max_length=255,
                                upload_to=edu_rdm_integration.core.utils.get_data_command_progress_attachment_path,
                                verbose_name='Файл лога',
                            ),
                        ),
                        (
                            'type',
                            models.PositiveSmallIntegerField(
                                choices=[(1, 'Автоматический'), (2, 'Ручной')], verbose_name='Тип команды'
                            ),
                        ),
                        (
                            'entity',
                            models.ForeignKey(
                                on_delete=django.db.models.deletion.PROTECT,
                                to='edu_rdm_integration_entities.regionaldatamartentityenum',
                                verbose_name='Сущность РВД',
                            ),
                        ),
                        (
                            'stage',
                            models.ForeignKey(
                                blank=True,
                                null=True,
                                on_delete=django.db.models.deletion.SET_NULL,
                                to='edu_rdm_integration_export_data_stage.exportingdatastage',
                                verbose_name='Этап выгрузки данных',
                            ),
                        ),
                        (
                            'task',
                            models.ForeignKey(
                                blank=True,
                                null=True,
                                on_delete=django.db.models.deletion.SET_NULL,
                                to='async_task.runningtask',
                                verbose_name='Асинхронная задача',
                            ),
                        ),
                    ],
                    options={
                        'verbose_name': 'Команда экспорта данных',
                        'verbose_name_plural': 'Команды экспорта данных',
                        'db_table': 'edu_rdm_exporting_data_command_progress',
                        'abstract': False,
                    },
                    bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
                ),
            ],
            database_operations=[],
        ),
    ]
