Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[22.05] Fix data_range_{min,max} parsing #14456

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 6 additions & 3 deletions lib/galaxy/schema/schema.py
Expand Up @@ -39,7 +39,10 @@
EncodedDatabaseIdField,
ModelClassField,
)
from galaxy.schema.types import RelativeUrl
from galaxy.schema.types import (
OffsetNaiveDatetime,
RelativeUrl,
)

USER_MODEL_CLASS_NAME = "User"
GROUP_MODEL_CLASS_NAME = "Group"
Expand Down Expand Up @@ -1112,8 +1115,8 @@ class JobIndexQueryPayload(Model):
user_id: Optional[DecodedDatabaseIdField] = None
tool_ids: Optional[List[str]] = None
tool_ids_like: Optional[List[str]] = None
date_range_min: Optional[Union[datetime, date]] = None
date_range_max: Optional[Union[datetime, date]] = None
date_range_min: Optional[Union[OffsetNaiveDatetime, date]] = None
date_range_max: Optional[Union[OffsetNaiveDatetime, date]] = None
history_id: Optional[DecodedDatabaseIdField] = None
workflow_id: Optional[DecodedDatabaseIdField] = None
invocation_id: Optional[DecodedDatabaseIdField] = None
Expand Down
15 changes: 15 additions & 0 deletions lib/galaxy/schema/types.py
@@ -1,7 +1,22 @@
from datetime import datetime

from pydantic.datetime_parse import parse_datetime
from typing_extensions import Literal

# Relative URLs cannot be validated with AnyUrl, they need a scheme.
# Making them an alias of `str` for now
RelativeUrl = str

LatestLiteral = Literal["latest"]


class OffsetNaiveDatetime(datetime):
@classmethod
def __get_validators__(cls):
yield cls.validate

@classmethod
def validate(cls, v):
v = parse_datetime(v)
v = v.replace(tzinfo=None)
return v
mvdbeek marked this conversation as resolved.
Show resolved Hide resolved
5 changes: 3 additions & 2 deletions lib/galaxy/webapps/galaxy/api/jobs.py
Expand Up @@ -38,6 +38,7 @@
)
from galaxy.schema.fields import EncodedDatabaseIdField
from galaxy.schema.schema import JobIndexSortByEnum
from galaxy.schema.types import OffsetNaiveDatetime
from galaxy.util import listify
from galaxy.web import (
expose_api,
Expand Down Expand Up @@ -103,13 +104,13 @@
description="Limit listing of jobs to those that match one of the included tool ID sql-like patterns. If none, all are returned",
)

DateRangeMinQueryParam: Optional[Union[datetime, date]] = Query(
DateRangeMinQueryParam: Optional[Union[OffsetNaiveDatetime, date]] = Query(
default=None,
title="Date Range Minimum",
description="Limit listing of jobs to those that are updated after specified date (e.g. '2014-01-01')",
)

DateRangeMaxQueryParam: Optional[Union[datetime, date]] = Query(
DateRangeMaxQueryParam: Optional[Union[OffsetNaiveDatetime, date]] = Query(
default=None,
title="Date Range Maximum",
description="Limit listing of jobs to those that are updated before specified date (e.g. '2014-01-01')",
Expand Down