def update(self, *args, **kw): # Make sure passwords won't leak from session session.setdefault('settings', password_dict({})) # This is the first time this service is set up first_time = self.name not in session['settings'] session['settings'].setdefault(self.name, {}) if 'password' in kw.get(self.name, {}): if not kw[self.name]['password']: logging.debug('Not updating %r password. No value given.', self.name) old_password = session['settings'][self.name].get('password') kw[self.name]['password'] = old_password # Check if actually changed settings old_settings = copy.deepcopy(session['settings'][self.name]) new_settings = copy.deepcopy(kw.get(self.name)) # Don't include 'enable' in comparison old_settings.pop('enable', None) new_settings.pop('enable', None) settings_changed = old_settings != new_settings session['settings'].update(kw) logging.debug('update: session: %r', session) try: session.get('skip', set()).remove(self.name) except KeyError: pass session.save() if settings_changed: flash(_('Changes saved')) if first_time: # Pick the next uncofigured service redirect(self.menu.base) else: redirect(self.url)
def skip(self): session.setdefault('skip', set()) session['skip'].add(self.name) session.save() redirect(self.menu.base)