X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSessions.py;h=720565d138313e2ef520786a0e2eb1b99f08cea1;hb=bc7bd41556e1fd137acf4df415e5dc0f6d5e02c4;hp=6a03068b81f5e96633264861ed979a2fef9d2cfe;hpb=21d187714285d9818fd94509b015ba069facb7ef;p=plcapi.git diff --git a/PLC/Sessions.py b/PLC/Sessions.py index 6a03068..720565d 100644 --- a/PLC/Sessions.py +++ b/PLC/Sessions.py @@ -1,4 +1,3 @@ -from types import StringTypes import random import base64 import time @@ -29,7 +28,7 @@ class Session(Row): def validate_expires(self, expires): if expires < time.time(): - raise PLCInvalidArgument, "Expiration date must be in the future" + raise PLCInvalidArgument("Expiration date must be in the future") return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(expires)) @@ -44,16 +43,16 @@ class Session(Row): add(self, node, commit = commit) def sync(self, commit = True, insert = None): - if not self.has_key('session_id'): + if 'session_id' not in self: # Before a new session is added, delete expired sessions expired = Sessions(self.api, expires = -int(time.time())) for session in expired: session.delete(commit) # Generate 32 random bytes - bytes = random.sample(xrange(0, 256), 32) + int8s = random.sample(range(0, 256), 32) # Base64 encode their string representation - self['session_id'] = base64.b64encode("".join(map(chr, bytes))) + self['session_id'] = base64.b64encode(bytes(int8s)).decode() # Force insert insert = True @@ -73,21 +72,21 @@ class Sessions(Table): if session_filter is not None: if isinstance(session_filter, (list, tuple, set)): # Separate the list into integers and strings - ints = filter(lambda x: isinstance(x, (int, long)), session_filter) - strs = filter(lambda x: isinstance(x, StringTypes), session_filter) + ints = [x for x in session_filter if isinstance(x, int)] + strs = [x for x in session_filter if isinstance(x, str)] session_filter = Filter(Session.fields, {'person_id': ints, 'session_id': strs}) sql += " AND (%s) %s" % session_filter.sql(api, "OR") elif isinstance(session_filter, dict): session_filter = Filter(Session.fields, session_filter) sql += " AND (%s) %s" % session_filter.sql(api, "AND") - elif isinstance(session_filter, (int, long)): + elif isinstance(session_filter, int): session_filter = Filter(Session.fields, {'person_id': session_filter}) sql += " AND (%s) %s" % session_filter.sql(api, "AND") - elif isinstance(session_filter, StringTypes): + elif isinstance(session_filter, str): session_filter = Filter(Session.fields, {'session_id': session_filter}) sql += " AND (%s) %s" % session_filter.sql(api, "AND") else: - raise PLCInvalidArgument, "Wrong session filter"%session_filter + raise PLCInvalidArgument("Wrong session filter"%session_filter) if expires is not None: if expires >= 0: