Merge branch 'master' of gitlab.prodcontest.ru:team-15/project

This commit is contained in:
ITQ
2025-03-01 18:19:59 +03:00
33 changed files with 740 additions and 67 deletions
+6 -6
View File
@@ -4,8 +4,8 @@ from uuid import UUID
from django.http import HttpRequest
from ninja import ModelSchema, Schema
from apps.review.models import Reviewer
from apps.task.models import CompetetionTaskSumbission
from apps.review.models import Reviewer, Review
from apps.task.models import CompetitionTaskSubmission
class PingOut(Schema):
@@ -25,13 +25,13 @@ class SubmissionOut(ModelSchema):
status: Literal["sent", "checking", "checked"]
class Meta:
model = CompetetionTaskSumbission
model = CompetitionTaskSubmission
exclude = ("user",)
class SubmissionsOut(Schema):
submissions: list[SubmissionOut] = []
submissions: list = None
@staticmethod
def resolve_submissions(self, context: HttpRequest) -> list[SubmissionOut]:
return list(CompetetionTaskSumbission.objects.all())
def resolve_submissions(self, context) -> list[SubmissionOut]:
return list(Review.objects.filter(reviewer=context.get("request").auth))
+16 -1
View File
@@ -1,10 +1,15 @@
import logging
from http import HTTPStatus as status
from uuid import UUID
from django.http import HttpRequest
from django.shortcuts import get_object_or_404
from ninja import Router
from api.v1 import schemas as global_schemas
from api.v1.review import schemas
from api.v1.task.schemas import TaskSubmissionIn
from apps.task.models import CompetitionTaskSubmission
router = Router(tags=["review"])
@@ -16,7 +21,7 @@ router = Router(tags=["review"])
},
description="Список отправок, на проверку которых назначен ревьюер"
)
def get_submissions(request: HttpRequest, token) -> tuple[status, schemas.SubmissionsOut]:
def get_submissions(request: HttpRequest, token: str) -> tuple[status, schemas.SubmissionsOut]:
return status.OK, schemas.SubmissionsOut()
@@ -30,3 +35,13 @@ def get_submissions(request: HttpRequest, token) -> tuple[status, schemas.Submis
)
def get_reviewer_profile(request: HttpRequest, token: str):
return status.OK, request.auth
@router.get(
"{token}/submissions/{submition_id}",
response={
status.OK: schemas.SubmissionOut,
},
)
def get_submission(request: HttpRequest, token: str, submition_id: UUID) -> tuple[status, schemas.SubmissionsOut]:
submission = get_object_or_404(CompetitionTaskSubmission, id=submition_id)
return status.OK, submission
+8 -8
View File
@@ -13,7 +13,7 @@ from api.v1.task.schemas import (
)
from apps.competition.models import State
from apps.task.models import (
CompetetionTaskSumbission,
CompetitionTaskSubmission,
Competition,
CompetitionTask,
)
@@ -96,23 +96,23 @@ def submit_task(
)
if task.type == CompetitionTask.CompetitionTaskType.INPUT:
CompetetionTaskSumbission.objects.create(
CompetitionTaskSubmission.objects.create(
user=user,
task=task,
status=CompetetionTaskSumbission.StatusChoices.CHECKED,
status=CompetitionTaskSubmission.StatusChoices.CHECKED,
result={"correct": submission.content == task.answer_file_path},
)
if task.type == CompetitionTask.CompetitionTaskType.REVIEW:
CompetetionTaskSumbission.objects.create(
CompetitionTaskSubmission.objects.create(
user=user,
task=task,
status=CompetetionTaskSumbission.StatusChoices.SENT,
status=CompetitionTaskSubmission.StatusChoices.SENT,
)
if task.type == CompetitionTask.CompetitionTaskType.CHECKER:
CompetetionTaskSumbission.objects.create(
CompetitionTaskSubmission.objects.create(
user=user,
task=task,
status=CompetetionTaskSumbission.StatusChoices.CHECKING,
status=CompetitionTaskSubmission.StatusChoices.CHECKING,
)
return TaskSubmissionOut(id=CompetetionTaskSumbission.id)
return TaskSubmissionOut(id=CompetitionTaskSubmission.id)
+1 -1
View File
@@ -46,7 +46,7 @@ def sign_in(request, data: LoginSchema):
user = User.objects.filter(email=data.email).first()
if not user:
raise AuthenticationError
if user.password != data.password:
if not user.check_password(data.password):
raise AuthenticationError
token = BearerAuth.generate_jwt(user)