aboutsummaryrefslogtreecommitdiff
path: root/rhodecode
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2012-06-15 00:05:20 +0200
committerMarcin Kuzminski <marcin@python-works.com>2012-06-15 00:05:20 +0200
commit56a8a2f270121f47dbac6cc1d0da10e7dabe0593 (patch)
treeb5203ddb83b5e767e68813fed6fcbe7d95a9b31f /rhodecode
parent0dc6affa3b12086cb0f05a2ff4939ab1967819d4 (diff)
validating choices for landing_rev
--HG-- branch : beta
Diffstat (limited to 'rhodecode')
-rw-r--r--rhodecode/controllers/admin/repos.py13
-rw-r--r--rhodecode/controllers/settings.py6
-rw-r--r--rhodecode/model/forms.py14
-rw-r--r--rhodecode/model/scm.py11
4 files changed, 30 insertions, 14 deletions
diff --git a/rhodecode/controllers/admin/repos.py b/rhodecode/controllers/admin/repos.py
index 93c1f808..7feb1b79 100644
--- a/rhodecode/controllers/admin/repos.py
+++ b/rhodecode/controllers/admin/repos.py
@@ -70,7 +70,8 @@ class ReposController(BaseController):
repo_model = RepoModel()
c.users_array = repo_model.get_users_js()
c.users_groups_array = repo_model.get_users_groups_js()
- c.landing_revs = ScmModel().get_repo_landing_revs()
+ choices, c.landing_revs = ScmModel().get_repo_landing_revs()
+ c.landing_revs_choices = choices
def __load_data(self, repo_name=None):
"""
@@ -92,7 +93,9 @@ class ReposController(BaseController):
return redirect(url('repos'))
- c.landing_revs = ScmModel().get_repo_landing_revs(c.repo_info)
+ choices, c.landing_revs = ScmModel().get_repo_landing_revs(c.repo_info)
+ c.landing_revs_choices = choices
+
c.default_user_id = User.get_by_username('default').user_id
c.in_public_journal = UserFollowing.query()\
.filter(UserFollowing.user_id == c.default_user_id)\
@@ -140,7 +143,8 @@ class ReposController(BaseController):
self.__load_defaults()
form_result = {}
try:
- form_result = RepoForm(repo_groups=c.repo_groups_choices)()\
+ form_result = RepoForm(repo_groups=c.repo_groups_choices,
+ landing_revs=c.landing_revs_choices)()\
.to_python(dict(request.POST))
RepoModel().create(form_result, self.rhodecode_user)
if form_result['clone_uri']:
@@ -208,7 +212,8 @@ class ReposController(BaseController):
repo_model = RepoModel()
changed_name = repo_name
_form = RepoForm(edit=True, old_data={'repo_name': repo_name},
- repo_groups=c.repo_groups_choices)()
+ repo_groups=c.repo_groups_choices,
+ landing_revs=c.landing_revs_choices)()
try:
form_result = _form.to_python(dict(request.POST))
repo = repo_model.update(repo_name, form_result)
diff --git a/rhodecode/controllers/settings.py b/rhodecode/controllers/settings.py
index 1047ecd7..4c70b067 100644
--- a/rhodecode/controllers/settings.py
+++ b/rhodecode/controllers/settings.py
@@ -43,6 +43,7 @@ from rhodecode.model.forms import RepoSettingsForm
from rhodecode.model.repo import RepoModel
from rhodecode.model.db import RepoGroup
from rhodecode.model.meta import Session
+from rhodecode.model.scm import ScmModel
log = logging.getLogger(__name__)
@@ -60,6 +61,8 @@ class SettingsController(BaseRepoController):
repo_model = RepoModel()
c.users_array = repo_model.get_users_js()
c.users_groups_array = repo_model.get_users_groups_js()
+ choices, c.landing_revs = ScmModel().get_repo_landing_revs()
+ c.landing_revs_choices = choices
@HasRepoPermissionAllDecorator('repository.admin')
def index(self, repo_name):
@@ -94,7 +97,8 @@ class SettingsController(BaseRepoController):
_form = RepoSettingsForm(edit=True,
old_data={'repo_name': repo_name},
- repo_groups=c.repo_groups_choices)()
+ repo_groups=c.repo_groups_choices,
+ landing_revs=c.landing_revs_choices)()
try:
form_result = _form.to_python(dict(request.POST))
diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py
index edbd482c..18693b32 100644
--- a/rhodecode/model/forms.py
+++ b/rhodecode/model/forms.py
@@ -653,7 +653,7 @@ def PasswordResetForm():
def RepoForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(),
- repo_groups=[]):
+ repo_groups=[], landing_revs=[]):
class _RepoForm(formencode.Schema):
allow_extra_fields = True
filter_extra_fields = False
@@ -666,7 +666,7 @@ def RepoForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(),
private = StringBoolean(if_missing=False)
enable_statistics = StringBoolean(if_missing=False)
enable_downloads = StringBoolean(if_missing=False)
- landing_rev = UnicodeString(strip=True, min=1, not_empty=True)
+ landing_rev = OneOf(landing_revs, hideList=True)
if edit:
#this is repo owner
@@ -678,8 +678,8 @@ def RepoForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(),
return _RepoForm
-def RepoForkForm(edit=False, old_data={},
- supported_backends=BACKENDS.keys(), repo_groups=[]):
+def RepoForkForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(),
+ repo_groups=[]):
class _RepoForkForm(formencode.Schema):
allow_extra_fields = True
filter_extra_fields = False
@@ -697,8 +697,8 @@ def RepoForkForm(edit=False, old_data={},
return _RepoForkForm
-def RepoSettingsForm(edit=False, old_data={},
- supported_backends=BACKENDS.keys(), repo_groups=[]):
+def RepoSettingsForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(),
+ repo_groups=[], landing_revs=[]):
class _RepoForm(formencode.Schema):
allow_extra_fields = True
filter_extra_fields = False
@@ -707,7 +707,7 @@ def RepoSettingsForm(edit=False, old_data={},
description = UnicodeString(strip=True, min=1, not_empty=True)
repo_group = OneOf(repo_groups, hideList=True)
private = StringBoolean(if_missing=False)
- landing_rev = UnicodeString(strip=True, min=1, not_empty=True)
+ landing_rev = OneOf(landing_revs, hideList=True)
chained_validators = [ValidRepoName(edit, old_data), ValidPerms(),
ValidSettings]
return _RepoForm
diff --git a/rhodecode/model/scm.py b/rhodecode/model/scm.py
index 6baa0237..de45b4fb 100644
--- a/rhodecode/model/scm.py
+++ b/rhodecode/model/scm.py
@@ -482,24 +482,31 @@ class ScmModel(BaseModel):
:param repo:
:type repo:
"""
+
hist_l = []
+ choices = []
repo = self.__get_repo(repo)
hist_l.append(['tip', _('latest tip')])
+ choices.append('tip')
if not repo:
- return hist_l
+ return choices, hist_l
repo = repo.scm_instance
+
branches_group = ([(k, k) for k, v in
repo.branches.iteritems()], _("Branches"))
hist_l.append(branches_group)
+ choices.extend([x[0] for x in branches_group[0]])
if repo.alias == 'hg':
bookmarks_group = ([(k, k) for k, v in
repo.bookmarks.iteritems()], _("Bookmarks"))
hist_l.append(bookmarks_group)
+ choices.extend([x[0] for x in bookmarks_group[0]])
tags_group = ([(k, k) for k, v in
repo.tags.iteritems()], _("Tags"))
hist_l.append(tags_group)
+ choices.extend([x[0] for x in tags_group[0]])
- return hist_l
+ return choices, hist_l