start works on storage

This commit is contained in:
2014-04-12 22:47:52 +02:00
parent 194c82faad
commit 299e51e806
5 changed files with 44 additions and 21 deletions

View File

@ -55,9 +55,8 @@ class StorageType(object):
def get(self):
if self.storage_type is None:
self.storage_type = self.default_storage
storage = self.storage_type
if self.mod is None:
modulepath = 'tiramisu.storage.{0}'.format(storage)
modulepath = 'tiramisu.storage.{0}'.format(self.storage_type)
mod = __import__(modulepath)
for token in modulepath.split(".")[1:]:
mod = getattr(mod, token)
@ -66,9 +65,10 @@ class StorageType(object):
storage_type = StorageType()
storage_option_type = StorageType()
def set_storage(name, **kwargs):
def set_storage(type_, name, **kwargs):
"""Change storage's configuration
:params name: is the storage name. If storage is already set, cannot
@ -76,8 +76,12 @@ def set_storage(name, **kwargs):
Other attributes are differents according to the selected storage's name
"""
storage_type.set(name)
setting = storage_type.get().setting
if type_ == 'option':
storage_option_type.set(name)
setting = storage_option_type.get().setting
else:
storage_type.set(name)
setting = storage_type.get().setting
for option, value in kwargs.items():
try:
getattr(setting, option)
@ -96,10 +100,13 @@ def _impl_getstate_setting():
return state
def get_storage(session_id, persistent, test):
def get_storage(type_, session_id, persistent, test):
"""all used when __setstate__ a Config
"""
return storage_type.get().Storage(session_id, persistent, test)
if type_ == 'option':
return storage_option_type.get().Storage(session_id, persistent, test)
else:
return storage_type.get().Storage(session_id, persistent, test)
def get_storages(context, session_id, persistent):
@ -113,18 +120,29 @@ def get_storages(context, session_id, persistent):
return imp.Settings(storage), imp.Values(storage)
def list_sessions():
def get_storages_option():
imp = storage_option_type.get()
return imp.Base, imp.OptionDescription
def list_sessions(type_):
"""List all available session (persistent or not persistent)
"""
return storage_type.get().list_sessions()
if type_ == 'option':
return storage_option_type.get().list_sessions()
else:
return storage_type.get().list_sessions()
def delete_session(session_id):
def delete_session(type_, session_id):
"""Delete a selected session, be careful, you can deleted a session
use by an other instance
:params session_id: id of session to delete
"""
return storage_type.get().delete_session(session_id)
if type_ == 'option':
return storage_option_type.get().delete_session(session_id)
else:
return storage_type.get().delete_session(session_id)
__all__ = (set_storage, list_sessions, delete_session)

View File

@ -27,5 +27,7 @@ use it. But if something goes wrong, you will lost your modifications.
from .value import Values
from .setting import Settings
from .storage import setting, Storage, list_sessions, delete_session
from .option import Base, OptionDescription
__all__ = (setting, Values, Settings, Storage, list_sessions, delete_session)
__all__ = (setting, Values, Settings, Storage, list_sessions, delete_session,
Base, OptionDescription)