Fix Row Filtering (#1433)

When multiple filter expressions are defined:
GAM_CSV_ROW_FILTER - should match only if all expressions match
GAM_CSV_ROW_DROP_FILTER - should match if any expression matches

Currently, the opposite is true
This commit is contained in:
Ross Scroggs
2021-10-14 17:12:51 -07:00
committed by GitHub
parent 75e2bf5a9a
commit af16967257

View File

@@ -158,25 +158,25 @@ def write_csv_file(csvRows, titles, list_type, todrive):
for c, filterVal in iter(filters.items()): for c, filterVal in iter(filters.items()):
for column in columns[c]: for column in columns[c]:
if filterVal[1] == 'regex': if filterVal[1] == 'regex':
if filterVal[2].search(str(row.get(column, ''))):
return True
elif filterVal[1] == 'notregex':
if not filterVal[2].search(str(row.get(column, ''))): if not filterVal[2].search(str(row.get(column, ''))):
return True return False
elif filterVal[1] == 'notregex':
if filterVal[2].search(str(row.get(column, ''))):
return False
elif filterVal[1] in ['date', 'time']: elif filterVal[1] in ['date', 'time']:
if rowDateTimeFilterMatch( if not rowDateTimeFilterMatch(
filterVal[1] == 'date', row.get(column, ''), filterVal[1] == 'date', row.get(column, ''),
filterVal[2], filterVal[3]): filterVal[2], filterVal[3]):
return True return False
elif filterVal[1] == 'count': elif filterVal[1] == 'count':
if rowCountFilterMatch( if not rowCountFilterMatch(
row.get(column, 0), filterVal[2], filterVal[3]): row.get(column, 0), filterVal[2], filterVal[3]):
return True return False
else: #boolean else: #boolean
if rowBooleanFilterMatch( if not rowBooleanFilterMatch(
row.get(column, False), filterVal[2]): row.get(column, False), filterVal[2]):
return True return False
return False return True
if GC_Values[GC_CSV_ROW_FILTER] or GC_Values[GC_CSV_ROW_DROP_FILTER]: if GC_Values[GC_CSV_ROW_FILTER] or GC_Values[GC_CSV_ROW_DROP_FILTER]:
if GC_Values[GC_CSV_ROW_FILTER]: if GC_Values[GC_CSV_ROW_FILTER]: