From 33b081e433683d21806dc1f2306a12a4aa552755 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: Sat, 1 Mar 2025 02:35:09 +0300 Subject: [PATCH] lint: linted --- services/backend/api/v1/competition/schemas.py | 11 +++++++---- services/backend/api/v1/competition/views.py | 12 +++++------- services/backend/api/v1/router.py | 2 +- services/backend/api/v1/user/views.py | 10 +++++++--- services/backend/apps/competition/models.py | 11 +++++------ services/backend/apps/core/apps.py | 3 --- services/backend/apps/user/models.py | 4 +++- 7 files changed, 28 insertions(+), 25 deletions(-) diff --git a/services/backend/api/v1/competition/schemas.py b/services/backend/api/v1/competition/schemas.py index 47c86c1..1c5aff1 100644 --- a/services/backend/api/v1/competition/schemas.py +++ b/services/backend/api/v1/competition/schemas.py @@ -13,16 +13,17 @@ class CompetitionOut(ModelSchema): model = Competition fields = "__all__" + class StateOut(ModelSchema): class Meta: model = State - fields = ( - "state", - ) + fields = ("state",) + class StateIn(Schema): state: Literal["started", "not_started", "finished"] + class CompetitionListInstanceOut(ModelSchema): id: UUID is_participating: bool @@ -36,7 +37,9 @@ class CompetitionListInstanceOut(ModelSchema): @staticmethod def resolve_completed(self, context): user = context["request"].auth - return State.objects.filter(competition=self, user=user, state="finished").exists() + return State.objects.filter( + competition=self, user=user, state="finished" + ).exists() class Meta: model = Competition diff --git a/services/backend/api/v1/competition/views.py b/services/backend/api/v1/competition/views.py index 81ebdaf..095549c 100644 --- a/services/backend/api/v1/competition/views.py +++ b/services/backend/api/v1/competition/views.py @@ -1,12 +1,11 @@ from http import HTTPStatus as status -from typing import Literal from uuid import UUID + +from django.http import HttpRequest from django.shortcuts import get_object_or_404 -from django.http import HttpRequest, Http404 from ninja import Router import api.v1.schemas as global_schemas -from api.v1.auth import BearerAuth from api.v1.competition import schemas from apps.competition.models import Competition, State @@ -46,13 +45,14 @@ def list_competitions( competitions = Competition.objects.exclude(participants=user) return status.OK, competitions + @router.post( "competitions/{competition_id}/state", response={ status.OK: schemas.StateOut, status.BAD_REQUEST: global_schemas.BadRequestError, status.UNAUTHORIZED: global_schemas.UnauthorizedError, - } + }, ) def change_competition_state( request: HttpRequest, @@ -63,8 +63,6 @@ def change_competition_state( competition = get_object_or_404(Competition, id=competition_id) state_obj, _ = State.objects.update_or_create( - user=user, - competition=competition, - state=state.state + user=user, competition=competition, state=state.state ) return status.OK, schemas.StateOut.from_orm(state_obj) diff --git a/services/backend/api/v1/router.py b/services/backend/api/v1/router.py index 848448f..241af1e 100644 --- a/services/backend/api/v1/router.py +++ b/services/backend/api/v1/router.py @@ -13,7 +13,7 @@ router = NinjaAPI( version="1", description="API docs for DataRush", openapi_url="/docs/openapi.json", - auth=BearerAuth() + auth=BearerAuth(), ) diff --git a/services/backend/api/v1/user/views.py b/services/backend/api/v1/user/views.py index b253db9..29b27bb 100644 --- a/services/backend/api/v1/user/views.py +++ b/services/backend/api/v1/user/views.py @@ -3,9 +3,14 @@ from http import HTTPStatus as status from ninja import Router from ninja.errors import AuthenticationError -from api.v1.user.schemas import LoginSchema, RegisterSchema, TokenSchema, UserSchema from api.v1.auth import BearerAuth from api.v1.schemas import BadRequestError, ForbiddenError, NotFoundError +from api.v1.user.schemas import ( + LoginSchema, + RegisterSchema, + TokenSchema, + UserSchema, +) from apps.user.models import User router = Router(tags=["user"]) @@ -56,5 +61,4 @@ def sign_in(request, data: LoginSchema): status.NOT_FOUND: NotFoundError, }, ) -def get_user(request, user_id: str): - ... +def get_user(request, user_id: str): ... diff --git a/services/backend/apps/competition/models.py b/services/backend/apps/competition/models.py index 08538bd..644f733 100644 --- a/services/backend/apps/competition/models.py +++ b/services/backend/apps/competition/models.py @@ -3,16 +3,15 @@ from django.db import models from apps.core.models import BaseModel from apps.user.models import User + class Competition(BaseModel): class CompetitionType(models.TextChoices): SOLO = "solo" - class CompetitionParticipationType(models.TextChoices): EDU = "edu" COMPETITIVE = "competitive" - title = models.CharField(max_length=100, verbose_name="Название") description = models.TextField(verbose_name="Описание") image_url = models.FileField( @@ -43,10 +42,10 @@ class Competition(BaseModel): class State(BaseModel): class StateChoices(models.TextChoices): - NOT_STARTED = 'not_started' - STARTED = 'started' - FINISHED = 'finished' + NOT_STARTED = "not_started" + STARTED = "started" + FINISHED = "finished" user = models.ForeignKey(User, on_delete=models.CASCADE) competition = models.ForeignKey(Competition, on_delete=models.CASCADE) - state = models.CharField(choices=StateChoices.choices, max_length=11) \ No newline at end of file + state = models.CharField(choices=StateChoices.choices, max_length=11) diff --git a/services/backend/apps/core/apps.py b/services/backend/apps/core/apps.py index a37dd7d..3a9b191 100644 --- a/services/backend/apps/core/apps.py +++ b/services/backend/apps/core/apps.py @@ -1,7 +1,4 @@ -import contextlib - from django.apps import AppConfig -from django.core.cache import cache class CoreConfig(AppConfig): diff --git a/services/backend/apps/user/models.py b/services/backend/apps/user/models.py index be30d58..a84403b 100644 --- a/services/backend/apps/user/models.py +++ b/services/backend/apps/user/models.py @@ -13,7 +13,9 @@ class User(BaseModel): username = models.SlugField(unique=True, verbose_name="Юзернейм") password = models.TextField(verbose_name="Пароль") - status = models.CharField(max_length=10, choices=UserRole, default="student") + status = models.CharField( + max_length=10, choices=UserRole, default="student" + ) def __str__(self): return self.username