def _determine_active_settings(self, slug, plugin): """Determines which settings are active. Returns a tuple in following order: ``form``, ``old_settings``, ``plugin_obj``, ``active_nav`` """ # Any ideas how to do this better? slug = slug if slug else 'general' active_nav = {} # used to build the navigation plugin_obj = None if plugin is not None: plugin_obj = PluginRegistry.query.filter_by(name=plugin ).first_or_404() active_nav.update( { 'key': plugin_obj.name, 'title': plugin_obj.name.title() } ) form = plugin_obj.get_settings_form() old_settings = plugin_obj.settings elif slug is not None: group_obj = SettingsGroup.query.filter_by(key=slug).first_or_404() active_nav.update({'key': group_obj.key, 'title': group_obj.name}) form = Setting.get_form(group_obj)() old_settings = Setting.get_settings(group_obj) return form, old_settings, plugin_obj, active_nav
def get(self, slug=None): slug = slug if slug else 'general' # get the currently active group active_group = SettingsGroup.query.filter_by(key=slug).first_or_404() # get all groups - used to build the navigation all_groups = SettingsGroup.query.all() SettingsForm = Setting.get_form(active_group) old_settings = Setting.get_settings(active_group) form = SettingsForm() for key, values in iteritems(old_settings): try: form[key].data = values['value'] except (KeyError, ValueError): pass return render_template( 'management/settings.html', form=form, all_groups=all_groups, active_group=active_group )
def post(self, slug=None): slug = slug if slug else 'general' # get the currently active group active_group = SettingsGroup.query.filter_by(key=slug).first_or_404() # get all groups - used to build the navigation all_groups = SettingsGroup.query.all() SettingsForm = Setting.get_form(active_group) old_settings = Setting.get_settings(active_group) new_settings = {} form = SettingsForm() if form.validate_on_submit(): for key, values in iteritems(old_settings): try: # check if the value has changed if values['value'] == form[key].data: continue else: new_settings[key] = form[key].data except KeyError: pass Setting.update(settings=new_settings, app=current_app) flash(_('Settings saved.'), 'success') else: for key, values in iteritems(old_settings): try: form[key].data = values['value'] except (KeyError, ValueError): pass return render_template( 'management/settings.html', form=form, all_groups=all_groups, active_group=active_group )
def settings(slug=None): slug = slug if slug else "general" # get the currently active group active_group = SettingsGroup.query.filter_by(key=slug).first_or_404() # get all groups - used to build the navigation all_groups = SettingsGroup.query.all() SettingsForm = Setting.get_form(active_group) old_settings = Setting.get_settings(active_group) new_settings = {} form = SettingsForm() if form.validate_on_submit(): for key, values in iteritems(old_settings): try: # check if the value has changed if values['value'] == form[key].data: continue else: new_settings[key] = form[key].data except KeyError: pass Setting.update(settings=new_settings, app=current_app) flash(_("Settings saved."), "success") else: for key, values in iteritems(old_settings): try: form[key].data = values['value'] except (KeyError, ValueError): pass return render_template("management/settings.html", form=form, all_groups=all_groups, active_group=active_group)