ConstError in tiramisu/error.py
storage_type is now unique rename _const => _NameSpace can change storage's options in set_storage storage : add Setting object in storage rename enumerate to list_sessions rename delete to delete_session auto-create owner when load sqlite3 storage and in getowner
This commit is contained in:
@ -23,11 +23,18 @@ from tiramisu.i18n import _
|
||||
from tiramisu.error import ConfigError
|
||||
|
||||
|
||||
def enumerate():
|
||||
class Setting(object):
|
||||
pass
|
||||
|
||||
|
||||
setting = Setting()
|
||||
|
||||
|
||||
def list_sessions():
|
||||
return []
|
||||
|
||||
|
||||
def delete(session_id):
|
||||
def delete_session(session_id):
|
||||
raise ConfigError(_('dictionary storage cannot delete session'))
|
||||
|
||||
|
||||
|
@ -25,22 +25,27 @@ import sqlite3
|
||||
from glob import glob
|
||||
|
||||
|
||||
extension = 'db'
|
||||
dir_database = '/tmp'
|
||||
class Setting(object):
|
||||
extension = 'db'
|
||||
dir_database = '/tmp'
|
||||
|
||||
|
||||
setting = Setting()
|
||||
|
||||
|
||||
def _gen_filename(name):
|
||||
return join(dir_database, '{0}.{1}'.format(name, extension))
|
||||
return join(setting.dir_database, '{0}.{1}'.format(name,
|
||||
setting.extension))
|
||||
|
||||
|
||||
def enumerate():
|
||||
def list_sessions():
|
||||
names = []
|
||||
for filename in glob(_gen_filename('*')):
|
||||
names.append(basename(splitext(filename)[0]))
|
||||
return names
|
||||
|
||||
|
||||
def delete(session_id):
|
||||
def delete_session(session_id):
|
||||
unlink(_gen_filename(session_id))
|
||||
|
||||
|
||||
@ -73,7 +78,7 @@ class Storage(object):
|
||||
self._cursor.close()
|
||||
self._conn.close()
|
||||
if not self.is_persistent:
|
||||
delete(self._session_id)
|
||||
delete_session(self._session_id)
|
||||
|
||||
|
||||
class Cache(object):
|
||||
|
@ -28,11 +28,16 @@ class Values(Cache):
|
||||
def __init__(self, storage):
|
||||
"""init plugin means create values storage
|
||||
"""
|
||||
values_table = 'CREATE TABLE IF NOT EXISTS value(path text primary '
|
||||
values_table += 'key, value text, owner text)'
|
||||
# should init cache too
|
||||
super(Values, self).__init__('value', storage)
|
||||
values_table = 'CREATE TABLE IF NOT EXISTS value(path text primary '
|
||||
values_table += 'key, value text, owner text)'
|
||||
self.storage.execute(values_table)
|
||||
for owner in self.storage.select("SELECT DISTINCT owner FROM value", tuple(), False):
|
||||
try:
|
||||
getattr(owners, owner[0])
|
||||
except AttributeError:
|
||||
owners.add_owner(owner[0])
|
||||
|
||||
# sqlite
|
||||
def _sqlite_select(self, path):
|
||||
@ -102,4 +107,10 @@ class Values(Cache):
|
||||
if owner is None:
|
||||
return default
|
||||
else:
|
||||
return getattr(owners, owner[0])
|
||||
owner = owner[0]
|
||||
# autocreate owners
|
||||
try:
|
||||
return getattr(owners, owner)
|
||||
except AttributeError:
|
||||
owners.add_owner(owner)
|
||||
return getattr(owners, owner)
|
||||
|
Reference in New Issue
Block a user