def __getattr__(self, name): registry_setting = registry.get(name, None) if not registry_setting: raise AttributeError("Setting does not exist: %s" % name) try: setting = self.settings.get(name=name) registry_type = registry_setting["type"] if registry_type is bool: value = setting.value != "False" else: value = registry_type(setting.value) except Setting.DoesNotExist: value = registry_setting["default"] self.__dict__[name] = value return getattr(self, name)
def __setattr__(self, name, value): registry_setting = registry.get(name, None) if not registry_setting: self.__dict__[name] = value return if not registry_setting["editable"]: raise AttributeError("Read only setting value: %s" % name) self_value = self.__dict__.get(name, registry_setting["default"]) if value == self_value: return if value is None: self.settings.filter(name=name).delete() else: try: setting = self.settings.get(name=name) setting.value = value setting.save() except Setting.DoesNotExist: self.settings.create(name=name, value=value) self.__dict__[name] = value