Mercurial > kallithea
changeset 5674:f88ca6d06e6c
db: refactor/simplify Ui access code - use get_or_create
author | Søren Løvborg <sorenl@unity3d.com> |
---|---|
date | Tue, 05 Jan 2016 18:53:09 +0100 |
parents | 7e160a65caa4 |
children | c25191aadf92 |
files | kallithea/controllers/admin/settings.py kallithea/model/db.py |
diffstat | 2 files changed, 14 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/admin/settings.py Tue Jan 05 15:56:34 2016 +0100 +++ b/kallithea/controllers/admin/settings.py Tue Jan 05 18:53:09 2016 +0100 @@ -125,23 +125,10 @@ sett.ui_active = form_result['hooks_outgoing_pull_logger'] ## EXTENSIONS - sett = Ui.get_by_key('largefiles') - if not sett: - #make one if it's not there ! - sett = Ui() - sett.ui_key = 'largefiles' - sett.ui_section = 'extensions' - Session().add(sett) + sett = Ui.get_or_create('extensions', 'largefiles') sett.ui_active = form_result['extensions_largefiles'] - sett = Ui.get_by_key('hgsubversion') - if not sett: - #make one if it's not there ! - sett = Ui() - sett.ui_key = 'hgsubversion' - sett.ui_section = 'extensions' - Session().add(sett) - + sett = Ui.get_or_create('extensions', 'hgsubversion') sett.ui_active = form_result['extensions_hgsubversion'] if sett.ui_active: try: @@ -149,14 +136,7 @@ except ImportError: raise HgsubversionImportError -# sett = Ui.get_by_key('hggit') -# if not sett: -# #make one if it's not there ! -# sett = Ui() -# sett.ui_key = 'hggit' -# sett.ui_section = 'extensions' -# Session().add(sett) -# +# sett = Ui.get_or_create('extensions', 'hggit') # sett.ui_active = form_result['extensions_hggit'] Session().commit()
--- a/kallithea/model/db.py Tue Jan 05 15:56:34 2016 +0100 +++ b/kallithea/model/db.py Tue Jan 05 18:53:09 2016 +0100 @@ -352,9 +352,19 @@ @classmethod def get_by_key(cls, key): + """ Return specified Ui object, or None if not found. """ return cls.query().filter(cls.ui_key == key).scalar() @classmethod + def get_or_create(cls, section, key): + """ Return specified Ui object, creating it if necessary. """ + setting = cls.get_by_key(key) + if setting is None: + setting = cls(ui_section=section, ui_key=key) + Session().add(setting) + return setting + + @classmethod def get_builtin_hooks(cls): q = cls.query() q = q.filter(cls.ui_key.in_([cls.HOOK_UPDATE, cls.HOOK_REPO_SIZE, @@ -377,14 +387,10 @@ @classmethod def create_or_update_hook(cls, key, val): - new_ui = cls.get_by_key(key) or cls() - new_ui.ui_section = 'hooks' + new_ui = cls.get_or_create('hooks', key) new_ui.ui_active = True - new_ui.ui_key = key new_ui.ui_value = val - Session().add(new_ui) - def __repr__(self): return '<%s[%s]%s=>%s]>' % (self.__class__.__name__, self.ui_section, self.ui_key, self.ui_value)