]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/settings/base.py
Don't print anything.
[osqa.git] / forum / settings / base.py
index 08f3ea8b60ca66504b9eb7477c30f3818356d717..e16097027102d0cb6f19b443aab9cf705897a2e8 100644 (file)
@@ -29,6 +29,9 @@ class BaseSetting(object):
 
             Setting.sets[set.name].append(self)
 
 
             Setting.sets[set.name].append(self)
 
+    def __str__(self):
+        return str(self.value)
+
     def __unicode__(self):
         return unicode(self.value)
 
     def __unicode__(self):
         return unicode(self.value)
 
@@ -63,7 +66,12 @@ class BaseSetting(object):
         self.set_value(self.default)
 
     def _parse(self, value):
         self.set_value(self.default)
 
     def _parse(self, value):
-        return value
+        if not isinstance(value, self.base_type):
+            try:
+                return self.base_type(value)
+            except:
+                pass
+        return value        
 
 
 class Setting(object):
 
 
 class Setting(object):
@@ -76,7 +84,8 @@ class Setting(object):
         if deftype in Setting.emulators:
             emul = Setting.emulators[deftype]
         else:
         if deftype in Setting.emulators:
             emul = Setting.emulators[deftype]
         else:
-            emul = type(deftype.__name__ + cls.__name__, (BaseSetting,), {})
+            emul = type(deftype.__name__ + cls.__name__, (BaseSetting,), {'base_type': deftype})
+
             fns = [n for n, f in [(p, getattr(deftype, p)) for p in dir(deftype) if not p in dir(cls)] if callable(f)]
 
             for n in fns:
             fns = [n for n, f in [(p, getattr(deftype, p)) for p in dir(deftype) if not p in dir(cls)] if callable(f)]
 
             for n in fns: