mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-23 16:47:10 +00:00
Merge branch 'master' of gitlab.prodcontest.ru:team-15/project
This commit is contained in:
@@ -10,6 +10,7 @@ from api.v1.review.auth import ReviewerAuth
|
|||||||
from api.v1.review.views import router as review_router
|
from api.v1.review.views import router as review_router
|
||||||
from api.v1.user.views import router as user_router
|
from api.v1.user.views import router as user_router
|
||||||
from api.v1.task.views import router as task_router
|
from api.v1.task.views import router as task_router
|
||||||
|
from api.v1.team.views import router as team_router
|
||||||
|
|
||||||
router = NinjaAPI(
|
router = NinjaAPI(
|
||||||
title="DataRush API",
|
title="DataRush API",
|
||||||
@@ -43,6 +44,11 @@ router.add_router(
|
|||||||
task_router,
|
task_router,
|
||||||
auth=BearerAuth(),
|
auth=BearerAuth(),
|
||||||
)
|
)
|
||||||
|
router.add_router(
|
||||||
|
"team",
|
||||||
|
team_router,
|
||||||
|
auth=BearerAuth(),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
for exception, handler in handlers.exception_handlers:
|
for exception, handler in handlers.exception_handlers:
|
||||||
|
|||||||
@@ -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", )
|
||||||
@@ -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)
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
from http import HTTPStatus as status
|
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 django.shortcuts import get_object_or_404
|
||||||
from ninja import Router
|
from ninja import Router
|
||||||
from ninja.errors import AuthenticationError
|
from ninja.errors import AuthenticationError
|
||||||
@@ -33,7 +33,8 @@ router = Router(tags=["user"])
|
|||||||
auth=None,
|
auth=None,
|
||||||
)
|
)
|
||||||
def sign_up(request, data: RegisterSchema):
|
def sign_up(request, data: RegisterSchema):
|
||||||
user = User(**data.dict())
|
user = User(**data.dict(exclude={"password"}))
|
||||||
|
user.password = make_password(data.password)
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
token = BearerAuth.generate_jwt(user)
|
token = BearerAuth.generate_jwt(user)
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ class Command(BaseCommand):
|
|||||||
description=description,
|
description=description,
|
||||||
start_date=start_date,
|
start_date=start_date,
|
||||||
end_date=end_date,
|
end_date=end_date,
|
||||||
type="solo", # assuming only one type for now
|
type=random.choice(["edu", "competitive"]), # assuming only one type for now
|
||||||
participation_type=random.choice(["edu", "competitive"]),
|
participation_type="solo",
|
||||||
)
|
)
|
||||||
# Add random participants
|
# Add random participants
|
||||||
selected_users = random.sample(
|
selected_users = random.sample(
|
||||||
|
|||||||
Reference in New Issue
Block a user