fix(chalice): use card's global filters instead of series' filters (#2857)
This commit is contained in:
parent
45ef98b163
commit
94b541c758
1 changed files with 41 additions and 23 deletions
|
|
@ -1023,33 +1023,51 @@ class CardSessionsSchema(_TimedSchema, _PaginatedSchema):
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
# We don't need this as the UI is expecting filters to override the full series' filters
|
||||||
|
# @model_validator(mode="after")
|
||||||
|
# def __merge_out_filters_with_series(self):
|
||||||
|
# for f in self.filters:
|
||||||
|
# for s in self.series:
|
||||||
|
# found = False
|
||||||
|
#
|
||||||
|
# if f.is_event:
|
||||||
|
# sub = s.filter.events
|
||||||
|
# else:
|
||||||
|
# sub = s.filter.filters
|
||||||
|
#
|
||||||
|
# for e in sub:
|
||||||
|
# if f.type == e.type and f.operator == e.operator:
|
||||||
|
# found = True
|
||||||
|
# if f.is_event:
|
||||||
|
# # If extra event: append value
|
||||||
|
# for v in f.value:
|
||||||
|
# if v not in e.value:
|
||||||
|
# e.value.append(v)
|
||||||
|
# else:
|
||||||
|
# # If extra filter: override value
|
||||||
|
# e.value = f.value
|
||||||
|
# if not found:
|
||||||
|
# sub.append(f)
|
||||||
|
#
|
||||||
|
# self.filters = []
|
||||||
|
#
|
||||||
|
# return self
|
||||||
|
|
||||||
|
# UI is expecting filters to override the full series' filters
|
||||||
@model_validator(mode="after")
|
@model_validator(mode="after")
|
||||||
def __merge_out_filters_with_series(self):
|
def __override_series_filters_with_outer_filters(self):
|
||||||
for f in self.filters:
|
if len(self.filters) > 0:
|
||||||
for s in self.series:
|
events = []
|
||||||
found = False
|
filters = []
|
||||||
|
for f in self.filters:
|
||||||
if f.is_event:
|
if f.is_event:
|
||||||
sub = s.filter.events
|
events.append(f)
|
||||||
else:
|
else:
|
||||||
sub = s.filter.filters
|
filters.append(f)
|
||||||
|
for s in self.series:
|
||||||
for e in sub:
|
s.filter.events = events
|
||||||
if f.type == e.type and f.operator == e.operator:
|
s.filter.filters = filters
|
||||||
found = True
|
|
||||||
if f.is_event:
|
|
||||||
# If extra event: append value
|
|
||||||
for v in f.value:
|
|
||||||
if v not in e.value:
|
|
||||||
e.value.append(v)
|
|
||||||
else:
|
|
||||||
# If extra filter: override value
|
|
||||||
e.value = f.value
|
|
||||||
if not found:
|
|
||||||
sub.append(f)
|
|
||||||
|
|
||||||
self.filters = []
|
self.filters = []
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue