diff --git a/pyproject.toml b/pyproject.toml index 9c30160..7563380 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "wintertoo" -version = "1.3.1" +version = "1.3.2" description = "" authors = [ {name = "Robert Stein", email = "rdstein@caltech.edu"}, diff --git a/wintertoo/models/image.py b/wintertoo/models/image.py index 61f88c9..3678c3a 100644 --- a/wintertoo/models/image.py +++ b/wintertoo/models/image.py @@ -31,13 +31,11 @@ class ProgramImageQuery(BaseModel): ) start_date: int = Field( title="Start date for images", - le=get_date(Time.now() + 1 * u.day), default=get_date(Time.now() - 30.0 * u.day), examples=[get_date(Time.now() - 30.0 * u.day), "20230601"], ) end_date: int = Field( title="End date for images", - le=get_date(Time.now() + 1 * u.day), default=get_date(Time.now()), examples=[get_date(Time.now() - 30.0 * u.day), get_date(Time.now())], ) @@ -45,6 +43,30 @@ class ProgramImageQuery(BaseModel): default=DEFAULT_IMAGE_TYPE, example="raw/science/diff" ) + @model_validator(mode="after") + def validate_date_order(self): + """ + Ensure that the start date is before the end date + + :return: validated field value + """ + if self.start_date > self.end_date: + raise WinterValidationError("Start date is after end date") + + today = get_date(Time.now()) + + if self.start_date > today: + raise WinterValidationError( + f"Start date is in the future, (today is {today})" + ) + + if self.end_date > today: + raise WinterValidationError( + f"End date is in the future, (today is {today})" + ) + + return self + class TargetImageQuery(ProgramImageQuery): """