forms.py
308 lines
| 11.7 KiB
| text/x-python
|
PythonLexer
r547 | """ this is forms validation classes | |||
http://formencode.org/module-formencode.validators.html | ||||
for list off all availible validators | ||||
we can create our own validators | ||||
The table below outlines the options which can be used in a schema in addition to the validators themselves | ||||
pre_validators [] These validators will be applied before the schema | ||||
chained_validators [] These validators will be applied after the schema | ||||
allow_extra_fields False If True, then it is not an error when keys that aren't associated with a validator are present | ||||
filter_extra_fields False If True, then keys that aren't associated with a validator are removed | ||||
if_key_missing NoDefault If this is given, then any keys that aren't available but are expected will be replaced with this value (and then validated). This does not override a present .if_missing attribute on validators. NoDefault is a special FormEncode class to mean that no default values has been specified and therefore missing keys shouldn't take a default value. | ||||
r1203 | ignore_key_missing False If True, then missing keys will be missing in the result, if the validator doesn't have .if_missing on it already | |||
r547 | <name> = formencode.validators.<name of validator> | |||
<name> must equal form name | ||||
list=[1,2,3,4,5] | ||||
for SELECT use formencode.All(OneOf(list), Int()) | ||||
r1203 | ||||
r547 | """ | |||
r761 | import logging | |||
import formencode | ||||
r547 | from formencode import All | |||
r761 | ||||
r547 | from pylons.i18n.translation import _ | |||
r761 | ||||
r2467 | from rhodecode.model import validators as v | |||
r761 | from rhodecode import BACKENDS | |||
r547 | log = logging.getLogger(__name__) | |||
r1898 | ||||
r547 | class LoginForm(formencode.Schema): | |||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2467 | username = v.UnicodeString( | |||
r1950 | strip=True, | |||
min=1, | ||||
not_empty=True, | ||||
messages={ | ||||
r2467 | 'empty': _(u'Please enter a login'), | |||
'tooShort': _(u'Enter a value %(min)i characters long or more')} | ||||
r1950 | ) | |||
r547 | ||||
r2467 | password = v.UnicodeString( | |||
r2181 | strip=False, | |||
r1950 | min=3, | |||
not_empty=True, | ||||
messages={ | ||||
r2467 | 'empty': _(u'Please enter a password'), | |||
'tooShort': _(u'Enter %(min)i characters or more')} | ||||
r1950 | ) | |||
r547 | ||||
r2467 | remember = v.StringBoolean(if_missing=False) | |||
r1818 | ||||
r2467 | chained_validators = [v.ValidAuth()] | |||
r629 | ||||
r1898 | ||||
r547 | def UserForm(edit=False, old_data={}): | |||
class _UserForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2467 | username = All(v.UnicodeString(strip=True, min=1, not_empty=True), | |||
v.ValidUsername(edit, old_data)) | ||||
r547 | if edit: | |||
r2467 | new_password = All( | |||
v.UnicodeString(strip=False, min=6, not_empty=False) | ||||
) | ||||
password_confirmation = All( | ||||
v.ValidPassword(), | ||||
v.UnicodeString(strip=False, min=6, not_empty=False), | ||||
) | ||||
admin = v.StringBoolean(if_missing=False) | ||||
r547 | else: | |||
r2467 | password = All( | |||
v.ValidPassword(), | ||||
v.UnicodeString(strip=False, min=6, not_empty=True) | ||||
) | ||||
password_confirmation = All( | ||||
v.ValidPassword(), | ||||
v.UnicodeString(strip=False, min=6, not_empty=False) | ||||
) | ||||
r1722 | ||||
r2467 | active = v.StringBoolean(if_missing=False) | |||
name = v.UnicodeString(strip=True, min=1, not_empty=False) | ||||
lastname = v.UnicodeString(strip=True, min=1, not_empty=False) | ||||
email = All(v.Email(not_empty=True), v.UniqSystemEmail(old_data)) | ||||
r629 | ||||
r2467 | chained_validators = [v.ValidPasswordsMatch()] | |||
r722 | ||||
r547 | return _UserForm | |||
r959 | ||||
r972 | def UsersGroupForm(edit=False, old_data={}, available_members=[]): | |||
r959 | class _UsersGroupForm(formencode.Schema): | |||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2467 | users_group_name = All( | |||
v.UnicodeString(strip=True, min=1, not_empty=True), | ||||
v.ValidUsersGroup(edit, old_data) | ||||
) | ||||
r959 | ||||
r2467 | users_group_active = v.StringBoolean(if_missing=False) | |||
r959 | ||||
r972 | if edit: | |||
r2467 | users_group_members = v.OneOf( | |||
available_members, hideList=False, testValueList=True, | ||||
if_missing=None, not_empty=False | ||||
) | ||||
r972 | ||||
r959 | return _UsersGroupForm | |||
r1898 | ||||
r1345 | def ReposGroupForm(edit=False, old_data={}, available_groups=[]): | |||
class _ReposGroupForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
r1982 | filter_extra_fields = False | |||
r1345 | ||||
r2467 | group_name = All(v.UnicodeString(strip=True, min=1, not_empty=True), | |||
v.SlugifyName()) | ||||
group_description = v.UnicodeString(strip=True, min=1, | ||||
r1345 | not_empty=True) | |||
r2467 | group_parent_id = v.OneOf(available_groups, hideList=False, | |||
r1345 | testValueList=True, | |||
if_missing=None, not_empty=False) | ||||
r2467 | chained_validators = [v.ValidReposGroup(edit, old_data), | |||
v.ValidPerms('group')] | ||||
r1345 | ||||
return _ReposGroupForm | ||||
r1898 | ||||
r722 | def RegisterForm(edit=False, old_data={}): | |||
class _RegisterForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2467 | username = All( | |||
v.ValidUsername(edit, old_data), | ||||
v.UnicodeString(strip=True, min=1, not_empty=True) | ||||
) | ||||
password = All( | ||||
v.ValidPassword(), | ||||
v.UnicodeString(strip=False, min=6, not_empty=True) | ||||
) | ||||
password_confirmation = All( | ||||
v.ValidPassword(), | ||||
v.UnicodeString(strip=False, min=6, not_empty=True) | ||||
) | ||||
active = v.StringBoolean(if_missing=False) | ||||
name = v.UnicodeString(strip=True, min=1, not_empty=False) | ||||
lastname = v.UnicodeString(strip=True, min=1, not_empty=False) | ||||
email = All(v.Email(not_empty=True), v.UniqSystemEmail(old_data)) | ||||
r722 | ||||
r2467 | chained_validators = [v.ValidPasswordsMatch()] | |||
r722 | ||||
return _RegisterForm | ||||
r547 | ||||
r1950 | ||||
r547 | def PasswordResetForm(): | |||
class _PasswordResetForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2467 | email = All(v.ValidSystemEmail(), v.Email(not_empty=True)) | |||
r547 | return _PasswordResetForm | |||
r1950 | ||||
r1112 | def RepoForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(), | |||
r2460 | repo_groups=[], landing_revs=[]): | |||
r547 | class _RepoForm(formencode.Schema): | |||
allow_extra_fields = True | ||||
filter_extra_fields = False | ||||
r2467 | repo_name = All(v.UnicodeString(strip=True, min=1, not_empty=True), | |||
v.SlugifyName()) | ||||
clone_uri = All(v.UnicodeString(strip=True, min=1, not_empty=False)) | ||||
repo_group = v.OneOf(repo_groups, hideList=True) | ||||
repo_type = v.OneOf(supported_backends) | ||||
description = v.UnicodeString(strip=True, min=1, not_empty=False) | ||||
private = v.StringBoolean(if_missing=False) | ||||
enable_statistics = v.StringBoolean(if_missing=False) | ||||
enable_downloads = v.StringBoolean(if_missing=False) | ||||
landing_rev = v.OneOf(landing_revs, hideList=True) | ||||
r1112 | ||||
r547 | if edit: | |||
r1014 | #this is repo owner | |||
r2467 | user = All(v.UnicodeString(not_empty=True), v.ValidRepoUser()) | |||
r629 | ||||
r2467 | chained_validators = [v.ValidCloneUri(), | |||
v.ValidRepoName(edit, old_data), | ||||
v.ValidPerms()] | ||||
r547 | return _RepoForm | |||
r1950 | ||||
r2460 | def RepoForkForm(edit=False, old_data={}, supported_backends=BACKENDS.keys(), | |||
repo_groups=[]): | ||||
r547 | class _RepoForkForm(formencode.Schema): | |||
allow_extra_fields = True | ||||
filter_extra_fields = False | ||||
r2467 | repo_name = All(v.UnicodeString(strip=True, min=1, not_empty=True), | |||
v.SlugifyName()) | ||||
repo_group = v.OneOf(repo_groups, hideList=True) | ||||
repo_type = All(v.ValidForkType(old_data), v.OneOf(supported_backends)) | ||||
description = v.UnicodeString(strip=True, min=1, not_empty=True) | ||||
private = v.StringBoolean(if_missing=False) | ||||
copy_permissions = v.StringBoolean(if_missing=False) | ||||
update_after_clone = v.StringBoolean(if_missing=False) | ||||
fork_parent_id = v.UnicodeString() | ||||
chained_validators = [v.ValidForkName(edit, old_data)] | ||||
r1366 | ||||
r547 | return _RepoForkForm | |||
r1950 | ||||
r2467 | def RepoSettingsForm(edit=False, old_data={}, | |||
supported_backends=BACKENDS.keys(), repo_groups=[], | ||||
landing_revs=[]): | ||||
r547 | class _RepoForm(formencode.Schema): | |||
allow_extra_fields = True | ||||
filter_extra_fields = False | ||||
r2467 | repo_name = All(v.UnicodeString(strip=True, min=1, not_empty=True), | |||
v.SlugifyName()) | ||||
description = v.UnicodeString(strip=True, min=1, not_empty=True) | ||||
repo_group = v.OneOf(repo_groups, hideList=True) | ||||
private = v.StringBoolean(if_missing=False) | ||||
landing_rev = v.OneOf(landing_revs, hideList=True) | ||||
chained_validators = [v.ValidRepoName(edit, old_data), v.ValidPerms(), | ||||
v.ValidSettings()] | ||||
r547 | return _RepoForm | |||
def ApplicationSettingsForm(): | ||||
class _ApplicationSettingsForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
filter_extra_fields = False | ||||
r2467 | rhodecode_title = v.UnicodeString(strip=True, min=1, not_empty=True) | |||
rhodecode_realm = v.UnicodeString(strip=True, min=1, not_empty=True) | ||||
rhodecode_ga_code = v.UnicodeString(strip=True, min=1, not_empty=False) | ||||
r629 | ||||
r547 | return _ApplicationSettingsForm | |||
r629 | ||||
r1950 | ||||
r547 | def ApplicationUiSettingsForm(): | |||
class _ApplicationUiSettingsForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
filter_extra_fields = False | ||||
r2467 | web_push_ssl = v.OneOf(['true', 'false'], if_missing='false') | |||
paths_root_path = All( | ||||
v.ValidPath(), | ||||
v.UnicodeString(strip=True, min=1, not_empty=True) | ||||
) | ||||
hooks_changegroup_update = v.OneOf(['True', 'False'], | ||||
if_missing=False) | ||||
hooks_changegroup_repo_size = v.OneOf(['True', 'False'], | ||||
if_missing=False) | ||||
hooks_changegroup_push_logger = v.OneOf(['True', 'False'], | ||||
if_missing=False) | ||||
hooks_preoutgoing_pull_logger = v.OneOf(['True', 'False'], | ||||
if_missing=False) | ||||
r629 | ||||
r547 | return _ApplicationUiSettingsForm | |||
r1950 | ||||
r547 | def DefaultPermissionsForm(perms_choices, register_choices, create_choices): | |||
class _DefaultPermissionsForm(formencode.Schema): | ||||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2467 | overwrite_default = v.StringBoolean(if_missing=False) | |||
anonymous = v.OneOf(['True', 'False'], if_missing=False) | ||||
default_perm = v.OneOf(perms_choices) | ||||
default_register = v.OneOf(register_choices) | ||||
default_create = v.OneOf(create_choices) | ||||
r629 | ||||
r547 | return _DefaultPermissionsForm | |||
r705 | ||||
r2467 | def LdapSettingsForm(tls_reqcert_choices, search_scope_choices, | |||
tls_kind_choices): | ||||
r705 | class _LdapSettingsForm(formencode.Schema): | |||
allow_extra_fields = True | ||||
filter_extra_fields = True | ||||
r2193 | #pre_validators = [LdapLibValidator] | |||
r2467 | ldap_active = v.StringBoolean(if_missing=False) | |||
ldap_host = v.UnicodeString(strip=True,) | ||||
ldap_port = v.Number(strip=True,) | ||||
ldap_tls_kind = v.OneOf(tls_kind_choices) | ||||
ldap_tls_reqcert = v.OneOf(tls_reqcert_choices) | ||||
ldap_dn_user = v.UnicodeString(strip=True,) | ||||
ldap_dn_pass = v.UnicodeString(strip=True,) | ||||
ldap_base_dn = v.UnicodeString(strip=True,) | ||||
ldap_filter = v.UnicodeString(strip=True,) | ||||
ldap_search_scope = v.OneOf(search_scope_choices) | ||||
ldap_attr_login = All( | ||||
v.AttrLoginValidator(), | ||||
v.UnicodeString(strip=True,) | ||||
) | ||||
ldap_attr_firstname = v.UnicodeString(strip=True,) | ||||
ldap_attr_lastname = v.UnicodeString(strip=True,) | ||||
ldap_attr_email = v.UnicodeString(strip=True,) | ||||
r705 | ||||
return _LdapSettingsForm | ||||
r2479 | ||||
def UserExtraEmailForm(): | ||||
class _UserExtraEmailForm(formencode.Schema): | ||||
email = All(v.UniqSystemEmail(), v.Email) | ||||
r2480 | return _UserExtraEmailForm | |||