manage session
This commit is contained in:
@ -135,18 +135,15 @@ def list_sessions(type_): # pragma: optional cover
|
||||
return storage_type.get().list_sessions()
|
||||
|
||||
|
||||
def delete_session(type_, session_id): # pragma: optional cover
|
||||
def delete_session(session_id): # pragma: optional cover
|
||||
"""Delete a selected session, be careful, you can deleted a session
|
||||
use by an other instance
|
||||
:params session_id: id of session to delete
|
||||
"""
|
||||
storage_module = storage_type.get()
|
||||
session = storage_module.storage.getsession()
|
||||
#if type_ == 'option':
|
||||
# storage_option_type.get().delete_session(session_id, session)
|
||||
#else:
|
||||
storage_module.value.delete_session(session_id, session)
|
||||
storage_module.storage.delete_session(session_id, session)
|
||||
storage_module.value.delete_session(session_id)
|
||||
storage_module.storage.delete_session(session_id)
|
||||
if session:
|
||||
session.commit()
|
||||
del(session)
|
||||
|
@ -32,7 +32,7 @@ def list_sessions(): # pragma: optional cover
|
||||
return _list_sessions
|
||||
|
||||
|
||||
def delete_session(session_id, session): # pragma: optional cover
|
||||
def delete_session(session_id): # pragma: optional cover
|
||||
raise ConfigError(_('dictionary storage cannot delete session'))
|
||||
|
||||
|
||||
|
@ -46,7 +46,8 @@ def list_sessions():
|
||||
return names
|
||||
|
||||
|
||||
def delete_session(session_id, _session_id=None):
|
||||
def delete_session(session_id,
|
||||
_session_id=None):
|
||||
cursor = CONN.cursor()
|
||||
if _session_id is None:
|
||||
_session_id = cursor.execute("SELECT session_id FROM session WHERE session = ?",
|
||||
@ -60,6 +61,7 @@ def delete_session(session_id, _session_id=None):
|
||||
cursor.execute("DELETE FROM information WHERE session_id = ?", (_session_id,))
|
||||
cursor.execute("DELETE FROM session WHERE session_id = ?", (_session_id,))
|
||||
CONN.commit()
|
||||
cursor.close()
|
||||
|
||||
global CONN
|
||||
CONN = None
|
||||
@ -80,7 +82,8 @@ class Storage(object):
|
||||
self._cursor = self._conn.cursor()
|
||||
self.session_name = session_id
|
||||
if init:
|
||||
session_table = 'CREATE TABLE IF NOT EXISTS session(session_id INTEGER, session TEXT UNIQUE, PRIMARY KEY(session_id))'
|
||||
session_table = 'CREATE TABLE IF NOT EXISTS session(session_id INTEGER, '
|
||||
session_table += 'session TEXT UNIQUE, persistent BOOL, PRIMARY KEY(session_id))'
|
||||
settings_table = 'CREATE TABLE IF NOT EXISTS property(path TEXT,'
|
||||
settings_table += 'properties text, session_id INTEGER, PRIMARY KEY(path, session_id), '
|
||||
settings_table += 'FOREIGN KEY(session_id) REFERENCES session(session_id))'
|
||||
@ -100,11 +103,18 @@ class Storage(object):
|
||||
self.execute(informations_table, commit=False)
|
||||
self.execute(settings_table, commit=False)
|
||||
self.execute(permissives_table, commit=False)
|
||||
try:
|
||||
self.execute('INSERT INTO session(session) VALUES (?)', (session_id,))
|
||||
except sqlite3.IntegrityError:
|
||||
raise ConflictError(_('session "{}" already used').format(session_id))
|
||||
self.session_id = self._cursor.lastrowid
|
||||
self.session_id = None
|
||||
if self.persistent:
|
||||
select = self.select("SELECT session_id FROM session WHERE session = ?", (session_id,))
|
||||
if select is not None:
|
||||
self.session_id = select[0]
|
||||
if self.session_id is None:
|
||||
try:
|
||||
self.execute('INSERT INTO session(session, persistent) VALUES (?, ?)',
|
||||
(session_id, persistent))
|
||||
except sqlite3.IntegrityError:
|
||||
raise ConflictError(_('session "{}" already used').format(session_id))
|
||||
self.session_id = self._cursor.lastrowid
|
||||
|
||||
def commit(self):
|
||||
self._conn.commit()
|
||||
@ -126,8 +136,6 @@ class Storage(object):
|
||||
|
||||
def __del__(self):
|
||||
self._cursor.close()
|
||||
#FIXME
|
||||
#self._conn.close()
|
||||
if not self.persistent:
|
||||
if delete_session is not None:
|
||||
session_id = getattr(self, 'session_id', None)
|
||||
|
Reference in New Issue
Block a user