storage no more in setting.py, code is now in storage/__init__.py
This commit is contained in:
@ -24,7 +24,7 @@ from time import time
|
||||
from copy import copy
|
||||
import weakref
|
||||
from tiramisu.error import (RequirementError, PropertiesOptionError,
|
||||
ConstError, ConfigError)
|
||||
ConstError)
|
||||
from tiramisu.i18n import _
|
||||
|
||||
|
||||
@ -38,26 +38,6 @@ rw_append = set(['frozen', 'disabled', 'validator', 'hidden'])
|
||||
default_properties = ('expire', 'validator')
|
||||
|
||||
|
||||
class StorageType:
|
||||
default_storage = 'dictionary'
|
||||
storage_type = None
|
||||
|
||||
def set_storage(self, name):
|
||||
if self.storage_type is not None:
|
||||
raise ConfigError(_('storage_type is already set, cannot rebind it'))
|
||||
self.storage_type = name
|
||||
|
||||
def get_storage(self):
|
||||
if self.storage_type is None:
|
||||
self.storage_type = self.default_storage
|
||||
storage = self.storage_type
|
||||
return 'tiramisu.storage.{0}.storage'.format(
|
||||
storage)
|
||||
|
||||
|
||||
storage_type = StorageType()
|
||||
|
||||
|
||||
class _NameSpace:
|
||||
"""convenient class that emulates a module
|
||||
and builds constants (that is, unique names)"""
|
||||
@ -203,39 +183,6 @@ class Property(object):
|
||||
return str(list(self._properties))
|
||||
|
||||
|
||||
def set_storage(name, **args):
|
||||
storage_type.set_storage(name)
|
||||
settings = __import__(storage_type.get_storage(), globals(), locals(),
|
||||
['Setting']).Setting()
|
||||
for option, value in args.items():
|
||||
try:
|
||||
getattr(settings, option)
|
||||
setattr(settings, option, value)
|
||||
except AttributeError:
|
||||
raise ValueError(_('option {0} not already exists in storage {1}'
|
||||
'').format(option, name))
|
||||
|
||||
|
||||
def get_storage(context, session_id, persistent):
|
||||
def gen_id(config):
|
||||
return str(id(config)) + str(time())
|
||||
|
||||
if session_id is None:
|
||||
session_id = gen_id(context)
|
||||
return __import__(storage_type.get_storage(), globals(), locals(),
|
||||
['Storage']).Storage(session_id, persistent)
|
||||
|
||||
|
||||
def list_sessions():
|
||||
return __import__(storage_type.get_storage(), globals(), locals(),
|
||||
['list_sessions']).list_sessions()
|
||||
|
||||
|
||||
def delete_session(session_id):
|
||||
return __import__(storage_type.get_storage(), globals(), locals(),
|
||||
['delete_session']).delete_session(session_id)
|
||||
|
||||
|
||||
#____________________________________________________________
|
||||
class Settings(object):
|
||||
"``Config()``'s configuration options"
|
||||
@ -254,9 +201,7 @@ class Settings(object):
|
||||
# generic owner
|
||||
self._owner = owners.user
|
||||
self.context = weakref.ref(context)
|
||||
import_lib = 'tiramisu.storage.{0}.setting'.format(storage.storage)
|
||||
self._p_ = __import__(import_lib, globals(), locals(), ['Settings']
|
||||
).Settings(storage)
|
||||
self._p_ = storage
|
||||
|
||||
#____________________________________________________________
|
||||
# properties methods
|
||||
|
Reference in New Issue
Block a user