refactor validation
[tiramisu.git] / tiramisu / storage / __init__.py
index 5e51f1d..e62bf19 100644 (file)
@@ -27,6 +27,7 @@ configurator ``set_storage()``.
 
 
 from time import time
+from random import randint
 import os
 from tiramisu.error import ConfigError
 from tiramisu.i18n import _
@@ -66,6 +67,8 @@ class StorageType(object):
 
 storage_type = StorageType()
 storage_option_type = StorageType()
+storage_validation = StorageType()
+storage_validation.set('dictionary')
 
 
 def set_storage(type_, name, **kwargs):  # pragma: optional cover
@@ -105,13 +108,15 @@ def get_storage(type_, session_id, persistent, test):  # pragma: optional cover
     """
     if type_ == 'option':
         return storage_option_type.get().Storage(session_id, persistent, test)
-    else:
+    elif type_ == 'config':
         return storage_type.get().Storage(session_id, persistent, test)
+    else:
+        return storage_validation.get().Storage(session_id, persistent, test)
 
 
 def get_storages(context, session_id, persistent):
     def gen_id(config):
-        return str(id(config)) + str(time())
+        return str(id(config)) + str(time()) + str(randint(0, 500))
 
     if session_id is None:
         session_id = gen_id(context)
@@ -119,10 +124,8 @@ def get_storages(context, session_id, persistent):
     storage = imp.Storage(session_id, persistent)
     try:
         return imp.Settings(storage), imp.Values(storage)
-    except:
-        import traceback
-        traceback.print_exc()
-        raise Exception('rah')
+    except Exception, err:
+        raise Exception(_('unable to get storages:') + str(err))
 
 
 def get_storages_option(type_):
@@ -133,6 +136,12 @@ def get_storages_option(type_):
         return imp.StorageOptionDescription
 
 
+def get_storages_validation():
+    imp = storage_validation.get()
+    storage = imp.Storage('pouet', persistent=False, test=True)
+    return imp.Settings(storage), imp.Values(storage)
+
+
 def list_sessions(type_):  # pragma: optional cover
     """List all available session (persistent or not persistent)
     """