priprava multisite
All checks were successful
deploy / deploy (push) Successful in 18s
test / smoke-test (push) Successful in 5s

This commit is contained in:
Dusan Vojacek
2026-04-05 21:56:58 +02:00
parent 22b7fa7756
commit 61892b258a
2 changed files with 108 additions and 90 deletions

View File

@@ -90,27 +90,34 @@ async def _fetch_ote_json(date_str: str) -> tuple[dict | None, str | None]:
return None, last_err
OTE_TZ = ZoneInfo("Europe/Prague")
async def import_ote_prices(
site_id: int,
db,
site_id: int | None = None,
target_date: date | None = None,
) -> tuple[int, str, float, str | None]:
"""
Stáhne OTE JSON a předá ho PostgreSQL funkci ems.fn_ote_import_from_json.
Python nedělá žádné parsování ani přepočty vše je v DB funkcích.
Data jsou globální (market_interval_price); site_id je volitelné jen pro výběr
„dnes/zítra“ při target_date=None (timezone lokality vs. výchozí Europe/Prague).
Returns: (počet_slotů, datum_str, první_cena_kč_kwh, error_code)
(-1, datum_str, 0.0, error_code) při chybě
"""
settings = get_settings()
row = await db.fetchrow(
"SELECT timezone FROM ems.site WHERE id = $1", site_id
)
if row is None:
logger.error("OTE import: site id=%s nenalezen", site_id)
return -1, "", 0.0, "site_not_found"
if site_id is not None:
row = await db.fetchrow(
"SELECT timezone FROM ems.site WHERE id = $1", site_id
)
if row is None:
logger.error("OTE import: site id=%s nenalezen", site_id)
return -1, "", 0.0, "site_not_found"
site_tz = ZoneInfo(row["timezone"] or "Europe/Prague")
else:
site_tz = OTE_TZ
site_tz = ZoneInfo(row["timezone"] or "Europe/Prague")
now_site = datetime.now(site_tz)
today_site = now_site.date()
tomorrow_site = today_site + timedelta(days=1)