Add iOS method for sync
This commit is contained in:
parent
55a7168fcc
commit
93275d19b5
1 changed files with 21 additions and 1 deletions
|
|
@ -1,6 +1,6 @@
|
|||
from typing import List
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
|
||||
from app.api.deps import (
|
||||
get_current_user,
|
||||
|
|
@ -70,6 +70,26 @@ async def get_training(
|
|||
return training
|
||||
|
||||
|
||||
@router.post("/", response_model=TrainingDTO, status_code=status.HTTP_201_CREATED)
|
||||
async def create_training(
|
||||
payload: TrainingUpdate,
|
||||
user: UserDTO = Depends(get_current_user),
|
||||
repository: TrainingRepository = Depends(get_training_repository),
|
||||
user_repository: UserRepository = Depends(get_user_repository),
|
||||
):
|
||||
"""Create a training. Only a superuser may create it for another trainee."""
|
||||
if payload.trainee_id != user.id:
|
||||
if not user.is_superuser:
|
||||
raise HTTPException(
|
||||
status_code=403, detail="Only a superuser can create a training for another user"
|
||||
)
|
||||
await _check_participant(user_repository, payload.trainee_id, UserRole.trainee)
|
||||
if payload.trainer_id is not None:
|
||||
await _check_participant(user_repository, payload.trainer_id, UserRole.trainer)
|
||||
training_id = await repository.save(TrainingDTO.model_validate(payload.model_dump()))
|
||||
return await repository.get(training_id)
|
||||
|
||||
|
||||
@router.put("/{training_id}/", response_model=TrainingDTO)
|
||||
async def update_training(
|
||||
training_id: int,
|
||||
|
|
|
|||
Loading…
Reference in a new issue