Skip to content

Commit cade8a5

Browse files
peterdudfielddevsjc
authored andcommitted
use timezone when calculating start time (#277)
* use timezone * lint
1 parent 50694ed commit cade8a5

3 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/quartz_api/internal/service/uk_national/national_router.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
gsp_id_map,
2626
model_names_external_to_internal,
2727
)
28-
from .time_utils import limit_end_datetime_by_permissions
28+
from .time_utils import get_start_window, limit_end_datetime_by_permissions
2929

3030
log = logging.getLogger(__name__)
3131

@@ -134,7 +134,7 @@ async def get_national_forecast(
134134
# we get from from now - rounded up to nearest 30 mins, less 3 days.
135135
if start_datetime_utc is None:
136136
start_datetime_utc \
137-
= pd.Timestamp.utcnow().floor("6h").to_pydatetime() - dt.timedelta(days=2)
137+
= get_start_window()
138138
if include_metadata:
139139
start_datetime_utc \
140140
= pd.Timestamp.utcnow().ceil("30min").to_pydatetime() - dt.timedelta(days=3)
@@ -265,7 +265,7 @@ async def get_national_pvlive(
265265
location_uuid=uk_loc.uuid,
266266
energy_type=models.EnergyType.SOLAR,
267267
location_type=models.LocationType.NATION,
268-
window_start=pd.Timestamp.utcnow().floor("6h").to_pydatetime() - dt.timedelta(days=2),
268+
window_start=get_start_window(),
269269
window_end=pd.Timestamp.utcnow().floor("6h").to_pydatetime() + dt.timedelta(days=2),
270270
observer_name=f"pvlive_{regime}",
271271
authdata={},

src/quartz_api/internal/service/uk_national/time_utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import datetime as dt
44
import os
55

6+
import pandas as pd
67
import sentry_sdk
78

89
from quartz_api.internal import models
@@ -34,3 +35,15 @@ def limit_end_datetime_by_permissions(
3435
return min(end_datetime_utc, intraday_max_allowed)
3536

3637
return end_datetime_utc
38+
39+
def get_start_window() -> pd.Timestamp:
40+
"""Get the start window for the forecast query."""
41+
now = pd.Timestamp.utcnow()
42+
# set as uk london timezone
43+
now_london = now.tz_convert("Europe/London")
44+
# round and move back 2 days
45+
now_minus_2_days_london = now_london.floor("6h") - dt.timedelta(days=2)
46+
# change back to utc
47+
now_minus_2_days_utc = now_minus_2_days_london.tz_convert("UTC")
48+
49+
return now_minus_2_days_utc

src/quartz_api/tests/integration/uk_national/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from uuid import UUID
66

77
import pandas as pd
8-
import pytest
98
import pytest_asyncio
109
from httpx import ASGITransport, AsyncClient
1110
from ocf.dp.dp import common_pb2

0 commit comments

Comments
 (0)