aboutsummaryrefslogtreecommitdiff
path: root/rhodecode/model/forms.py
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2011-01-26 17:34:37 +0100
committerMarcin Kuzminski <marcin@python-works.com>2011-01-26 17:34:37 +0100
commita15900be34ac513c9e143337f79a0733ec13dfcc (patch)
treec048055727080235ce23415d9a633dca597f5ea4 /rhodecode/model/forms.py
parent0f7f61b33e4e067dd35cafa08d68189490a36e57 (diff)
#56 fixed found bugs, implemented adding of new group + forms+validators
fixed db schema naming --HG-- branch : beta rename : rhodecode/model/user_group.py => rhodecode/model/users_group.py
Diffstat (limited to 'rhodecode/model/forms.py')
-rw-r--r--rhodecode/model/forms.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py
index f4759eac..27c02096 100644
--- a/rhodecode/model/forms.py
+++ b/rhodecode/model/forms.py
@@ -36,6 +36,7 @@ from rhodecode.lib.exceptions import LdapImportError
from rhodecode.model import meta
from rhodecode.model.user import UserModel
from rhodecode.model.repo import RepoModel
+from rhodecode.model.users_group import UsersGroupModel
from rhodecode.model.db import User
from rhodecode import BACKENDS
@@ -88,6 +89,38 @@ def ValidUsername(edit, old_data):
return _ValidUsername
+
+
+def ValidUsersGroup(edit, old_data):
+
+ class _ValidUsersGroup(formencode.validators.FancyValidator):
+
+ def validate_python(self, value, state):
+ if value in ['default']:
+ raise formencode.Invalid(_('Invalid group name'), value, state)
+ #check if group is unique
+ old_un = None
+ if edit:
+ old_un = UserModel().get(old_data.get('users_group_id')).username
+
+ if old_un != value or not edit:
+ if UsersGroupModel().get_by_groupname(value, cache=False,
+ case_insensitive=True):
+ raise formencode.Invalid(_('This users group already exists') ,
+ value, state)
+
+
+ if re.match(r'^[a-zA-Z0-9]{1}[a-zA-Z0-9\-\_\.]+$', value) is None:
+ raise formencode.Invalid(_('Group name may only contain '
+ 'alphanumeric characters underscores, '
+ 'periods or dashes and must begin with '
+ 'alphanumeric character'),
+ value, state)
+
+ return _ValidUsersGroup
+
+
+
class ValidPassword(formencode.validators.FancyValidator):
def to_python(self, value, state):
@@ -368,6 +401,19 @@ def UserForm(edit=False, old_data={}):
return _UserForm
+
+def UsersGroupForm(edit=False, old_data={}):
+ class _UsersGroupForm(formencode.Schema):
+ allow_extra_fields = True
+ filter_extra_fields = True
+
+ users_group_name = All(UnicodeString(strip=True, min=1, not_empty=True),
+ ValidUsersGroup(edit, old_data))
+
+ users_group_active = StringBoolean(if_missing=False)
+
+ return _UsersGroupForm
+
def RegisterForm(edit=False, old_data={}):
class _RegisterForm(formencode.Schema):
allow_extra_fields = True