Mercurial > public > src > rhodecode
diff pylons_app/model/forms.py @ 383:ebdd1a89cdd9
Added extra validation in creating users.
new style errors for users
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 24 Jul 2010 00:46:29 +0200 |
parents | b0715a788432 |
children | 98abf8953b87 |
line wrap: on
line diff
--- a/pylons_app/model/forms.py Sat Jul 24 00:21:57 2010 +0200 +++ b/pylons_app/model/forms.py Sat Jul 24 00:46:29 2010 +0200 @@ -52,11 +52,26 @@ if value != authentication_token(): raise formencode.Invalid(self.message('invalid_token', state, search_number=value), value, state) -class ValidUsername(formencode.validators.FancyValidator): - - def validate_python(self, value, state): - if value in ['default', 'new_user']: - raise formencode.Invalid(_('Invalid username'), value, state) + +def ValidUsername(edit, old_data): + class _ValidUsername(formencode.validators.FancyValidator): + + def validate_python(self, value, state): + if value in ['default', 'new_user']: + raise formencode.Invalid(_('Invalid username'), value, state) + #check if user is uniq + sa = meta.Session + old_un = None + if edit: + old_un = sa.query(User).get(old_data.get('user_id')).username + + if old_un != value or not edit: + if sa.query(User).filter(User.username == value).scalar(): + raise formencode.Invalid(_('This username already exists') , + value, state) + meta.Session.remove() + + return _ValidUsername class ValidPassword(formencode.validators.FancyValidator): @@ -233,16 +248,16 @@ #chained validators have access to all data chained_validators = [ValidAuth] -def UserForm(edit=False): +def UserForm(edit=False, old_data={}): class _UserForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True - username = All(UnicodeString(strip=True, min=3, not_empty=True), ValidUsername) + username = All(UnicodeString(strip=True, min=3, not_empty=True), ValidUsername(edit, old_data)) if edit: new_password = All(UnicodeString(strip=True, min=3, not_empty=False), ValidPassword) admin = StringBoolean(if_missing=False) else: - password = All(UnicodeString(strip=True, min=3, not_empty=False), ValidPassword) + password = All(UnicodeString(strip=True, min=8, not_empty=True), ValidPassword) active = StringBoolean(if_missing=False) name = UnicodeString(strip=True, min=3, not_empty=True) lastname = UnicodeString(strip=True, min=3, not_empty=True)