Changeset - 555c8d26988f
[Not reviewed]
default
0 6 0
Søren Løvborg - 9 years ago 2016-09-13 18:40:49
sorenl@unity3d.com
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.
6 files changed with 12 insertions and 30 deletions:
0 comments (0 inline, 0 general)
kallithea/controllers/admin/auth_settings.py
Show inline comments
 
@@ -131,7 +131,6 @@ class AuthSettingsController(BaseControl
 
                    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')
kallithea/controllers/admin/defaults.py
Show inline comments
 
@@ -71,7 +71,6 @@ class DefaultsController(BaseController)
 
            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')
kallithea/controllers/admin/settings.py
Show inline comments
 
@@ -208,25 +208,14 @@ class SettingsController(BaseController)
 
                    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 @@ class SettingsController(BaseController)
 
                    ('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)
kallithea/model/db.py
Show inline comments
 
@@ -271,6 +271,7 @@ class Setting(Base, BaseModel):
 
            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):
kallithea/tests/conftest.py
Show inline comments
 
@@ -60,8 +60,7 @@ def _set_settings(*kvtseq):
 
        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 @@ def set_test_settings():
 
    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
kallithea/tests/models/test_settings.py
Show inline comments
 
@@ -7,7 +7,6 @@ name = 'spam-setting-name'
 
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 @@ def test_list_valued_setting_creation_re
 
    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']
0 comments (0 inline, 0 general)