33from fastapi .middleware .cors import CORSMiddleware
44from sqlalchemy .orm import Session
55from starlette .responses import JSONResponse
6- from datetime import datetime
6+ from datetime import datetime , date
77from . import models , schemas , crud , database , security
88import os
99
@@ -67,6 +67,13 @@ def verify_certificate(certificate_id: str, db: Session = Depends(get_db)):
6767
6868 student = getattr (cert , "student" , None )
6969
70+ def _format_ts (val ):
71+ if val is None :
72+ return None
73+ if isinstance (val , (datetime , date )):
74+ return val .isoformat ()
75+ return str (val )
76+
7077 return {
7178 "status" : "valid" ,
7279 "certificate_id" : cert .certificate_id ,
@@ -83,10 +90,7 @@ def verify_certificate(certificate_id: str, db: Session = Depends(get_db)):
8390 "course_level" : cert .course_level ,
8491 "course_format" : cert .course_format ,
8592 "instruction_language" : cert .instruction_language ,
86- "certificate_created_at" : cert .created_at ,
87- "certificate_updated_at" : cert .updated_at ,
88- "student_created_at" : getattr (student , "created_at" , None ) if student else None ,
89- "student_updated_at" : getattr (student , "updated_at" , None ) if student else None ,
93+ "certificate_created_at" : _format_ts (cert .created_at ),
9094 "verified_at" : datetime .utcnow ().isoformat () + "Z" ,
9195 "verification_url" : f"https://mathcodelab.de/verify/?id={ cert .certificate_id } "
9296 }
@@ -107,6 +111,13 @@ def list_certificates(
107111 api_key : str = Depends (security .verify_api_key )
108112):
109113 certs = db .query (models .Certificate ).all ()
114+ def _format_ts (val ):
115+ if val is None :
116+ return None
117+ if isinstance (val , (datetime , date )):
118+ return val .isoformat ()
119+ return str (val )
120+
110121 return [
111122 {
112123 "certificate_id" : cert .certificate_id ,
@@ -123,8 +134,7 @@ def list_certificates(
123134 "instruction_language" : cert .instruction_language ,
124135 "issuer" : cert .issuer ,
125136 "instructor" : cert .instructor ,
126- "created_at" : cert .created_at ,
127- "updated_at" : cert .updated_at ,
137+ "created_at" : _format_ts (cert .created_at ),
128138 }
129139 for cert in certs
130140 ]
@@ -147,12 +157,17 @@ def get_student_by_student_id(
147157 .all ()
148158 )
149159
160+ def _format_ts (val ):
161+ if val is None :
162+ return None
163+ if isinstance (val , (datetime , date )):
164+ return val .isoformat ()
165+ return str (val )
166+
150167 return {
151168 "student" : {
152169 "student_id" : student .student_id ,
153170 "student_name" : student .student_name ,
154- "created_at" : student .created_at ,
155- "updated_at" : student .updated_at ,
156171 },
157172 "certificates" : certificates ,
158173 }
0 commit comments