Initial certificate system

This commit is contained in:
nelso
2026-06-06 19:32:24 +08:00
commit ce4ed6213b
105 changed files with 9133 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
from datetime import date, datetime
from pydantic import BaseModel, Field, field_validator
class CertificateCreate(BaseModel):
learner_id: int
project_code: str = Field(min_length=2, max_length=16)
certificate_name: str | None = Field(default=None, max_length=128)
class_name: str | None = Field(default=None, max_length=128)
course_name: str | None = Field(default=None, max_length=128)
stage_name: str | None = Field(default=None, max_length=128)
issue_date: date
issuer_name: str = Field(min_length=1, max_length=128)
remark: str | None = None
@field_validator("project_code")
@classmethod
def normalize_project_code(cls, value: str) -> str:
return value.strip().upper()
class CertificateOut(BaseModel):
id: int
learner_id: int
project_code: str
certificate_no: str
certificate_name: str
class_name: str | None
course_name: str | None
stage_name: str | None
issue_date: date
issuer_name: str
status: str
pdf_status: str
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}