#
# Functions for interacting with the leases table in the database
#
-# $Id$
-# $URL$
# Thierry Parmentelat -- INRIA
#
related_fields = { }
- # leases do not have arbitrary boundaries
- # f_from and t_until are rounded to this period of time
- # initial model is one hour
- granularity = 60*60
-
def validate_time (self, timestamp, round_up):
# convert to long
timestamp = Timestamp.cast_long(timestamp)
+ # retrieve configured granularity
+ granularity = self.api.config.PLC_RESERVATION_GRANULARITY
# the trick for rounding up rather than down
- if round_up: timestamp += (Lease.granularity-1)
+ if round_up:
+ timestamp += (granularity-1)
# round down
- timestamp = (timestamp/Lease.granularity) * Lease.granularity
+ timestamp = (timestamp // granularity) * granularity
# return a SQL string
return Timestamp.sql_validate_utc(timestamp)
- # round UP
- def validate_t_from(self,timestamp):
- return self.validate_time (timestamp, round_up=True)
- # round DOWN
+ # round UP
+ def validate_t_from(self, timestamp):
+ return self.validate_time(timestamp, round_up=True)
+ # round DOWN
def validate_t_until (self, timestamp):
- return self.validate_time (timestamp, round_up=False)
+ return self.validate_time(timestamp, round_up=False)
class Leases(Table):
"""
# the view that we're selecting upon: start with view_leases
view = "view_leases"
- sql = "SELECT %s FROM %s WHERE true" % (", ".join(self.columns.keys()),view)
+ sql = "SELECT %s FROM %s WHERE true" % (", ".join(list(self.columns.keys())),view)
if lease_filter is not None:
-
- if isinstance (lease_filter, int):
- lease_filter = Filter (Lease.fields, {'lease_id': lease_filter})
- elif isinstance(lease_filter, (list, tuple, set)):
+ if isinstance(lease_filter, (list, tuple, set, int)):
lease_filter = Filter(Lease.fields, {'lease_id': lease_filter})
elif isinstance(lease_filter, dict):
lease_filter = LeaseFilter(Lease.fields, lease_filter)
else:
- raise PLCInvalidArgument, "Wrong lease filter %r"%lease_filter
+ raise PLCInvalidArgument("Wrong lease filter %r"%lease_filter)
sql += " AND (%s) %s" % lease_filter.sql(api)
self.selectall(sql)