From 21856540015b19e42e24243ca9e6a27905e677f8 Mon Sep 17 00:00:00 2001 From: ITQ Date: Mon, 3 Mar 2025 15:44:44 +0300 Subject: [PATCH 1/4] (scope): [body] [footer(s)] --- infrastructure/grafana/grafana.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infrastructure/grafana/grafana.ini b/infrastructure/grafana/grafana.ini index d3b08d5..9c79e84 100644 --- a/infrastructure/grafana/grafana.ini +++ b/infrastructure/grafana/grafana.ini @@ -41,7 +41,7 @@ http_addr = http_port = 3000 # The public facing domain name used to access grafana from a browser -domain = prod-team-15-2pc0i3lc.final.prodcontest.ru +domain = localhost # Redirect to correct domain if host header does not match domain # Prevents DNS rebinding attacks From 1a23cefa1a5ff1075b4a2e526b6eeb1901e260e3 Mon Sep 17 00:00:00 2001 From: ITQ Date: Mon, 3 Mar 2025 15:47:20 +0300 Subject: [PATCH 2/4] (scope): [body] [footer(s)] --- services/backend/api/v1/task/views.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/backend/api/v1/task/views.py b/services/backend/api/v1/task/views.py index d34d88e..f2e93c9 100644 --- a/services/backend/api/v1/task/views.py +++ b/services/backend/api/v1/task/views.py @@ -109,7 +109,9 @@ def submit_task( user=user, achievement=first_steps_achievement ) - total_attempts = CompetitionTaskSubmission.objects.filter(user=user, task=task).count() + total_attempts = CompetitionTaskSubmission.objects.filter( + user=user, task=task + ).count() if task.max_attempts == total_attempts: return status.FORBIDDEN, ForbiddenError() @@ -118,8 +120,10 @@ def submit_task( user=user, task=task, status=CompetitionTaskSubmission.StatusChoices.CHECKED, - result={"correct": content == task.answer_file_path}, content=content, + result={ + "correct": content.read() == task.correct_answer_file.read() + }, ) if task.type == CompetitionTask.CompetitionTaskType.REVIEW: submission = CompetitionTaskSubmission.objects.create( From 06ca9979b658bef39e46982f8229a8eef0da9f8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=A1=D1=83=D0=BC?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Mon, 3 Mar 2025 15:49:33 +0300 Subject: [PATCH 3/4] fix: fixed files --- .../core/management/commands/generate_pretty_data.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/backend/apps/core/management/commands/generate_pretty_data.py b/services/backend/apps/core/management/commands/generate_pretty_data.py index 23d9f22..2a9da0a 100644 --- a/services/backend/apps/core/management/commands/generate_pretty_data.py +++ b/services/backend/apps/core/management/commands/generate_pretty_data.py @@ -4,7 +4,7 @@ from datetime import timedelta, datetime from django.conf import settings from django.contrib.auth.hashers import make_password -from django.core.files.base import ContentFile +from django.core.files.base import ContentFile, File from django.core.management.base import BaseCommand from django.utils import timezone @@ -229,12 +229,12 @@ reviewers = [ { "name": "Владислав", "surname": "Пикиневич", - "token": "pikinevich" + "token": "aa443163-9861-4b8d-b8f7-81ecd25f6088" }, { "name": "Александр", "surname": "Шахов", - "token": "ashakhov" + "token": "d2e8904a-01dd-4f84-a8b0-8a60f1a3b6c0" } ] @@ -357,7 +357,8 @@ class Command(BaseCommand): content_dir = f"{settings.BASE_DIR}/apps/core/contents" with open(f"{content_dir}/presentation.pptx", "rb") as f: - files = [f, f, dummy_content_txt] + pptx = File(f, name="presentation.pptx") + files = [pptx, pptx, dummy_content_txt] submission = CompetitionTaskSubmission.objects.create( user=user, task=task, From 87b1887552f497596cd8bdac750107249088bb11 Mon Sep 17 00:00:00 2001 From: ITQ Date: Mon, 3 Mar 2025 15:58:55 +0300 Subject: [PATCH 4/4] (scope): [body] [footer(s)] --- services/backend/api/v1/task/views.py | 4 +++- services/backend/apps/task/tasks.py | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/backend/api/v1/task/views.py b/services/backend/api/v1/task/views.py index f2e93c9..10a2785 100644 --- a/services/backend/api/v1/task/views.py +++ b/services/backend/api/v1/task/views.py @@ -116,14 +116,16 @@ def submit_task( return status.FORBIDDEN, ForbiddenError() if task.type == CompetitionTask.CompetitionTaskType.INPUT: + verdict = content.read() == task.correct_answer_file.read() submission = CompetitionTaskSubmission.objects.create( user=user, task=task, status=CompetitionTaskSubmission.StatusChoices.CHECKED, content=content, result={ - "correct": content.read() == task.correct_answer_file.read() + "correct": verdict }, + earned_points=task.points ) if task.type == CompetitionTask.CompetitionTaskType.REVIEW: submission = CompetitionTaskSubmission.objects.create( diff --git a/services/backend/apps/task/tasks.py b/services/backend/apps/task/tasks.py index 86588f4..4032da1 100644 --- a/services/backend/apps/task/tasks.py +++ b/services/backend/apps/task/tasks.py @@ -41,11 +41,11 @@ def analyze_data_task(self, submission_id): submission.stdout.save("output.txt", ContentFile(result["output"])) submission.result = { "correct": result["hash_match"], - "result_hash": result["result_hash"], + "hash_match": result["hash_match"], "error": result.get("error"), } submission.earned_points = ( - submission.task.points if result["hash_match"] else 0 + submission.task.points if result["correct"] else 0 ) submission.status = CompetitionTaskSubmission.StatusChoices.CHECKED