diff --git a/services/backend/apps/competition/migrations/0003_remove_competition_tasks.py b/services/backend/apps/competition/migrations/0003_remove_competition_tasks.py new file mode 100644 index 0000000..b03500b --- /dev/null +++ b/services/backend/apps/competition/migrations/0003_remove_competition_tasks.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.6 on 2025-03-01 13:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('competition', '0002_competition_tasks_alter_competition_participants_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='competition', + name='tasks', + ), + ] diff --git a/services/backend/apps/task/migrations/0003_competitiontask_max_attemps_and_more.py b/services/backend/apps/task/migrations/0003_competitiontask_max_attemps_and_more.py new file mode 100644 index 0000000..039cbdf --- /dev/null +++ b/services/backend/apps/task/migrations/0003_competitiontask_max_attemps_and_more.py @@ -0,0 +1,51 @@ +# Generated by Django 5.1.6 on 2025-03-01 13:49 + +import apps.task.models +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('competition', '0003_remove_competition_tasks'), + ('task', '0002_alter_competitiontask_options_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='competitiontask', + name='max_attemps', + field=models.PositiveSmallIntegerField(default=0), + ), + migrations.AlterField( + model_name='competitiontask', + name='answer_file_path', + field=models.TextField(blank=True, default='stdout', null=True, verbose_name='куда сохранять решения'), + ), + migrations.AlterField( + model_name='competitiontask', + name='competition', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='competition.competition'), + ), + migrations.AlterField( + model_name='competitiontask', + name='correct_answer_file', + field=models.FileField(blank=True, null=True, upload_to=apps.task.models.CompetitionTask.answer_file_upload_to, verbose_name='файл с правильным ответом'), + ), + migrations.AlterField( + model_name='competitiontask', + name='criteries', + field=models.JSONField(blank=True, null=True, verbose_name='критерии'), + ), + migrations.AlterField( + model_name='competitiontask', + name='title', + field=models.CharField(max_length=50, verbose_name='заголовок'), + ), + migrations.AlterField( + model_name='competitiontask', + name='type', + field=models.CharField(choices=[('input', 'Ввод правильного ответа'), ('checker', 'Вывод кода'), ('review', 'Ручная')], max_length=8, verbose_name='тип проверки'), + ), + ] diff --git a/services/backend/apps/task/models.py b/services/backend/apps/task/models.py index e03a31e..72bb349 100644 --- a/services/backend/apps/task/models.py +++ b/services/backend/apps/task/models.py @@ -20,7 +20,7 @@ class CompetitionTask(BaseModel): competition = models.ForeignKey(Competition, on_delete=models.CASCADE) title = models.CharField(verbose_name="заголовок", max_length=50) description = models.TextField(verbose_name="описание", max_length=300) - max_attemps = models.PositiveSmallIntegerField() + max_attemps = models.PositiveSmallIntegerField(default=0) type = models.CharField( choices=CompetitionTaskType, max_length=8, verbose_name="тип проверки" ) @@ -50,14 +50,6 @@ class CompetitionTask(BaseModel): blank=True, null=True, verbose_name="критерии", - default=lambda: [ - { - "name": "CHANGE ME", - "slug": "CHANGE ME", - "max_value": 0, - "min_value": 0, - } - ], ) def clean(self):