Skip to content

Commit 2eedfdc

Browse files
committed
Merge branch '136-arrow-date-filter'
2 parents e0a3ac2 + be3ded9 commit 2eedfdc

File tree

3 files changed

+258
-208
lines changed

3 files changed

+258
-208
lines changed

webgrid/filters.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@
2121
)
2222
from . import types
2323

24+
try:
25+
import arrow
26+
except ImportError:
27+
arrow = None
28+
try:
29+
from sqlalchemy_utils.types import ArrowType
30+
except ImportError:
31+
ArrowType = None
32+
2433

2534
class UnrecognizedOperator(ValueError):
2635
pass
@@ -1071,6 +1080,14 @@ def __init__(self, sa_col, _now=None, default_op=None, default_value1=None,
10711080
self._was_time_given1 = False
10721081
self._was_time_given2 = False
10731082

1083+
self.check_arrow_type()
1084+
1085+
def check_arrow_type(self):
1086+
"""Verify that the expression given to the filter is not ArrowType. If it
1087+
is, cast it to a date to avoid type problems in the date filter"""
1088+
if arrow and ArrowType and isinstance(self.sa_col.type, ArrowType):
1089+
self.sa_col = sa.sql.cast(self.sa_col, sa.Date)
1090+
10741091
def set(self, op, value1, value2=None):
10751092
super(DateFilter, self).set(op, value1, value2)
10761093
self.format_display_vals()
@@ -1264,6 +1281,10 @@ def __init__(self, sa_col, _now=None, default_op=None, default_value1=None,
12641281
default_value1=default_value1,
12651282
default_value2=default_value2)
12661283

1284+
def check_arrow_type(self):
1285+
"""DateTimeFilter has no problems with ArrowType. Pass this case through."""
1286+
pass
1287+
12671288
def format_display_vals(self):
12681289
ops_single_val = (
12691290
ops.eq.key,

0 commit comments

Comments
 (0)