refactor to method

This commit is contained in:
collerek
2021-07-06 15:20:58 +02:00
parent cb4e5ea955
commit 302d0e5068

View File

@ -135,22 +135,10 @@ class FilterAction(QueryAction):
:return: complied and escaped clause :return: complied and escaped clause
:rtype: sqlalchemy.sql.elements.TextClause :rtype: sqlalchemy.sql.elements.TextClause
""" """
if isinstance(self.filter_value, ormar.Model): if isinstance(self.filter_value, ormar.Model):
self.filter_value = self.filter_value.pk self.filter_value = self.filter_value.pk
if isinstance( self._convert_dates_if_required()
self.filter_value, (datetime.date, datetime.time, datetime.datetime)
):
self.filter_value = self.filter_value.isoformat()
if isinstance(self.filter_value, (list, tuple, set)):
self.filter_value = [
x.isoformat()
if isinstance(x, (datetime.date, datetime.time, datetime.datetime))
else x
for x in self.filter_value
]
op_attr = FILTER_OPERATORS[self.operator] op_attr = FILTER_OPERATORS[self.operator]
if self.operator == "isnull": if self.operator == "isnull":
@ -164,6 +152,23 @@ class FilterAction(QueryAction):
) )
return clause return clause
def _convert_dates_if_required(self) -> None:
"""
Converts dates, time and datetime to isoformat
"""
if isinstance(
self.filter_value, (datetime.date, datetime.time, datetime.datetime)
):
self.filter_value = self.filter_value.isoformat()
if isinstance(self.filter_value, (list, tuple, set)):
self.filter_value = [
x.isoformat()
if isinstance(x, (datetime.date, datetime.time, datetime.datetime))
else x
for x in self.filter_value
]
def _compile_clause( def _compile_clause(
self, clause: sqlalchemy.sql.expression.BinaryExpression, modifiers: Dict, self, clause: sqlalchemy.sql.expression.BinaryExpression, modifiers: Dict,
) -> sqlalchemy.sql.expression.TextClause: ) -> sqlalchemy.sql.expression.TextClause: