71 lines
1.5 KiB
Python
71 lines
1.5 KiB
Python
"""API payloads for certificate operations."""
|
|
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
|
|
from ninja import Schema
|
|
|
|
|
|
class SkillSchema(Schema):
|
|
id: int
|
|
name: str
|
|
description: Optional[str] = None
|
|
|
|
|
|
class CertificateTemplateOut(Schema):
|
|
id: int
|
|
event_id: int
|
|
event_title: str
|
|
image_url: Optional[str]
|
|
skill_ids: List[int]
|
|
skills: List[SkillSchema]
|
|
|
|
|
|
class CertificateGenerationItem(Schema):
|
|
user_id: int
|
|
score: int
|
|
title: Optional[str] = None
|
|
description: Optional[str] = None
|
|
skill_ids: Optional[List[int]] = None
|
|
issued_at: Optional[datetime] = None
|
|
expires_at: Optional[datetime] = None
|
|
|
|
|
|
class CertificateGenerationPayload(Schema):
|
|
entries: List[CertificateGenerationItem]
|
|
default_title: Optional[str] = None
|
|
default_description: Optional[str] = None
|
|
|
|
|
|
class UserCertificateOut(Schema):
|
|
id: int
|
|
user_id: int
|
|
user_name: str
|
|
event_id: int
|
|
title: str
|
|
certificate_id: str
|
|
certificate_code: str
|
|
score: int
|
|
score_label: str
|
|
image_url: Optional[str]
|
|
|
|
|
|
class CertificateGenerationResponse(Schema):
|
|
certificates: List[UserCertificateOut]
|
|
|
|
|
|
class CertificateVerificationOut(Schema):
|
|
certificate_id: str
|
|
certificate_code: str
|
|
user_id: int
|
|
user_name: str
|
|
event_id: int
|
|
event_title: str
|
|
title: str
|
|
score: int
|
|
score_label: str
|
|
issued_at: datetime
|
|
expires_at: Optional[datetime] = None
|
|
image_url: Optional[str] = None
|
|
skills: List[str]
|