]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/settings/base.py
Some improvements in cache.
[osqa.git] / forum / settings / base.py
index f640a7c1f850356895d8be9f1b1ec03cd0b50189..398ed11907d7b33c214d168eb5036ffa2900ef40 100644 (file)
@@ -66,10 +66,16 @@ class BaseSetting(object):
         self.set_value(self.default)
 
     def _parse(self, value):
-        try:
-            return self.base_type(value)
-        except:
-            return value
+        if not isinstance(value, self.base_type):
+            try:
+                return self.base_type(value)
+            except:
+                pass
+        return value
+
+class AnyTypeSetting(BaseSetting):
+     def _parse(self, value):
+        return value
 
 
 class Setting(object):
@@ -77,6 +83,9 @@ class Setting(object):
     sets = {}
 
     def __new__(cls, name, default, set=None, field_context=None):
+        if default is None:
+            return AnyTypeSetting(name, default, set, field_context)
+            
         deftype = type(default)
 
         if deftype in Setting.emulators: