Skip to content

Commit 15d473e

Browse files
committed
Refactor datetime_range_filter_factory: coalesce only start_date and end_date filters
1 parent 7020ac5 commit 15d473e

File tree

2 files changed

+6
-11
lines changed

2 files changed

+6
-11
lines changed

airflow-core/src/airflow/api_fastapi/common/parameters.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from fastapi import Depends, HTTPException, Query, status
3838
from pendulum.parsing.exceptions import ParserError
3939
from pydantic import AfterValidator, BaseModel, NonNegativeInt
40-
from sqlalchemy import Column, and_, case, or_
40+
from sqlalchemy import Column, and_, case, func, or_
4141
from sqlalchemy.inspection import inspect
4242

4343
from airflow.api_fastapi.core_api.base import OrmClause
@@ -493,9 +493,12 @@ def depends_datetime(
493493
lower_bound: datetime | None = Query(alias=f"{filter_name}_gte", default=None),
494494
upper_bound: datetime | None = Query(alias=f"{filter_name}_lte", default=None),
495495
) -> RangeFilter:
496+
attr = getattr(model, attribute_name or filter_name)
497+
if filter_name in ("start_date", "end_date"):
498+
attr = func.coalesce(attr, func.now())
496499
return RangeFilter(
497500
Range(lower_bound=lower_bound, upper_bound=upper_bound),
498-
getattr(model, attribute_name or filter_name),
501+
attr,
499502
)
500503

501504
return depends_datetime

airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import structlog
2424
from fastapi import Depends, HTTPException, Query, status
25-
from sqlalchemy import func, or_, select
25+
from sqlalchemy import or_, select
2626
from sqlalchemy.orm import joinedload
2727
from sqlalchemy.sql.selectable import Select
2828

@@ -209,10 +209,6 @@ def get_mapped_task_instances(
209209
executor,
210210
version_number,
211211
]
212-
if state.value is not None and None in state.value:
213-
current_time = func.now()
214-
for f in (start_date_range, end_date_range):
215-
f.attribute = func.coalesce(f.attribute, current_time)
216212
task_instance_select, total_entries = paginated_select(
217213
statement=query,
218214
filters=cast("Sequence[OrmClause[Any]]", filters),
@@ -480,10 +476,6 @@ def get_task_instances(
480476
executor,
481477
version_number,
482478
]
483-
if state.value is not None and None in state.value:
484-
current_time = func.now()
485-
for f in (start_date_range, end_date_range):
486-
f.attribute = func.coalesce(f.attribute, current_time)
487479
task_instance_select, total_entries = paginated_select(
488480
statement=query,
489481
filters=cast("Sequence[OrmClause[Any]]", filters),

0 commit comments

Comments
 (0)