form-validators: fixed usage of deprecated methods, and few py3 fixes

This commit is contained in:
RhodeCode Admin 2023-05-11 12:08:21 +02:00
parent c3c62e51ff
commit 087ed92f1e

View file

@ -44,7 +44,9 @@ from rhodecode.authentication.base import loadplugin
from rhodecode.apps._base import ADMIN_PREFIX
from rhodecode.lib.auth import HasRepoGroupPermissionAny, HasPermissionAny
from rhodecode.lib.utils import repo_name_slug, make_db_config
from rhodecode.lib.utils2 import safe_int, str2bool, aslist, md5, safe_unicode
from rhodecode.lib.utils2 import safe_int, str2bool, aslist
from rhodecode.lib.str_utils import safe_str
from rhodecode.lib.hash_utils import md5_safe
from rhodecode.lib.vcs.backends.git.repository import GitRepository
from rhodecode.lib.vcs.backends.hg.repository import MercurialRepository
from rhodecode.lib.vcs.backends.svn.repository import SubversionRepository
@ -93,7 +95,7 @@ def UniqueList(localizer, convert=None):
'missing_value': _('Value cannot be an empty list'),
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
ret_val = []
def make_unique(value):
@ -112,7 +114,7 @@ def UniqueList(localizer, convert=None):
ret_val = [value]
if convert:
ret_val = map(convert, ret_val)
ret_val = list(map(convert, ret_val))
return ret_val
def empty_value(self, value):
@ -124,10 +126,10 @@ def UniqueListFromString(localizer):
_ = localizer
class _validator(UniqueList(localizer)):
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
if isinstance(value, str):
value = aslist(value, ',')
return super(_validator, self)._to_python(value, state)
return super(_validator, self)._convert_to_python(value, state)
return _validator
@ -139,7 +141,7 @@ def ValidSvnPattern(localizer, section, repo_name=None):
'pattern_exists': _('Pattern already exists'),
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
if not value:
return
model = VcsSettingsModel(repo=repo_name)
@ -166,7 +168,7 @@ def ValidUsername(localizer, edit=False, old_data=None):
'alphanumeric character or underscore')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
if value in ['default', 'new_user']:
msg = M(self, 'system_invalid_username', state, username=value)
raise formencode.Invalid(msg, value, state)
@ -196,7 +198,7 @@ def ValidRepoUser(localizer, allow_disabled=False):
'disabled_username': _('Username %(username)s is disabled')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
try:
user = User.query().filter(User.username == value).one()
except Exception:
@ -226,7 +228,7 @@ def ValidUserGroup(localizer, edit=False, old_data=None):
'with alphanumeric character')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
if value in ['default']:
msg = M(self, 'invalid_group', state)
raise formencode.Invalid(
@ -272,7 +274,7 @@ def ValidRepoGroup(localizer, edit=False, old_data=None, can_create_in_root=Fals
"in root location")
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
group_name = repo_name_slug(value.get('group_name', ''))
group_parent_id = safe_int(value.get('group_parent_id'))
gr = RepoGroup.get(group_parent_id)
@ -291,7 +293,7 @@ def ValidRepoGroup(localizer, edit=False, old_data=None, can_create_in_root=Fals
value['group_parent_id'] = group_parent_id
return value
def validate_python(self, value, state):
def _validate_python(self, value, state):
old_group_name = None
group_name = value.get('group_name')
@ -387,10 +389,8 @@ def ValidPassword(localizer):
_('Invalid characters (non-ascii) in password')
}
def validate_python(self, value, state):
try:
(value or '').decode('ascii')
except UnicodeError:
def _validate_python(self, value, state):
if value and not value.isascii():
msg = M(self, 'invalid_password', state)
raise formencode.Invalid(msg, value, state,)
return _validator
@ -406,7 +406,7 @@ def ValidPasswordsMatch(
'password_mismatch': _('Passwords do not match'),
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
pass_val = value.get('password') or value.get(passwd)
if pass_val != value[passwd_confirmation]:
@ -428,7 +428,7 @@ def ValidAuth(localizer):
'disabled_account': _('Your account is disabled')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
from rhodecode.authentication.base import authenticate, HTTP_TYPE
password = value['password']
@ -475,7 +475,7 @@ def ValidRepoName(localizer, edit=False, old_data=None):
'exists in group "%(group)s"'),
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
repo_name = repo_name_slug(value.get('repo_name', ''))
repo_group = value.get('repo_group')
if repo_group:
@ -496,7 +496,7 @@ def ValidRepoName(localizer, edit=False, old_data=None):
value['group_name'] = group_name
return value
def validate_python(self, value, state):
def _validate_python(self, value, state):
repo_name = value.get('repo_name')
repo_name_full = value.get('repo_name_full')
@ -549,10 +549,10 @@ def SlugifyName(localizer):
class _validator(formencode.validators.FancyValidator):
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
return repo_name_slug(value)
def validate_python(self, value, state):
def _validate_python(self, value, state):
pass
return _validator
@ -566,10 +566,10 @@ def CannotHaveGitSuffix(localizer):
_('Repository name cannot end with .git'),
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
return value
def validate_python(self, value, state):
def _validate_python(self, value, state):
if value and value.endswith('.git'):
msg = M(
self, 'has_git_suffix', state)
@ -629,7 +629,7 @@ def ValidCloneUri(localizer):
'url starting with one of %(allowed_prefixes)s')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
repo_type = value.get('repo_type')
url = value.get('clone_uri')
@ -659,7 +659,7 @@ def ValidForkType(localizer, old_data=None):
'invalid_fork_type': _('Fork have to be the same type as parent')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
if old_data['repo_type'] != value:
msg = M(self, 'invalid_fork_type', state)
raise formencode.Invalid(
@ -681,13 +681,13 @@ def CanWriteGroup(localizer, old_data=None):
"the root location.")
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
# root location
if value in [-1, "-1"]:
return None
return value
def validate_python(self, value, state):
def _validate_python(self, value, state):
gr = RepoGroup.get(value)
gr_name = gr.group_name if gr else None # None means ROOT location
# create repositories with write permission on group is set to true
@ -739,7 +739,7 @@ def ValidPerms(localizer, type_='repo'):
_('This username or user group name is not valid')
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
perm_updates = OrderedSet()
perm_additions = OrderedSet()
perm_deletions = OrderedSet()
@ -749,7 +749,7 @@ def ValidPerms(localizer, type_='repo'):
# them by they IDs
new_perms_group = collections.defaultdict(dict)
del_perms_group = collections.defaultdict(dict)
for k, v in value.copy().items():
for k, v in list(value.copy().items()):
if k.startswith('perm_del_member'):
# delete from org storage so we don't process that later
del value[k]
@ -792,7 +792,7 @@ def ValidPerms(localizer, type_='repo'):
# (read the existing radio button states)
default_user_id = User.get_default_user_id()
for k, update_value in value.items():
for k, update_value in list(value.items()):
if k.startswith('u_perm_') or k.startswith('g_perm_'):
obj_type = k[0]
obj_id = k[7:]
@ -852,7 +852,7 @@ def ValidPath(localizer):
'invalid_path': _('This is not a valid path')
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
if not os.path.isdir(value):
msg = M(self, 'invalid_path', state)
raise formencode.Invalid(
@ -870,10 +870,10 @@ def UniqSystemEmail(localizer, old_data=None):
'email_taken': _('This e-mail address is already taken')
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
return value.lower()
def validate_python(self, value, state):
def _validate_python(self, value, state):
if (old_data.get('email') or '').lower() != value:
user = User.get_by_email(value, case_insensitive=True)
if user:
@ -892,10 +892,10 @@ def ValidSystemEmail(localizer):
'non_existing_email': _('e-mail "%(email)s" does not exist.')
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
return value.lower()
def validate_python(self, value, state):
def _validate_python(self, value, state):
user = User.get_by_email(value, case_insensitive=True)
if user is None:
msg = M(self, 'non_existing_email', state, email=value)
@ -914,7 +914,7 @@ def NotReviewedRevisions(localizer, repo_id):
'or have set status'),
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
# check revisions if they are not reviewed, or a part of another
# pull request
statuses = ChangesetStatus.query()\
@ -949,16 +949,16 @@ def ValidIp(localizer):
'of 0-32 (not %(bits)r)'),
}
# we ovveride the default to_python() call
# we override the default to_python() call
def to_python(self, value, state):
v = super(_validator, self).to_python(value, state)
v = safe_unicode(v.strip())
v = safe_str(v.strip())
net = ipaddress.ip_network(address=v, strict=False)
return str(net)
def validate_python(self, value, state):
def _validate_python(self, value, state):
try:
addr = safe_unicode(value.strip())
addr = safe_str(value.strip())
# this raises an ValueError if address is not IpV4 or IpV6
ipaddress.ip_network(addr, strict=False)
except ValueError:
@ -977,7 +977,7 @@ def FieldKey(localizer):
'underscore, dash or numbers'),
}
def validate_python(self, value, state):
def _validate_python(self, value, state):
if not re.match('[a-zA-Z0-9_-]+$', value):
raise formencode.Invalid(self.message('badFormat', state),
value, state)
@ -1001,9 +1001,9 @@ def ValidAuthPlugins(localizer):
'No plugin available with ID "%(plugin_id)s"'),
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
# filter empty values
return filter(lambda s: s not in [None, ''], value)
return [s for s in value if s not in [None, '']]
def _validate_legacy_plugin_id(self, plugin_id, value, state):
"""
@ -1039,7 +1039,7 @@ def ValidAuthPlugins(localizer):
return plugin
def validate_python(self, value, state):
def _validate_python(self, value, state):
unique_names = {}
for plugin_id in value:
@ -1068,11 +1068,11 @@ def ValidPattern(localizer):
'bad_format': _('Url must start with http or /'),
}
def _to_python(self, value, state):
def _convert_to_python(self, value, state):
patterns = []
prefix = 'new_pattern'
for name, v in value.items():
for name, v in list(value.items()):
pattern_name = '_'.join((prefix, 'pattern'))
if name.startswith(pattern_name):
new_item_id = name[len(pattern_name)+1:]
@ -1086,7 +1086,7 @@ def ValidPattern(localizer):
'issuetracker_pref': value.get(_field('prefix')),
'issuetracker_desc': value.get(_field('description'))
}
new_uid = md5(values['issuetracker_pat'])
new_uid = md5_safe(values['issuetracker_pat'])
has_required_fields = (
values['issuetracker_pat']