conflicts = Slices(self.api, [name])
for slice in conflicts:
if 'slice_id' not in self or self['slice_id'] != slice['slice_id']:
- raise PLCInvalidArgument("Slice name already in use, %s"%name)
+ raise PLCInvalidArgument(f"Slice name already in use, {name}")
return name
# Clean up miscellaneous join tables
for table in self.join_tables:
- self.api.db.do("DELETE FROM %s WHERE slice_id = %d" % \
- (table, self['slice_id']))
+ self.api.db.do(
+ f"DELETE FROM {table} WHERE slice_id = {self['slice_id']}")
# Mark as deleted
self['is_deleted'] = True
view = "view_slices"
# as many left joins as requested tags
for tagname in self.tag_columns:
- view= "%s left join %s using (%s)"%(view,Slice.tagvalue_view_name(tagname),
- Slice.primary_key)
+ table = Slice.tagvalue_view_name(tagname)
+ view = f"{view} left join {table} using ({Slice.primary_key})"
- sql = "SELECT %s FROM %s WHERE is_deleted IS False" % \
- (", ".join(list(self.columns.keys())+list(self.tag_columns.keys())),view)
+ selected = ", ".join(list(self.columns.keys())+list(self.tag_columns.keys()))
+ sql = f"SELECT {selected} FROM {view} WHERE is_deleted IS False"
if expires is not None:
if expires >= 0:
- sql += " AND expires > %d" % expires
+ sql += f" AND expires > {expires}"
else:
expires = -expires
- sql += " AND expires < %d" % expires
+ sql += f" AND expires < {expires}"
if slice_filter is not None:
if isinstance(slice_filter, (list, tuple, set)):
slice_filter = Filter(Slice.fields, {'slice_id':slice_filter})
sql += " AND (%s) %s" % slice_filter.sql(api, "AND")
else:
- raise PLCInvalidArgument("Wrong slice filter %r"%slice_filter)
+ raise PLCInvalidArgument(f"Wrong slice filter {slice_filter!r}")
self.selectall(sql)