Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
gsp_id_map,
model_names_external_to_internal,
)
from .time_utils import limit_end_datetime_by_permissions
from .time_utils import get_start_window, limit_end_datetime_by_permissions

log = logging.getLogger(__name__)

Expand Down Expand Up @@ -134,7 +134,7 @@ async def get_national_forecast(
# we get from from now - rounded up to nearest 30 mins, less 3 days.
if start_datetime_utc is None:
start_datetime_utc \
= pd.Timestamp.utcnow().floor("6h").to_pydatetime() - dt.timedelta(days=2)
= get_start_window()
if include_metadata:
start_datetime_utc \
= pd.Timestamp.utcnow().ceil("30min").to_pydatetime() - dt.timedelta(days=3)
Expand Down Expand Up @@ -267,7 +267,7 @@ async def get_national_pvlive(
location_uuid=uk_loc.uuid,
energy_type=models.EnergyType.SOLAR,
location_type=models.LocationType.NATION,
window_start=pd.Timestamp.utcnow().floor("6h").to_pydatetime() - dt.timedelta(days=2),
window_start=get_start_window(),
window_end=pd.Timestamp.utcnow().floor("6h").to_pydatetime() + dt.timedelta(days=2),
observer_name=f"pvlive_{regime}",
authdata={},
Expand Down
13 changes: 13 additions & 0 deletions src/quartz_api/internal/service/uk_national/time_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import datetime as dt
import os

import pandas as pd
import sentry_sdk

from quartz_api.internal import models
Expand Down Expand Up @@ -34,3 +35,15 @@ def limit_end_datetime_by_permissions(
return min(end_datetime_utc, intraday_max_allowed)

return end_datetime_utc

def get_start_window() -> pd.Timestamp:
"""Get the start window for the forecast query."""
now = pd.Timestamp.utcnow()
# set as uk london timezone
now_london = now.tz_convert("Europe/London")
# round and move back 2 days
now_minus_2_days_london = now_london.floor("6h") - dt.timedelta(days=2)
# change back to utc
now_minus_2_days_utc = now_minus_2_days_london.tz_convert("UTC")

return now_minus_2_days_utc
Loading