Cleanup in socket server
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# SPDX-FileCopyrightText: 2025 Marlon W (Mawoka)
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
from pydantic import BaseModel, field_validator, ValidationInfo
|
||||
from classquiz.db.models import QuizQuestion, QuizQuestionType, VotingQuizAnswer
|
||||
|
||||
|
||||
class JoinGameData(BaseModel):
|
||||
username: str
|
||||
game_pin: str
|
||||
captcha: str | None = None
|
||||
custom_field: str | None = None
|
||||
|
||||
|
||||
class RejoinGameData(BaseModel):
|
||||
old_sid: str
|
||||
game_pin: str
|
||||
username: str
|
||||
|
||||
|
||||
class RegisterAsAdminData(BaseModel):
|
||||
game_pin: str
|
||||
game_id: str
|
||||
|
||||
|
||||
class ABCDQuizAnswerWithoutSolution(BaseModel):
|
||||
answer: str
|
||||
color: str | None = None
|
||||
|
||||
|
||||
class RangeQuizAnswerWithoutSolution(BaseModel):
|
||||
min: int
|
||||
max: int
|
||||
|
||||
|
||||
class ReturnQuestion(QuizQuestion):
|
||||
answers: list[ABCDQuizAnswerWithoutSolution] | RangeQuizAnswerWithoutSolution | list[VotingQuizAnswer]
|
||||
type: QuizQuestionType = QuizQuestionType.ABCD
|
||||
|
||||
@field_validator("answers")
|
||||
def answers_not_none_if_abcd_type(cls, v, info: ValidationInfo):
|
||||
if info.data["type"] == QuizQuestionType.ABCD and type(v[0]) is not ABCDQuizAnswerWithoutSolution:
|
||||
raise ValueError("Answers can't be none if type is ABCD")
|
||||
if info.data["type"] == QuizQuestionType.RANGE and type(v) is not RangeQuizAnswerWithoutSolution:
|
||||
raise ValueError("Answer must be from type RangeQuizAnswer if type is RANGE")
|
||||
# skipcq: PTC-W0047
|
||||
if info.data["type"] == QuizQuestionType.VOTING and type(v[0]) is not VotingQuizAnswer:
|
||||
pass
|
||||
return v
|
||||
|
||||
|
||||
class SubmitAnswerDataOrderType(BaseModel):
|
||||
answer: str
|
||||
|
||||
|
||||
class SubmitAnswerData(BaseModel):
|
||||
question_index: int
|
||||
answer: str | int
|
||||
complex_answer: list[SubmitAnswerDataOrderType] | None = None
|
||||
|
||||
|
||||
class KickPlayerInput(BaseModel):
|
||||
username: str
|
||||
|
||||
|
||||
class ConnectSessionIdEvent(BaseModel):
|
||||
session_id: str
|
||||
Reference in New Issue
Block a user