Unverified Commit 9de78164 authored by David López's avatar David López Committed by GitHub
Browse files

Merge pull request #14281 from simonbray/datetime-object

[22.05] Specify time as datetime object in job queries
parents d3d51c27 02125b99
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
import json
import logging
import typing
from datetime import datetime

from boltons.iterutils import remap
from pydantic import (
@@ -107,7 +108,7 @@ class JobManager:

        def build_and_apply_filters(query, objects, filter_func):
            if objects is not None:
                if isinstance(objects, str):
                if isinstance(objects, str) or isinstance(objects, datetime):
                    query = query.filter(filter_func(objects))
                elif isinstance(objects, list):
                    t = []
+2 −2
Original line number Diff line number Diff line
@@ -1109,8 +1109,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[str] = None
    date_range_max: Optional[str] = None
    date_range_min: Optional[datetime] = None
    date_range_max: Optional[datetime] = None
    history_id: Optional[DecodedDatabaseIdField] = None
    workflow_id: Optional[DecodedDatabaseIdField] = None
    invocation_id: Optional[DecodedDatabaseIdField] = None
+5 −4
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ API operations on a jobs.
"""

import logging
from datetime import datetime
from typing import (
    Any,
    Dict,
@@ -98,13 +99,13 @@ ToolIdLikeQueryParam: Optional[str] = Query(
    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[str] = Query(
DateRangeMinQueryParam: Optional[datetime] = 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[str] = Query(
DateRangeMaxQueryParam: Optional[datetime] = 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')",
@@ -186,8 +187,8 @@ class FastAPIJobs:
        view: JobIndexViewEnum = ViewQueryParam,
        tool_id: Optional[str] = ToolIdQueryParam,
        tool_id_like: Optional[str] = ToolIdLikeQueryParam,
        date_range_min: Optional[str] = DateRangeMinQueryParam,
        date_range_max: Optional[str] = DateRangeMaxQueryParam,
        date_range_min: Optional[datetime] = DateRangeMinQueryParam,
        date_range_max: Optional[datetime] = DateRangeMaxQueryParam,
        history_id: Optional[EncodedDatabaseIdField] = HistoryIdQueryParam,
        workflow_id: Optional[EncodedDatabaseIdField] = WorkflowIdQueryParam,
        invocation_id: Optional[EncodedDatabaseIdField] = InvocationIdQueryParam,
+2 −2
Original line number Diff line number Diff line
@@ -82,14 +82,14 @@ class JobsApiTestCase(ApiTestCase, TestsTools):

    @uses_test_history(require_new=True)
    def test_index_date_filter(self, history_id):
        self.__history_with_new_dataset(history_id)
        two_weeks_ago = (datetime.datetime.utcnow() - datetime.timedelta(14)).isoformat()
        last_week = (datetime.datetime.utcnow() - datetime.timedelta(7)).isoformat()
        next_week = (datetime.datetime.utcnow() + datetime.timedelta(7)).isoformat()
        today = datetime.datetime.utcnow().isoformat()
        tomorrow = (datetime.datetime.utcnow() + datetime.timedelta(1)).isoformat()
        self.__history_with_new_dataset(history_id)

        jobs = self.__jobs_index(data={"date_range_min": today[0:10], "date_range_max": tomorrow[0:10]})
        jobs = self.__jobs_index(data={"date_range_min": today, "date_range_max": tomorrow})
        assert len(jobs) > 0
        today_job_id = jobs[0]["id"]