X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FLeaseFilter.py;h=de340ea4333161ea822441834894fe305cee59dd;hb=1b1b5a911bb005644baabb87ecba60602228a070;hp=84f84b7a1e531c1d267330150e0f56350fe6a06e;hpb=8303eacbcae9972d42971d50fa9fde93340c16bb;p=plcapi.git diff --git a/PLC/LeaseFilter.py b/PLC/LeaseFilter.py index 84f84b7..de340ea 100644 --- a/PLC/LeaseFilter.py +++ b/PLC/LeaseFilter.py @@ -21,18 +21,20 @@ class LeaseFilter(Filter): # general notes on input parameters # int_timestamp: number of seconds since the epoch # str_timestamp: see Timestamp.sql_validate - # timeslot: a tuple (from, until), each being either int_timestamp or + # timeslot: a list [from, until], each being either int_timestamp or # str_timestamp local_fields = { 'alive': Mixed( Parameter(int, "int_timestamp: leases alive at that time"), Parameter(str, "str_timestamp: leases alive at that time"), - Parameter(tuple, "timeslot: the leases alive during this timeslot")), - 'clip': Mixed( + Parameter(list, "timeslot: the leases alive during this timeslot"), + ), + 'clip': Mixed( Parameter(int, "int_timestamp: leases alive after that time"), Parameter(str, "str_timestamp: leases alive after that time"), - Parameter(tuple, "timeslot: the leases alive during this timeslot")), + Parameter(list, "timeslot: the leases alive during this timeslot"), + ), ########## macros # {'day' : 0} : all leases from today and on # {'day' : 1} : all leases today (localtime at the myplc) @@ -62,12 +64,11 @@ class LeaseFilter(Filter): # basic SQL utilities @staticmethod def sql_time_intersect(f1, u1, f2, u2): - # either f2 is in [f1,u1], or u2 is in [f1,u1], or f2<=f1<=u1<=u2 + # either f2 is in [f1,u1[, or u2 is in ]f1,u1], or f2<=f1= mark - return "({u1} >= {mark})".format(u1=u1, mark=mark) + return f"({u1} >= {mark})" # hooks for the local fields def sql_alive(self, alive): @@ -92,27 +91,25 @@ class LeaseFilter(Filter): # the lease is alive at that time if from <= alive <= until alive = LeaseFilter.quote(alive) return LeaseFilter.sql_time_in_range(alive, 't_from', 't_until') - elif isinstance(alive, tuple): + elif isinstance(alive, (tuple, list)): (f, u) = alive f = LeaseFilter.quote(f) u = LeaseFilter.quote(u) return LeaseFilter.sql_time_intersect(f, u, 't_from', 't_until') else: - raise PLCInvalidArgument("LeaseFilter: alive field {}" - .format(alive)) + raise PLCInvalidArgument(f"LeaseFilter: alive field {alive}") def sql_clip(self, clip): if isinstance(clip, int) or isinstance(clip, str): start = LeaseFilter.quote(clip) return LeaseFilter.sql_timeslot_after('t_from', 't_until', start) - elif isinstance(clip, tuple): + elif isinstance(clip, (tuple, list)): (f, u) = clip f = LeaseFilter.quote(f) u = LeaseFilter.quote(u) return LeaseFilter.sql_time_intersect(f, u, 't_from', 't_until') else: - raise PLCInvalidArgument("LeaseFilter: clip field {}" - .format(clip)) + raise PLCInvalidArgument(f"LeaseFilter: clip field {clip}") # the whole key to implementing day is to compute today's beginning def today_start(self): @@ -155,14 +152,14 @@ class LeaseFilter(Filter): try: # locate hook function associated with key method = LeaseFilter.__dict__['sql_' + k] - where_part += " {} {}({})"\ - .format(self.join_with, - self.negation[k], - method(self, self.local[k])) + where_part += ( + f" {self.join_with} {self.negation[k]}" + f"({method(self, self.local[k])})" + ) except Exception as e: raise PLCInvalidArgument( - "LeaseFilter: something wrong with filter" - "key {}, val was {} -- {}".format(k, v, e)) + f"LeaseFilter: something wrong with filter " + f"key {k}, value was {v} -- {e}") return (where_part, clip_part) # xxx not sure where this belongs yet