summaryrefslogtreecommitdiff
path: root/backend/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/main.py')
-rw-r--r--backend/main.py15
1 files changed, 8 insertions, 7 deletions
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"