X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSessions.py;h=6a03068b81f5e96633264861ed979a2fef9d2cfe;hb=e70e20fdbececafef842ec7b330fd48db42e614e;hp=e0a57b325ec1f810146b7aaf0b96cbaadbd5d05b;hpb=4604006f235246d8480da96e488c0c7fd6a09c91;p=plcapi.git diff --git a/PLC/Sessions.py b/PLC/Sessions.py index e0a57b3..6a03068 100644 --- a/PLC/Sessions.py +++ b/PLC/Sessions.py @@ -65,21 +65,29 @@ class Sessions(Table): """ def __init__(self, api, session_filter = None, expires = int(time.time())): - Table.__init__(self, api, Session) + Table.__init__(self, api, Session) sql = "SELECT %s FROM view_sessions WHERE True" % \ ", ".join(Session.fields) - if session_filter is not None: - if isinstance(session_filter, (list, tuple, set)): - # Separate the list into integers and strings + 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) 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, dict): + session_filter = Filter(Session.fields, session_filter) + sql += " AND (%s) %s" % session_filter.sql(api, "AND") + elif isinstance(session_filter, (int, long)): + session_filter = Filter(Session.fields, {'person_id': session_filter}) + sql += " AND (%s) %s" % session_filter.sql(api, "AND") + elif isinstance(session_filter, StringTypes): + 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 if expires is not None: if expires >= 0: