# filter on fields
if not modifiers['-']:
if field not in self.fields:
- raise PLCInvalidArgument("Invalid filter field '%s'" % field)
+ raise PLCInvalidArgument(f"Invalid filter field '{field}'")
# handling array fileds always as compound values
if modifiers['&'] or modifiers['|']:
operator = "="
value = "'{}'"
else:
- field=""
- operator=""
+ field = ""
+ operator = ""
value = "FALSE"
- clause = "%s %s %s" % (field, operator, value)
+ clause = f"{field} {operator} {value}"
else:
vals = {}
for val in value:
subclauses = []
for operator in list(vals.keys()):
if operator == '=':
+ expanded = ",".join(vals[operator])
if modifiers['&']:
- subclauses.append("(%s @> ARRAY[%s])" % (field, ",".join(vals[operator])))
+ subclauses.append(f"({field} @> ARRAY[{expanded}])")
elif modifiers['|']:
- subclauses.append("(%s && ARRAY[%s])" % (field, ",".join(vals[operator])))
+ subclauses.append(f"({field} && ARRAY[{expanded}])")
else:
- subclauses.append("(%s IN (%s))" % (field, ",".join(vals[operator])))
+ subclauses.append(f"({field} IN ({expanded}))")
elif operator == 'IS':
- subclauses.append("(%s IS NULL)" % field)
+ subclauses.append(f"({field} IS NULL)")
else:
for value in vals[operator]:
- subclauses.append("(%s %s %s)" % (field, operator, value))
+ subclauses.append(f"({field} {operator} {value})")
clause = "(" + " OR ".join(subclauses) + ")"
else:
operator, value = get_op_and_val(value)
- clause = "%s %s %s" % (field, operator, value)
+ clause = f"{field} {operator} {value}"
if modifiers['~']:
- clause = " ( NOT %s ) " % (clause)
+ clause = f" ( NOT {clause} ) "
conditionals.append(clause)
# sorting and clipping
order = 'DESC'
if field not in self.fields:
raise PLCInvalidArgument("Invalid field %r in SORT filter"%field)
- sorts.append("%s %s"%(field,order))
+ sorts.append(f"{field} {order}")
# clipping
elif field == 'OFFSET':
clips.append("OFFSET %d"%value)
elif field == 'LIMIT' :
clips.append("LIMIT %d"%value)
- where_part = (" %s " % join_with).join(conditionals)
+ where_part = f" {join_with} ".join(conditionals)
clip_part = ""
if sorts:
clip_part += " ORDER BY " + ",".join(sorts)
if clips:
clip_part += " " + " ".join(clips)
if Filter.debug:
- logger.debug('Filter.sql: where_part={} - clip_part={}'
- .format(where_part, clip_part))
+ logger.debug(f"Filter.sql: {where_part=} - {clip_part=}")
return where_part, clip_part