From 24d9e616bcba60810ab080962c6240e6122f86a6 Mon Sep 17 00:00:00 2001 From: Timur Date: Sun, 2 Mar 2025 11:52:07 +0300 Subject: [PATCH] add attachments model --- ...02_competitiontask_attachments_and_more.py | 40 +++++++++++++++++++ services/backend/apps/task/models.py | 13 ++++-- 2 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 services/backend/apps/task/migrations/0002_competitiontask_attachments_and_more.py diff --git a/services/backend/apps/task/migrations/0002_competitiontask_attachments_and_more.py b/services/backend/apps/task/migrations/0002_competitiontask_attachments_and_more.py new file mode 100644 index 0000000..9f88f60 --- /dev/null +++ b/services/backend/apps/task/migrations/0002_competitiontask_attachments_and_more.py @@ -0,0 +1,40 @@ +# Generated by Django 5.1.6 on 2025-03-02 08:50 + +import apps.task.models +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('task', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='competitiontask', + name='attachments', + field=models.ManyToManyField(blank=True, related_name='tasks_attachments', to='task.competitiontaskattachment'), + ), + migrations.AlterField( + model_name='competitiontaskattachment', + name='bind_at', + field=models.FilePathField(verbose_name='путь сохранения'), + ), + migrations.AlterField( + model_name='competitiontaskattachment', + name='file', + field=models.FileField(upload_to=apps.task.models.CompetitionTaskAttachment.file_upload_at, verbose_name='файл'), + ), + migrations.AlterField( + model_name='competitiontaskattachment', + name='public', + field=models.BooleanField(default=False, verbose_name='публичный'), + ), + migrations.AlterField( + model_name='competitiontaskattachment', + name='task', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='task.competitiontask', verbose_name='задание'), + ), + ] diff --git a/services/backend/apps/task/models.py b/services/backend/apps/task/models.py index dd618e1..77a798f 100644 --- a/services/backend/apps/task/models.py +++ b/services/backend/apps/task/models.py @@ -48,6 +48,9 @@ class CompetitionTask(BaseModel): default="stdout", ) + attachments = models.ManyToManyField("CompetitionTaskAttachment", blank=True, + related_name="tasks_attachments") + def __str__(self): return self.title @@ -71,10 +74,12 @@ class CompetitionTaskAttachment(BaseModel): def file_upload_at(instance, filename): return f"/attachment/{instance.id}/file" - task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE) - file = models.FileField(upload_to=file_upload_at) - bind_at = models.FilePathField() - public = models.BooleanField(default=False) + task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE, + verbose_name="задание") + file = models.FileField(upload_to=file_upload_at, + verbose_name="файл") + bind_at = models.FilePathField(verbose_name="путь сохранения") + public = models.BooleanField(default=False, verbose_name="публичный") class CompetitionTaskSubmission(BaseModel):