aboutsummaryrefslogtreecommitdiff
path: root/rhodecode
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2012-08-08 23:30:55 +0200
committerMarcin Kuzminski <marcin@python-works.com>2012-08-08 23:30:55 +0200
commit10dd3ab1f4aa4d2555884fb86c0c8fa5487b6d67 (patch)
treef4c744494a06ae037791c791c6c9b0158791d90a /rhodecode
parentfb1a1b99fae2807632bb18b725445b015f23c0d6 (diff)
Added form for controlling mercurial extensions
added hggit also for future --HG-- branch : beta
Diffstat (limited to 'rhodecode')
-rw-r--r--rhodecode/controllers/admin/settings.py87
-rw-r--r--rhodecode/lib/base.py3
-rw-r--r--rhodecode/lib/db_manage.py8
-rwxr-xr-xrhodecode/model/db.py6
-rw-r--r--rhodecode/model/forms.py4
-rw-r--r--rhodecode/model/repos_group.py2
-rw-r--r--rhodecode/templates/admin/settings/settings.html21
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>