ManagementSystem/TrackingToolWebAU/api.py

46 lines
1.4 KiB
Python

import os
import base64
import datetime
import requests
from dotenv import load_dotenv
load_dotenv()
HOST = os.getenv("MS_HOST", "http://10.20.2.26:3002")
def sync_checkin(email: str, timestamp_ms: int, image_data: bytes, student_name: str, status: str):
today = datetime.datetime.now().strftime("%Y_%m_%d")
folder_path = f"./images/{today}"
os.makedirs(folder_path, exist_ok=True)
safe_student = "".join(c for c in student_name if c.isalnum() or c in ("-", "_"))
safe_status = "".join(c for c in status if c.isalnum() or c in ("-", "_"))
ts_str = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
file_path = os.path.join(folder_path, f"{safe_student}_{safe_status}_at_{ts_str}.png")
with open(file_path, "wb") as f:
f.write(image_data)
image_b64 = "data:image/jpeg;base64," + base64.b64encode(image_data).decode("utf-8")
payload = {
"email": email,
"time": timestamp_ms,
"image": image_b64,
}
print("[sync_checkin] payload:", {k: v for k, v in payload.items() if k != "image"})
try:
response = requests.post(HOST + "/api/log-time/check-in-out", json=payload)
response.raise_for_status()
res = response.json()
print("[sync_checkin] response:", res)
return res
except Exception as e:
print("[sync_checkin] failed:", e)
return {}