Shares Menu nearly feature complete

This commit is contained in:
Mawoka
2023-05-24 19:00:30 +02:00
parent 4b8358176b
commit d5cb5b1ff5
9 changed files with 167 additions and 19 deletions
+4 -2
View File
@@ -360,13 +360,15 @@ class OnlyId(BaseModel):
class PublicQuizTivityShare(BaseModel):
id: uuid.UUID
name: str | None
expire_in: int
expire_in: int | None
quiztivity: OnlyId
user: OnlyId
@classmethod
def from_db_model(cls, data: QuizTivityShare):
expire_in = int((data.expire_at - datetime.now()).seconds / 60)
expire_in = None
if data.expire_at is not None:
expire_in = int((data.expire_at - datetime.now()).seconds / 60)
return cls(
id=data.id,
name=data.name,
+3 -1
View File
@@ -56,7 +56,9 @@ async def get_all_quiztivities(user: User = Depends(get_current_user)) -> list[Q
@router.get("/{uuid}/shares")
async def get_shares(uuid: UUID, user: User = Depends(get_current_user)) -> list[PublicQuizTivityShare]:
shares = await QuizTivityShare.objects.filter(quiztivity=uuid, user=user).all()
shares = (
await QuizTivityShare.objects.filter(quiztivity=uuid, user=user).order_by(QuizTivityShare.expire_at.asc()).all()
)
resp_shares = []
for share in shares:
resp_shares.append(PublicQuizTivityShare.from_db_model(share))
+2
View File
@@ -77,4 +77,6 @@ async def get_share(uuid: UUID) -> QuizTivity:
share = await QuizTivityShare.objects.select_related("quiztivity").get_or_none(id=uuid)
if share is None:
raise HTTPException(status_code=404, detail="Share not found")
if share.expire_at < datetime.now():
raise HTTPException(status_code=410, detail="Already expired")
return share.quiztivity