Changeset 872


Ignore:
Timestamp:
07/20/06 17:26:51 (7 years ago)
Author:
mglb1
Message:
  • Keep the list of sessions as a property of the ccsd_session class

rather than as a global variable.

  • Remove yourself from the list when shudown() is caleed on a session instance
  • Remove XXX comment about checking for duplicate sessions when initialising. If you want this behaviour use the startSession function
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccsd/trunk/crcnetd/_utils/ccsd_session.py

    r871 r872  
    5656     
    5757    """ 
    58      
     58 
     59    # Currently active sessions 
     60    sessions = {} 
     61 
    5962    timeout = config_get("session", "timeout", DEFAULT_SESSION_TIMEOUT) 
    6063    cookie_timeout = config_get("session", "cookie_timeout", \ 
     
    8285        else: 
    8386            self.token = token 
    84  
    85         # XXX: Check that there is not another session already open for 
    86         # this user! 
    8787         
    8888        # Setup a database connection   
     
    111111        else: 
    112112            self.session_id = sid 
    113  
     113         
    114114        # No changeset or revision active initially 
    115115        self.changeset = 0 
     
    519519        self.db.close() 
    520520         
     521        del self.sessions[self.session_id] 
    521522        log_info("Session #%s (%s) shutdown." % \ 
    522523               (self.session_id, self.username)) 
     
    616617        self.db.close() 
    617618         
     619        del self.sessions[self.session_id]  
    618620        log_info("Session #%s (%s) shutdown." % \ 
    619621               (self.session_id, self.username)) 
     
    655657    """Returns a session object for the specified session""" 
    656658 
    657     if session_id not in _sessions.keys(): 
     659    if session_id not in ccsd_session.sessions.keys(): 
    658660        return None 
    659661     
    660     return _sessions[session_id] 
     662    return ccsd_session.sessions[session_id] 
    661663 
    662664def getSessionE(session_id): 
     
    667669    """ 
    668670 
    669     if session_id not in _sessions.keys(): 
     671    if session_id not in ccsd_session.sessions.keys(): 
    670672        raise ccsd_session_error("Session does not exist!") 
    671673     
    672     return _sessions[session_id] 
     674    return ccsd_session.sessions[session_id] 
    673675 
    674676@exportViaXMLRPC(SESSION_NONE, AUTH_NONE) 
     
    694696 
    695697    # Validate the session parameters 
    696     if sauth["session_id"] not in _sessions.keys(): 
     698    if sauth["session_id"] not in ccsd_session.sessions.keys(): 
    697699        return SESSION_NONE 
    698     session = _sessions[sauth["session_id"]] 
     700    session = ccsd_session.sessions[sauth["session_id"]] 
    699701    if session.username != sauth["username"]: 
    700702        raise ccsd_session_error("Session username does not match!") 
     
    704706    # Update the expiry time 
    705707    session.updateExpiry() 
    706     _sessions[sauth["session_id"]] = session 
     708    ccsd_session.sessions[sauth["session_id"]] = session 
    707709     
    708710    # Must be ok 
     
    714716 
    715717    # Loop through the list of sessions and remove expired ones 
    716     for sessionID,session in _sessions.items(): 
     718    for sessionID,session in ccsd_session.sessions.items(): 
    717719        # Never expire the admin session 
    718720        if sessionID==ADMIN_SESSION_ID: continue 
    719721        rv = session.isExpired() 
    720722        if rv == 1: 
    721             del _sessions[sessionID] 
     723            del ccsd_session.sessions[sessionID] 
    722724 
    723725    # Also delete expired login cookies 
     
    733735    program restarts. 
    734736    """ 
    735     for sessionID,session in _sessions.items(): 
     737    for sessionID,session in ccsd_session.sessions.items(): 
    736738        session.close(persist=True) 
    737739 
     
    794796     
    795797    # Check for existing sessions 
    796     for sess_id, sess in _sessions.items(): 
     798    for sess_id, sess in ccsd_session.sessions.items(): 
    797799        # Skip the administrative session 
    798800        if sess_id == ADMIN_SESSION_ID: 
     
    809811                    "session_id=%s", (SESSION_RW, sess_id)) 
    810812            sess.mode = SESSION_RW 
    811             _sessions[sess_id] = sess 
     813            ccsd_session.sessions[sess_id] = sess 
    812814            return sess.getSessionObject() 
    813815 
     
    818820    # Register it in the list of sessions 
    819821    obj = newsession.getSessionObject() 
    820     _sessions[obj["sessionID"]] = newsession 
     822    ccsd_session.sessions[obj["sessionID"]] = newsession 
    821823 
    822824    # Check for first_login  
     
    835837    newsession = ccsd_basic_session(username, mode) 
    836838    obj = newsession.getSessionObject() 
    837     _sessions[obj["sessionID"]] = newsession 
     839    ccsd_session.sessions[obj["sessionID"]] = newsession 
    838840     
    839841    return obj 
     
    903905    session.shutdown() 
    904906 
    905     # Remove from the list 
    906     del _sessions[session_id] 
    907      
    908907    return 0 
    909908 
     
    964963 
    965964    count = 0 
    966     for session_id2,tsession in _sessions.items(): 
     965    for session_id2,tsession in ccsd_session.sessions.items(): 
    967966        if session_id2 == session_id: 
    968967            continue 
     
    984983@exportViaXMLRPC(SESSION_NONE, AUTH_NONE) 
    985984def getNoSessions(): 
    986     return len(_sessions) 
     985    return len(ccsd_session.sessions) 
    987986 
    988987@exportViaXMLRPC(SESSION_NONE, AUTH_NONE) 
     
    995994# Session Initialisation  
    996995##################################################################### 
    997 _sessions = {} 
    998996def initSessions(): 
    999997    try: 
     
    10091007 
    10101008        # Create a program wide 'admin' session which is always present 
    1011         _sessions[ADMIN_SESSION_ID] = ccsd_session("admin", SESSION_RW, "",  
    1012                 -1, -1, ADMIN_SESSION_ID) 
     1009        ccsd_session.sessions[ADMIN_SESSION_ID] = \ 
     1010                ccsd_session("admin", SESSION_RW, "", -1, -1, ADMIN_SESSION_ID) 
    10131011 
    10141012        # Load any other saved sessions 
    1015         _sessions.update(loadSessions()) 
     1013        ccsd_session.sessions.update(loadSessions()) 
    10161014 
    10171015        log_info("Successfully loaded sessions") 
Note: See TracChangeset for help on using the changeset viewer.