diff options
author | Marcin Kuzminski <marcin@python-works.com> | 2011-01-26 17:34:37 +0100 |
---|---|---|
committer | Marcin Kuzminski <marcin@python-works.com> | 2011-01-26 17:34:37 +0100 |
commit | a15900be34ac513c9e143337f79a0733ec13dfcc (patch) | |
tree | c048055727080235ce23415d9a633dca597f5ea4 /rhodecode/model/forms.py | |
parent | 0f7f61b33e4e067dd35cafa08d68189490a36e57 (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.py | 46 |
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 |