X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/e945778bce1d0af9091f7be2503b06756298b905..0cfc940c3e7643ed83e8d54f647c7e09d80c1bc4:/forum/settings/base.py diff --git a/forum/settings/base.py b/forum/settings/base.py index db02b6c..e160970 100644 --- a/forum/settings/base.py +++ b/forum/settings/base.py @@ -66,10 +66,12 @@ 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 Setting(object): @@ -82,8 +84,8 @@ class Setting(object): if deftype in Setting.emulators: emul = Setting.emulators[deftype] else: - emul = type(deftype.__name__ + cls.__name__, (BaseSetting,), {}) - emul.base_type = deftype + 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: