def create_settings_from_fixture(fixture): """Inserts the settings from a fixture into the database. Returns the created groups and settings. :param fixture: The fixture which should inserted. """ created_settings = {} for settingsgroup in fixture: group = SettingGroupMan( key=settingsgroup[0], name=settingsgroup[1]["name"], description=settingsgroup[1]["description"] ) group.save() created_settings[group] = [] for settings in settingsgroup[1]["settings"]: setting = SettingMan( key=settings[0], value=settings[1]["value"], value_type=settings[1]["value_type"], name=settings[1]["name"], description=settings[1]["description"], extra=settings[1].get("extra", ""), # Optional field settingsgroup=group.key ) if setting: setting.save() created_settings[group].append(setting) return created_settings
def __len__(self): return len(SettingMan.as_dict())
def __iter__(self): return iter(SettingMan.as_dict())
def __setitem__(self, key, value): SettingMan.update({key.lower(): value})
def __getitem__(self, key): return SettingMan.as_dict()[key]
def update_settings_from_fixture(fixture, overwrite_group=False, overwrite_setting=False): """Updates the database settings from a fixture. Returns the updated groups and settings. :param fixture: The fixture which should be inserted/updated. :param overwrite_group: Set this to ``True`` if you want to overwrite the group if it already exists. Defaults to ``False``. :param overwrite_setting: Set this to ``True`` if you want to overwrite the setting if it already exists. Defaults to ``False``. """ updated_settings = {} for settingsgroup in fixture: group = SettingGroupMan.query.filter_by(key=settingsgroup[0]).first() if (group is not None and overwrite_group) or group is None: if group is not None: group.name = settingsgroup[1]["name"] group.description = settingsgroup[1]["description"] else: group = SettingGroupMan( key=settingsgroup[0], name=settingsgroup[1]["name"], description=settingsgroup[1]["description"] ) group.save() updated_settings[group] = [] for settings in settingsgroup[1]["settings"]: setting = SettingMan.query.filter_by(key=settings[0]).first() if (setting is not None and overwrite_setting) or setting is None: if setting is not None: setting.value = settings[1]["value"] setting.value_type = settings[1]["value_type"] setting.name = settings[1]["name"] setting.description = settings[1]["description"] setting.extra = settings[1].get("extra", "") setting.settingsgroup = group.key else: setting = SettingMan( key=settings[0], value=settings[1]["value"], value_type=settings[1]["value_type"], name=settings[1]["name"], description=settings[1]["description"], extra=settings[1].get("extra", ""), settingsgroup=group.key ) setting.save() updated_settings[group].append(setting) return updated_settings