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

This commit is contained in:
ITQ
2025-03-02 02:07:52 +03:00
6 changed files with 65 additions and 4 deletions
+6
View File
@@ -10,6 +10,7 @@ from api.v1.review.auth import ReviewerAuth
from api.v1.review.views import router as review_router
from api.v1.user.views import router as user_router
from api.v1.task.views import router as task_router
from api.v1.team.views import router as team_router
router = NinjaAPI(
title="DataRush API",
@@ -43,6 +44,11 @@ router.add_router(
task_router,
auth=BearerAuth(),
)
router.add_router(
"team",
team_router,
auth=BearerAuth(),
)
for exception, handler in handlers.exception_handlers:
+15
View File
@@ -0,0 +1,15 @@
from ninja import ModelSchema, Schema
from apps.team.models import Team
class CreateTeamSchema(ModelSchema):
class Meta:
model = Team
fields = ("name", "members",)
class TeamSchemaOut(ModelSchema):
class Meta:
model = Team
fields = ("id", "name", "owner", "members", )
+39
View File
@@ -0,0 +1,39 @@
from http import HTTPStatus as status
from uuid import UUID
from django.shortcuts import get_object_or_404
from ninja import Router
from apps.team.models import Team
from api.v1.team.schemas import TeamSchemaOut, CreateTeamSchema
from api.v1.schemas import UnauthorizedError, BadRequestError, NotFoundError
router = Router()
@router.post(
"",
response={
201: TeamSchemaOut,
400: BadRequestError,
401: UnauthorizedError,
},
description="Create team. Note: members array must have team members uuid, default can be empty"
)
def create_team(request, team_data: CreateTeamSchema) -> (int, TeamSchemaOut):
team = Team(name=team_data.name, owner=request.auth)
team.members.add(request.auth)
team.save()
return 201, team
@router.get(
"{team_id}",
response={
200: TeamSchemaOut,
401: UnauthorizedError,
404: NotFoundError,
}
)
def get_team(request, team_id: UUID) -> (int, TeamSchemaOut):
return get_object_or_404(Team, pk=team_id)
+3 -2
View File
@@ -1,6 +1,6 @@
from http import HTTPStatus as status
from django.contrib.auth.hashers import check_password
from django.contrib.auth.hashers import check_password, make_password
from django.shortcuts import get_object_or_404
from ninja import Router
from ninja.errors import AuthenticationError
@@ -33,7 +33,8 @@ router = Router(tags=["user"])
auth=None,
)
def sign_up(request, data: RegisterSchema):
user = User(**data.dict())
user = User(**data.dict(exclude={"password"}))
user.password = make_password(data.password)
user.save()
token = BearerAuth.generate_jwt(user)
@@ -73,8 +73,8 @@ class Command(BaseCommand):
description=description,
start_date=start_date,
end_date=end_date,
type="solo", # assuming only one type for now
participation_type=random.choice(["edu", "competitive"]),
type=random.choice(["edu", "competitive"]), # assuming only one type for now
participation_type="solo",
)
# Add random participants
selected_users = random.sample(