# HG changeset patch # User Marcin Kuzminski # Date 1344461455 -7200 # Node ID 9bce679a3f49d0525df6c3dc8171312387656e1d # Parent aa89767753a9b7675b87b85c95be1550cc5f93cf Added form for controlling mercurial extensions added hggit also for future diff -r aa89767753a9 -r 9bce679a3f49 rhodecode/controllers/admin/settings.py --- a/rhodecode/controllers/admin/settings.py Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/controllers/admin/settings.py Wed Aug 08 23:30:55 2012 +0200 @@ -79,7 +79,7 @@ # 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 @@ 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 @@ ) 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)]) + sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE) + sett.ui_active = form_result[_f('hooks_%s' % + RhodeCodeUi.HOOK_UPDATE)] + Session().add(sett) - 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)]) + 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) - sett5 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PUSH)\ - .one() - sett5.ui_active = bool(form_result[_f('hooks_%s' % - RhodeCodeUi.HOOK_PUSH)]) + sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PULL) + sett.ui_active = form_result[_f('hooks_%s' % + RhodeCodeUi.HOOK_PULL)] + + Session().add(sett) - sett6 = RhodeCodeUi.query()\ - .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PULL)\ - .one() - sett6.ui_active = bool(form_result[_f('hooks_%s' % - RhodeCodeUi.HOOK_PULL)]) + ## EXTENSIONS + sett = RhodeCodeUi.get_by_key('largefiles') + sett.ui_active = form_result[_f('extensions_largefiles')] + Session().add(sett) - Session().add(sett1) - Session().add(sett2) - Session().add(sett3) - Session().add(sett4) - Session().add(sett5) - Session().add(sett6) + 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().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 @@ 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 @@ 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 -r aa89767753a9 -r 9bce679a3f49 rhodecode/lib/base.py --- a/rhodecode/lib/base.py Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/lib/base.py Wed Aug 08 23:30:55 2012 +0200 @@ -152,8 +152,7 @@ """ 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 -r aa89767753a9 -r 9bce679a3f49 rhodecode/lib/db_manage.py --- a/rhodecode/lib/db_manage.py Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/lib/db_manage.py Wed Aug 08 23:30:55 2012 +0200 @@ -346,12 +346,20 @@ 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 -r aa89767753a9 -r 9bce679a3f49 rhodecode/model/db.py --- a/rhodecode/model/db.py Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/model/db.py Wed Aug 08 23:30:55 2012 +0200 @@ -242,7 +242,7 @@ @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 @@ @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 -r aa89767753a9 -r 9bce679a3f49 rhodecode/model/forms.py --- a/rhodecode/model/forms.py Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/model/forms.py Wed Aug 08 23:30:55 2012 +0200 @@ -267,6 +267,10 @@ 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 -r aa89767753a9 -r 9bce679a3f49 rhodecode/model/repos_group.py --- a/rhodecode/model/repos_group.py Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/model/repos_group.py Wed Aug 08 23:30:55 2012 +0200 @@ -55,7 +55,7 @@ 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 -r aa89767753a9 -r 9bce679a3f49 rhodecode/templates/admin/settings/settings.html --- a/rhodecode/templates/admin/settings/settings.html Wed Aug 08 22:38:01 2012 +0200 +++ b/rhodecode/templates/admin/settings/settings.html Wed Aug 08 23:30:55 2012 +0200 @@ -219,6 +219,27 @@ ${h.link_to(_('advanced setup'),url('admin_edit_setting',setting_id='hooks'),class_="ui-btn")} +
+
+ +
+
+
+ ${h.checkbox('extensions_largefiles','True')} + +
+
+ ${h.checkbox('extensions_hgsubversion','True')} + +
+ ${_('Requires hgsubversion library installed. Allows clonning from svn remote locations')} + ##
+ ## ${h.checkbox('extensions_hggit','True')} + ## + ##
+ ##${_('Requires hg-git library installed. Allows clonning from git remote locations')} +
+