Add configuration and database core
This commit is contained in:
@@ -1 +1,40 @@
|
||||
"""CSV export helpers."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import csv
|
||||
from io import StringIO
|
||||
|
||||
from app.db import connect
|
||||
|
||||
|
||||
async def export_session_csv(db_path: str, sid: str) -> str:
|
||||
out = StringIO()
|
||||
writer = csv.writer(out)
|
||||
writer.writerow(["sid", "student_id", "name", "question_idx", "answer", "elapsed_ms", "score", "status"])
|
||||
async with connect(db_path) as db:
|
||||
cursor = await db.execute(
|
||||
"""
|
||||
SELECT p.sid, p.student_id, p.name, s.question_idx, s.answer, s.elapsed_ms, s.score, s.status
|
||||
FROM participants p
|
||||
LEFT JOIN submissions s ON s.sid = p.sid AND s.student_id = p.student_id
|
||||
WHERE p.sid = ?
|
||||
ORDER BY p.student_id, s.question_idx
|
||||
""",
|
||||
(sid,),
|
||||
)
|
||||
rows = await cursor.fetchall()
|
||||
for row in rows:
|
||||
writer.writerow(
|
||||
[
|
||||
row["sid"],
|
||||
row["student_id"],
|
||||
row["name"],
|
||||
"" if row["question_idx"] is None else row["question_idx"],
|
||||
row["answer"] or "",
|
||||
"" if row["elapsed_ms"] is None else row["elapsed_ms"],
|
||||
"" if row["score"] is None else row["score"],
|
||||
row["status"] or "",
|
||||
]
|
||||
)
|
||||
return out.getvalue()
|
||||
|
||||
Reference in New Issue
Block a user