✨ Improved ClassQuizController
This commit is contained in:
@@ -8,7 +8,7 @@ from fastapi import APIRouter, Depends, HTTPException
|
||||
from pydantic import BaseModel
|
||||
|
||||
from classquiz.auth import get_current_user
|
||||
from classquiz.db.models import User, Controllers
|
||||
from classquiz.db.models import User, Controller
|
||||
from classquiz.config import redis
|
||||
from classquiz.helpers.box_controller import generate_code
|
||||
|
||||
@@ -32,7 +32,7 @@ async def set_controller_up(
|
||||
code = generate_code(10)
|
||||
if input_data.player_name is None:
|
||||
input_data.player_name = user.username
|
||||
data = Controllers(
|
||||
data = Controller(
|
||||
id=uuid.uuid4(),
|
||||
user=user,
|
||||
secret_key=os.urandom(12).hex(),
|
||||
@@ -47,12 +47,12 @@ async def set_controller_up(
|
||||
return SetControllerUpResponse(code=code, id=data.id)
|
||||
|
||||
|
||||
GetControllerResponse = Controllers.get_pydantic(exclude={"secret_key", "user"})
|
||||
GetControllerResponse = Controller.get_pydantic(exclude={"secret_key", "user"})
|
||||
|
||||
|
||||
@router.get("/controller")
|
||||
async def get_controller(id: uuid.UUID, user: User = Depends(get_current_user)) -> GetControllerResponse:
|
||||
controller = await Controllers.objects.get_or_none(id=id, user=user.id)
|
||||
controller = await Controller.objects.get_or_none(id=id, user=user.id)
|
||||
if controller is None:
|
||||
raise HTTPException(status_code=404, detail="Controller not found")
|
||||
return GetControllerResponse(**controller.dict())
|
||||
@@ -68,7 +68,7 @@ class ModifyControllerInput(BaseModel):
|
||||
async def modify_controller(
|
||||
data: ModifyControllerInput, user: User = Depends(get_current_user)
|
||||
) -> GetControllerResponse:
|
||||
controller = await Controllers.objects.get_or_none(id=data.id, user=user.id)
|
||||
controller = await Controller.objects.get_or_none(id=data.id, user=user.id)
|
||||
if controller is None:
|
||||
raise HTTPException(status_code=404, detail="Controller not found")
|
||||
controller.player_name = data.player_name
|
||||
@@ -79,10 +79,24 @@ async def modify_controller(
|
||||
|
||||
@router.get("/list")
|
||||
async def get_all_controllers(user: User = Depends(get_current_user)) -> list[GetControllerResponse]:
|
||||
controllers = await Controllers.objects.all(user=user.id)
|
||||
controllers = await Controller.objects.all(user=user.id)
|
||||
if len(controllers) == 0:
|
||||
return []
|
||||
return_list = []
|
||||
for controller in controllers:
|
||||
return_list.append(GetControllerResponse(**controller.dict()))
|
||||
return return_list
|
||||
|
||||
|
||||
class SetVersionToBeFlashedInput(BaseModel):
|
||||
id: uuid.UUID
|
||||
version: str
|
||||
|
||||
|
||||
@router.post("/set_update")
|
||||
async def set_version_to_be_flashed(data: SetVersionToBeFlashedInput, user: User = Depends(get_current_user)):
|
||||
controller = await Controller.objects.get_or_none(id=data.id, user=user.id)
|
||||
if controller is None:
|
||||
raise HTTPException(status_code=404, detail="Controller not found")
|
||||
controller.wanted_os_version = data.version
|
||||
await controller.update()
|
||||
|
||||
Reference in New Issue
Block a user