Fix API enum fields and add last_iteration to range queries

This commit is contained in:
allegroai 2021-05-03 17:37:49 +03:00
parent 7a4a5eb03e
commit 78e4a58c91
3 changed files with 18 additions and 12 deletions

View File

@ -218,7 +218,7 @@ class ActualEnumField(fields.StringField):
)
def parse_value(self, value):
if value is NotSet and not self.required:
if value in (NotSet, None) and not self.required:
return self.get_default_value()
try:
# noinspection PyArgumentList

View File

@ -78,6 +78,7 @@ class GetMixin(PropsMixin):
MultiFieldParameters = namedtuple("MultiFieldParameters", "pattern fields")
_field_collation_overrides = {}
_numeric_collation = {"locale": "en_US", "numericOrdering": True}
class QueryParameterOptions(object):
def __init__(
@ -708,16 +709,21 @@ class GetMixin(PropsMixin):
if res:
query_sets = [cls.objects(q) for q in res]
query_sets = [qs.order_by(*order_by) for qs in query_sets]
if order_field:
collation_override = first(
v
for k, v in cls._field_collation_overrides.items()
if order_field.startswith(k)
)
if collation_override:
query_sets = [
qs.collation(collation=collation_override) for qs in query_sets
]
# if order_field:
# collation_override = first(
# v
# for k, v in cls._field_collation_overrides.items()
# if order_field.startswith(k)
# )
# if collation_override:
# query_sets = [
# qs.collation(collation=collation_override) for qs in query_sets
# ]
# always use numeric collation
query_sets = [
qs.collation(collation=cls._numeric_collation) for qs in query_sets
]
if search_text:
query_sets = [qs.search_text(search_text) for qs in query_sets]

View File

@ -197,7 +197,7 @@ class Task(AttributedDocument):
"project",
"parent",
),
range_fields=("started", "active_duration", "last_metrics.*"),
range_fields=("started", "active_duration", "last_metrics.*", "last_iteration"),
datetime_fields=("status_changed", "last_update"),
pattern_fields=("name", "comment"),
)