def merge_config_datas(dbdatas, appstruct): """ Merge the datas returned by form validation and the original dbdatas """ flat_appstruct = forms.flatten_appstruct(appstruct) for name, value in flat_appstruct.items(): dbdata = get_element_by_name(dbdatas, name) if not dbdata: # The key 'name' doesn't exist in the database, adding new one dbdata = Config(name=name, value=value) dbdatas.append(dbdata) else: dbdata.value = value return dbdatas
def _set_config_value(self, appstruct, config_key, appstruct_key): """ Set a config value :param appstruct: the form submitted values :param config_key: The name of the configuration key :param appstruct_key: The name of the key in the appstruct """ cfg_obj = self._get_actual_config_obj(config_key) value = appstruct.pop(appstruct_key, None) if value: if cfg_obj is None: cfg_obj = Config(name=config_key, value=value) self.dbsession.add(cfg_obj) else: cfg_obj.value = value self.dbsession.merge(cfg_obj) log.debug(u"Setting the new {0} : {1}".format(config_key, value))