# HG changeset patch # User Søren Løvborg # Date 1473784849 -7200 # Node ID 555c8d26988f799fbaf4904ac72447e62807608b # Parent 590d5b7a2b26319d5914855ba189499bd92b0169 db: always add to session in Setting.create_or_update There's no use case for not adding the newly created Setting to the SQLAlchemy session (and thus, once we commit, the database). With this change, all the various "create" model methods add their result to the session. diff -r 590d5b7a2b26 -r 555c8d26988f kallithea/controllers/admin/auth_settings.py --- a/kallithea/controllers/admin/auth_settings.py Thu Sep 15 15:13:27 2016 +0200 +++ b/kallithea/controllers/admin/auth_settings.py Tue Sep 13 18:40:49 2016 +0200 @@ -131,7 +131,6 @@ v = ','.join(v) log.debug("%s = %s", k, str(v)) setting = Setting.create_or_update(k, v) - Session().add(setting) Session().commit() h.flash(_('Auth settings updated successfully'), category='success') diff -r 590d5b7a2b26 -r 555c8d26988f kallithea/controllers/admin/defaults.py --- a/kallithea/controllers/admin/defaults.py Thu Sep 15 15:13:27 2016 +0200 +++ b/kallithea/controllers/admin/defaults.py Tue Sep 13 18:40:49 2016 +0200 @@ -71,7 +71,6 @@ form_result = _form.to_python(dict(request.POST)) for k, v in form_result.iteritems(): setting = Setting.create_or_update(k, v) - Session().add(setting) Session().commit() h.flash(_('Default settings updated successfully'), category='success') diff -r 590d5b7a2b26 -r 555c8d26988f kallithea/controllers/admin/settings.py --- a/kallithea/controllers/admin/settings.py Thu Sep 15 15:13:27 2016 +0200 +++ b/kallithea/controllers/admin/settings.py Tue Sep 13 18:40:49 2016 +0200 @@ -208,25 +208,14 @@ force_defaults=False) try: - sett1 = Setting.create_or_update('title', - form_result['title']) - Session().add(sett1) - - sett2 = Setting.create_or_update('realm', - form_result['realm']) - Session().add(sett2) - - sett3 = Setting.create_or_update('ga_code', - form_result['ga_code']) - Session().add(sett3) - - sett4 = Setting.create_or_update('captcha_public_key', - form_result['captcha_public_key']) - Session().add(sett4) - - sett5 = Setting.create_or_update('captcha_private_key', - form_result['captcha_private_key']) - Session().add(sett5) + for setting in ( + 'title', + 'realm', + 'ga_code', + 'captcha_public_key', + 'captcha_private_key', + ): + Setting.create_or_update(setting, form_result[setting]) Session().commit() set_app_settings(config) @@ -279,9 +268,7 @@ ('clone_uri_tmpl', 'clone_uri_tmpl', 'unicode'), ] for setting, form_key, type_ in settings: - sett = Setting.create_or_update(setting, - form_result[form_key], type_) - Session().add(sett) + Setting.create_or_update(setting, form_result[form_key], type_) Session().commit() set_app_settings(config) diff -r 590d5b7a2b26 -r 555c8d26988f kallithea/model/db.py --- a/kallithea/model/db.py Thu Sep 15 15:13:27 2016 +0200 +++ b/kallithea/model/db.py Tue Sep 13 18:40:49 2016 +0200 @@ -271,6 +271,7 @@ val = Optional.extract(val) type = Optional.extract(type) res = cls(key, val, type) + Session().add(res) else: res.app_settings_name = key if not isinstance(val, Optional): diff -r 590d5b7a2b26 -r 555c8d26988f kallithea/tests/conftest.py --- a/kallithea/tests/conftest.py Thu Sep 15 15:13:27 2016 +0200 +++ b/kallithea/tests/conftest.py Tue Sep 13 18:40:49 2016 +0200 @@ -60,8 +60,7 @@ k = kvt[0] v = kvt[1] t = kvt[2] if len(kvt) == 3 else 'unicode' - setting = Setting.create_or_update(k, v, t) - session.add(setting) + Setting.create_or_update(k, v, t) session.commit() @@ -82,8 +81,7 @@ for k, v, t in settings_snapshot: if t == 'list' and hasattr(v, '__iter__'): v = ','.join(v) # Quirk: must format list value manually. - s = Setting.create_or_update(k, v, t) - session.add(s) + Setting.create_or_update(k, v, t) session.commit() @pytest.yield_fixture diff -r 590d5b7a2b26 -r 555c8d26988f kallithea/tests/models/test_settings.py --- a/kallithea/tests/models/test_settings.py Thu Sep 15 15:13:27 2016 +0200 +++ b/kallithea/tests/models/test_settings.py Tue Sep 13 18:40:49 2016 +0200 @@ -7,7 +7,6 @@ def test_passing_list_setting_value_results_in_string_valued_setting(): assert Setting.get_by_name(name) is None setting = Setting.create_or_update(name, ['spam', 'eggs']) - Session().add(setting) Session().flush() try: assert Setting.get_by_name(name) is not None @@ -23,7 +22,6 @@ assert Setting.get_by_name(name) is None # Quirk: need manual formatting of list setting value. setting = Setting.create_or_update(name, 'spam,eggs', type='list') - Session().add(setting) Session().flush() try: assert setting.app_settings_value == ['spam', 'eggs']