From 3e18d4f10902326b9601e2054c3ce634ad7d9938 Mon Sep 17 00:00:00 2001 From: altaf-creator Date: Tue, 30 Dec 2025 06:28:20 +0800 Subject: TZ --- backend/main.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'backend') diff --git a/backend/main.py b/backend/main.py index cd3144e..dd36299 100644 --- a/backend/main.py +++ b/backend/main.py @@ -11,6 +11,7 @@ from onesignal.api import default_api import sqlite3 from typing import Annotated import datetime +from zoneinfo import ZoneInfo from pydantic import BaseModel import secrets from enum import Enum, IntEnum @@ -142,7 +143,7 @@ URI_TO_MACHINES = { "h2-washer2": [2, 4], } -TZ = "+07:00" +TZ = "Asia/Jakarta" # ## global vars for user-end @@ -166,7 +167,7 @@ def restart_terminated_schedules(): for row in out: print(row) end_date = datetime.datetime.fromisoformat(row[RowIndices.END_TIME]) - now = datetime.datetime.now() + now = datetime.datetime.now(ZoneInfo(TZ)) timer_id = row[RowIndices.TIMER_ID] if now > end_date: @@ -243,7 +244,7 @@ restart_terminated_schedules() # it's so complex even the linter is complaining @app.post("/start", response_class=PlainTextResponse) def start_new_timer(data: RequestData, response: fastapi.Response, session_key: Annotated[str | None, fastapi.Cookie()] = None, auth_block: Annotated[str | None, fastapi.Cookie()] = None, subscription_endpoint: Annotated[str | None, fastapi.Cookie()] = None): - now = datetime.datetime.now() + now = datetime.datetime.now(ZoneInfo(TZ)) try: if not session_key: print("no session key, creating.") @@ -277,9 +278,9 @@ def start_new_timer(data: RequestData, response: fastapi.Response, session_key: end_date = now + datetime.timedelta(seconds=(data.duration * 30)) cursor.execute(""" INSERT INTO timers (user_id, start_time, end_time, block, machine, status, subscription_id) - VALUES (?, ?, ?, ?, ?, ?, ?)""", (session_key, now.isoformat() + TZ, end_date.isoformat() + TZ, block, machine, 'RUNNING', subscription_endpoint,)) + VALUES (?, ?, ?, ?, ?, ?, ?)""", (session_key, now.isoformat(), end_date.isoformat(), block, machine, 'RUNNING', subscription_endpoint,)) conn.commit() - cursor.execute("SELECT * FROM timers WHERE end_time = ?;", (end_date.isoformat() + TZ,)) + cursor.execute("SELECT * FROM timers WHERE end_time = ?;", (end_date.isoformat(),)) out = cursor.fetchall() for row in out: @@ -302,7 +303,7 @@ def start_new_timer(data: RequestData, response: fastapi.Response, session_key: try: machine_status[block - 1][machine - 1] = Status.RUNNING.name - machine_times[block - 1][machine - 1] = now.isoformat() + TZ + machine_times[block - 1][machine - 1] = now.isoformat() machine_endings[block - 1][machine - 1] = end_date except Exception as exception: print("err @ machine_status //", exception) @@ -381,7 +382,7 @@ def finish_laundry(data: FinishRequestData, response: fastapi.Response, session_ cursor.execute("SELECT * FROM timers WHERE timer_id = ?", (data.id,)) row = cursor.fetchall()[0] - if datetime.datetime.now() < datetime.datetime.fromisoformat(row[RowIndices.END_TIME]): + if datetime.datetime.now(ZoneInfo(TZ)) < datetime.datetime.fromisoformat(row[RowIndices.END_TIME]): response.status_code = fastapi.status.HTTP_400_BAD_REQUEST return "timer has not finished yet" -- cgit v1.2.3