diff options
author | Marcin Kuzminski <marcin@python-works.com> | 2012-08-08 23:30:55 +0200 |
---|---|---|
committer | Marcin Kuzminski <marcin@python-works.com> | 2012-08-08 23:30:55 +0200 |
commit | 10dd3ab1f4aa4d2555884fb86c0c8fa5487b6d67 (patch) | |
tree | f4c744494a06ae037791c791c6c9b0158791d90a | |
parent | fb1a1b99fae2807632bb18b725445b015f23c0d6 (diff) |
Added form for controlling mercurial extensions
added hggit also for future
--HG--
branch : beta
-rw-r--r-- | rhodecode/controllers/admin/settings.py | 87 | ||||
-rw-r--r-- | rhodecode/lib/base.py | 3 | ||||
-rw-r--r-- | rhodecode/lib/db_manage.py | 8 | ||||
-rwxr-xr-x | rhodecode/model/db.py | 6 | ||||
-rw-r--r-- | rhodecode/model/forms.py | 4 | ||||
-rw-r--r-- | rhodecode/model/repos_group.py | 2 | ||||
-rw-r--r-- | rhodecode/templates/admin/settings/settings.html | 21 |
7 files changed, 83 insertions, 48 deletions
diff --git a/rhodecode/controllers/admin/settings.py b/rhodecode/controllers/admin/settings.py index f0d54ca8..bd10e087 100644 --- a/rhodecode/controllers/admin/settings.py +++ b/rhodecode/controllers/admin/settings.py @@ -79,7 +79,7 @@ class SettingsController(BaseController): # url('admin_settings') defaults = RhodeCodeSetting.get_app_settings() - defaults.update(self.get_hg_ui_settings()) + defaults.update(self._get_hg_ui_settings()) return htmlfill.render( render('admin/settings/settings.html'), @@ -123,7 +123,7 @@ class SettingsController(BaseController): category='success') if setting_id == 'whoosh': - repo_location = self.get_hg_ui_settings()['paths_root_path'] + repo_location = self._get_hg_ui_settings()['paths_root_path'] full_index = request.POST.get('full_index', False) run_task(tasks.whoosh_index, repo_location, full_index) h.flash(_('Whoosh reindex task scheduled'), category='success') @@ -220,51 +220,55 @@ class SettingsController(BaseController): ) try: - # fix namespaces for hooks + # fix namespaces for hooks and extensions _f = lambda s: s.replace('.', '_') - sett1 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == 'push_ssl').one() - sett1.ui_value = form_result['web_push_ssl'] + sett = RhodeCodeUi.get_by_key('push_ssl') + sett.ui_value = form_result['web_push_ssl'] + Session().add(sett) - sett2 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == '/').one() - sett2.ui_value = form_result['paths_root_path'] + sett = RhodeCodeUi.get_by_key('/') + sett.ui_value = form_result['paths_root_path'] + Session().add(sett) #HOOKS - sett3 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_UPDATE)\ - .one() - sett3.ui_active = bool(form_result[_f('hooks_%s' % - RhodeCodeUi.HOOK_UPDATE)]) - - sett4 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_REPO_SIZE)\ - .one() - sett4.ui_active = bool(form_result[_f('hooks_%s' % - RhodeCodeUi.HOOK_REPO_SIZE)]) - - sett5 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PUSH)\ - .one() - sett5.ui_active = bool(form_result[_f('hooks_%s' % - RhodeCodeUi.HOOK_PUSH)]) - - sett6 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PULL)\ - .one() - sett6.ui_active = bool(form_result[_f('hooks_%s' % - RhodeCodeUi.HOOK_PULL)]) + sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE) + sett.ui_active = form_result[_f('hooks_%s' % + RhodeCodeUi.HOOK_UPDATE)] + Session().add(sett) + + sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_REPO_SIZE) + sett.ui_active = form_result[_f('hooks_%s' % + RhodeCodeUi.HOOK_REPO_SIZE)] + Session().add(sett) + + sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PUSH) + sett.ui_active = form_result[_f('hooks_%s' % + RhodeCodeUi.HOOK_PUSH)] + Session().add(sett) + + sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PULL) + sett.ui_active = form_result[_f('hooks_%s' % + RhodeCodeUi.HOOK_PULL)] + + Session().add(sett) + + ## EXTENSIONS + sett = RhodeCodeUi.get_by_key('largefiles') + sett.ui_active = form_result[_f('extensions_largefiles')] + Session().add(sett) + + sett = RhodeCodeUi.get_by_key('hgsubversion') + sett.ui_active = form_result[_f('extensions_hgsubversion')] + Session().add(sett) + +# sett = RhodeCodeUi.get_by_key('hggit') +# sett.ui_active = form_result[_f('extensions_hggit')] +# Session().add(sett) - Session().add(sett1) - Session().add(sett2) - Session().add(sett3) - Session().add(sett4) - Session().add(sett5) - Session().add(sett6) Session().commit() - h.flash(_('Updated mercurial settings'), category='success') + h.flash(_('Updated VCS settings'), category='success') except Exception: log.error(traceback.format_exc()) @@ -455,8 +459,7 @@ class SettingsController(BaseController): return render('admin/repos/repo_add_create_repository.html') - @NotAnonymous() - def get_hg_ui_settings(self): + def _get_hg_ui_settings(self): ret = RhodeCodeUi.query().all() if not ret: @@ -471,7 +474,7 @@ class SettingsController(BaseController): if k.find('.') != -1: k = k.replace('.', '_') - if each.ui_section == 'hooks': + if each.ui_section in ['hooks', 'extensions']: v = each.ui_active settings[each.ui_section + '_' + k] = v diff --git a/rhodecode/lib/base.py b/rhodecode/lib/base.py index caa8c53e..cbb6cbb2 100644 --- a/rhodecode/lib/base.py +++ b/rhodecode/lib/base.py @@ -152,8 +152,7 @@ class BaseVCSController(object): """ org_proto = environ['wsgi._org_proto'] #check if we have SSL required ! if not it's a bad request ! - require_ssl = str2bool(RhodeCodeUi.get_by_key('push_ssl')\ - .scalar().ui_value) + require_ssl = str2bool(RhodeCodeUi.get_by_key('push_ssl').ui_value) if require_ssl and org_proto == 'http': log.debug('proto is %s and SSL is required BAD REQUEST !' % org_proto) diff --git a/rhodecode/lib/db_manage.py b/rhodecode/lib/db_manage.py index 86fc4adc..98cf78f5 100644 --- a/rhodecode/lib/db_manage.py +++ b/rhodecode/lib/db_manage.py @@ -346,12 +346,20 @@ class DbManage(object): hgsubversion.ui_value = '' hgsubversion.ui_active = False + # enable hggit disabled by default + hggit = RhodeCodeUi() + hggit.ui_section = 'extensions' + hggit.ui_key = 'hggit' + hggit.ui_value = '' + hggit.ui_active = False + self.sa.add(hooks1) self.sa.add(hooks2) self.sa.add(hooks3) self.sa.add(hooks4) self.sa.add(largefiles) self.sa.add(hgsubversion) + self.sa.add(hggit) def create_ldap_options(self, skip_existing=False): """Creates ldap settings""" diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py index 47dc8cfa..f7610925 100755 --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -242,7 +242,7 @@ class RhodeCodeUi(Base, BaseModel): @classmethod def get_by_key(cls, key): - return cls.query().filter(cls.ui_key == key) + return cls.query().filter(cls.ui_key == key).scalar() @classmethod def get_builtin_hooks(cls): @@ -263,11 +263,11 @@ class RhodeCodeUi(Base, BaseModel): @classmethod def get_repos_location(cls): - return cls.get_by_key('/').one().ui_value + return cls.get_by_key('/').ui_value @classmethod def create_or_update_hook(cls, key, val): - new_ui = cls.get_by_key(key).scalar() or cls() + new_ui = cls.get_by_key(key) or cls() new_ui.ui_section = 'hooks' new_ui.ui_active = True new_ui.ui_key = key diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py index 9365e39c..3af20c2d 100644 --- a/rhodecode/model/forms.py +++ b/rhodecode/model/forms.py @@ -267,6 +267,10 @@ def ApplicationUiSettingsForm(): hooks_changegroup_push_logger = v.StringBoolean(if_missing=False) hooks_preoutgoing_pull_logger = v.StringBoolean(if_missing=False) + extensions_largefiles = v.StringBoolean(if_missing=False) + extensions_hgsubversion = v.StringBoolean(if_missing=False) + extensions_hggit = v.StringBoolean(if_missing=False) + return _ApplicationUiSettingsForm diff --git a/rhodecode/model/repos_group.py b/rhodecode/model/repos_group.py index c952b8a7..b4d3436a 100644 --- a/rhodecode/model/repos_group.py +++ b/rhodecode/model/repos_group.py @@ -55,7 +55,7 @@ class ReposGroupModel(BaseModel): Get's the repositories root path from database """ - q = RhodeCodeUi.get_by_key('/').one() + q = RhodeCodeUi.get_by_key('/') return q.ui_value def _create_default_perms(self, new_group): diff --git a/rhodecode/templates/admin/settings/settings.html b/rhodecode/templates/admin/settings/settings.html index 5e34f606..fe2080ef 100644 --- a/rhodecode/templates/admin/settings/settings.html +++ b/rhodecode/templates/admin/settings/settings.html @@ -219,6 +219,27 @@ ${h.link_to(_('advanced setup'),url('admin_edit_setting',setting_id='hooks'),class_="ui-btn")} </div> </div> + <div class="field"> + <div class="label label-checkbox"> + <label>${_('Mercurial Extensions')}:</label> + </div> + <div class="checkboxes"> + <div class="checkbox"> + ${h.checkbox('extensions_largefiles','True')} + <label for="extensions_hgsubversion">${_('largefiles extensions')}</label> + </div> + <div class="checkbox"> + ${h.checkbox('extensions_hgsubversion','True')} + <label for="extensions_hgsubversion">${_('hgsubversion extensions')}</label> + </div> + <span class="help-block">${_('Requires hgsubversion library installed. Allows clonning from svn remote locations')}</span> + ##<div class="checkbox"> + ## ${h.checkbox('extensions_hggit','True')} + ## <label for="extensions_hggit">${_('hg-git extensions')}</label> + ##</div> + ##<span class="help-block">${_('Requires hg-git library installed. Allows clonning from git remote locations')}</span> + </div> + </div> <div class="field"> <div class="label"> <label for="paths_root_path">${_('Repositories location')}:</label> |