diff --git a/src/zepben/eas/client/eas_client.py b/src/zepben/eas/client/eas_client.py index 04e5b5b..0bc5cb8 100644 --- a/src/zepben/eas/client/eas_client.py +++ b/src/zepben/eas/client/eas_client.py @@ -1325,3 +1325,35 @@ async def async_get_opendss_model_download_url(self, run_id: int): else: response = await response.text() return response + + def get_opendss_model(self, model_id: int): + """ + Retrieve information of a hosting capacity calibration run + :param model_id: The openDss model export ID + :return: The HTTP response received from the Evolve App Server after requesting the openDss model info + """ + return get_event_loop().run_until_complete(self.async_get_opendss_model(model_id)) + + async def async_get_opendss_model(self, model_id: int): + """ + Retrieve information of a hosting capacity calibration run + :param model_id: The openDss model export ID + :return: The HTTP response received from the Evolve App Server after requesting the openDss model info + """ + + offset = 0 + page_size = 20 + + while True: + response = await self.async_get_paged_opendss_models(page_size, offset) + total_count = int(response["data"]["pagedOpenDssModels"]["totalCount"]) + page_count = len(response["data"]["pagedOpenDssModels"]["models"]) + for model in response["data"]["pagedOpenDssModels"]["models"]: + if model["id"] == model_id: + return model + offset += page_count + + if offset >= total_count: + break + + raise ValueError(f"Model id:{model_id} was not found in EAS database.") diff --git a/src/zepben/eas/client/work_package.py b/src/zepben/eas/client/work_package.py index 64450c0..66ec675 100644 --- a/src/zepben/eas/client/work_package.py +++ b/src/zepben/eas/client/work_package.py @@ -172,7 +172,7 @@ def __init__( def _validate(start_time: datetime, end_time: datetime): ddelta = (end_time - start_time).days - if ddelta > 365: + if ddelta > 367: raise ValueError("The difference between 'start_time' and 'end_time' cannot be greater than a year.") if ddelta < 1: