apps: base app fixes for python3

This commit is contained in:
RhodeCode Admin 2023-07-18 11:45:54 +02:00
parent bed5b744d4
commit 1627525cb1
2 changed files with 57 additions and 26 deletions

View file

@ -25,9 +25,10 @@ import operator
from pyramid.httpexceptions import HTTPFound, HTTPForbidden, HTTPBadRequest
from rhodecode.lib import helpers as h, diffs, rc_cache
from rhodecode.lib.str_utils import safe_str
from rhodecode.lib.utils import repo_name_slug
from rhodecode.lib.utils2 import (
StrictAttributeDict, str2bool, safe_int, datetime_to_time, safe_unicode)
StrictAttributeDict, str2bool, safe_int, datetime_to_time)
from rhodecode.lib.markup_renderer import MarkupRenderer, relative_links
from rhodecode.lib.vcs.backends.base import EmptyCommit
from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
@ -73,7 +74,7 @@ def add_route_requirements(route_path, requirements=None):
add_route_requirements('{repo_name}/settings')
"""
requirements = requirements or URL_NAME_REQUIREMENTS
for key, regex in requirements.items():
for key, regex in list(requirements.items()):
route_path = route_path.replace('{%s}' % key, '{%s:%s}' % (key, regex))
return route_path
@ -240,7 +241,7 @@ class RepoAppView(BaseAppView):
def _handle_missing_requirements(self, error):
log.error(
'Requirements are missing for repository %s: %s',
self.db_repo_name, safe_unicode(error))
self.db_repo_name, safe_str(error))
def _prepare_and_set_clone_url(self, c):
username = ''
@ -352,8 +353,8 @@ class RepoAppView(BaseAppView):
return None, None
landing_commit_id = landing_commit.raw_id
cache_namespace_uid = 'cache_repo.{}'.format(db_repo.repo_id)
region = rc_cache.get_or_create_region('cache_repo', cache_namespace_uid)
cache_namespace_uid = 'repo.{}'.format(db_repo.repo_id)
region = rc_cache.get_or_create_region('cache_repo', cache_namespace_uid, use_async_runner=True)
start = time.time()
@region.conditional_cache_on_arguments(namespace=cache_namespace_uid)
@ -377,7 +378,7 @@ class RepoAppView(BaseAppView):
}
readme_data = self._render_readme_or_none(commit, readme_node, relative_urls)
readme_filename = readme_node.unicode_path
readme_filename = readme_node.str_path
return readme_data, readme_filename
@ -394,13 +395,12 @@ class RepoAppView(BaseAppView):
renderer = MarkupRenderer()
try:
html_source = renderer.render(
readme_node.content, filename=readme_node.path)
readme_node.str_content, filename=readme_node.path)
if relative_urls:
return relative_links(html_source, relative_urls)
return html_source
except Exception:
log.exception(
"Exception while trying to render the README")
log.exception("Exception while trying to render the README")
def get_recache_flag(self):
for flag_name in ['force_recache', 'force-recache', 'no-cache']:
@ -455,6 +455,7 @@ class PathFilter(object):
return patchset, False
def render_patchset_filtered(self, diffset, patchset, source_ref=None, target_ref=None):
filtered_patchset, has_hidden_changes = self.filter_patchset(patchset)
result = diffset.render_patchset(
filtered_patchset, source_ref=source_ref, target_ref=target_ref)
@ -488,12 +489,9 @@ class RepoGroupAppView(BaseAppView):
return c
def _revoke_perms_on_yourself(self, form_result):
_updates = filter(lambda u: self._rhodecode_user.user_id == int(u[0]),
form_result['perm_updates'])
_additions = filter(lambda u: self._rhodecode_user.user_id == int(u[0]),
form_result['perm_additions'])
_deletions = filter(lambda u: self._rhodecode_user.user_id == int(u[0]),
form_result['perm_deletions'])
_updates = [u for u in form_result['perm_updates'] if self._rhodecode_user.user_id == int(u[0])]
_additions = [u for u in form_result['perm_additions'] if self._rhodecode_user.user_id == int(u[0])]
_deletions = [u for u in form_result['perm_deletions'] if self._rhodecode_user.user_id == int(u[0])]
admin_perm = 'group.admin'
if _updates and _updates[0][1] != admin_perm or \
_additions and _additions[0][1] != admin_perm or \
@ -627,7 +625,7 @@ class RepoRoutePredicate(object):
self.val = val
def text(self):
return 'repo_route = %s' % self.val
return f'repo_route = {self.val}'
phash = text
@ -639,7 +637,7 @@ class RepoRoutePredicate(object):
repo_name = info['match']['repo_name']
repo_name_parts = repo_name.split('/')
repo_slugs = [x for x in map(lambda x: repo_name_slug(x), repo_name_parts)]
repo_slugs = [x for x in (repo_name_slug(x) for x in repo_name_parts)]
if repo_name_parts != repo_slugs:
# short-skip if the repo-name doesn't follow slug rule
@ -666,12 +664,15 @@ class RepoRoutePredicate(object):
if by_name_match:
# register this as request object we can re-use later
request.db_repo = by_name_match
request.db_repo_name = request.db_repo.repo_name
redirect_if_creating(info, by_name_match)
return True
by_id_match = repo_model.get_repo_by_id(repo_name)
if by_id_match:
request.db_repo = by_id_match
request.db_repo_name = request.db_repo.repo_name
redirect_if_creating(info, by_id_match)
return True
@ -683,7 +684,7 @@ class RepoForbidArchivedRoutePredicate(object):
self.val = val
def text(self):
return 'repo_forbid_archived = %s' % self.val
return f'repo_forbid_archived = {self.val}'
phash = text
@ -713,7 +714,7 @@ class RepoTypeRoutePredicate(object):
self.val = val or ['hg', 'git', 'svn']
def text(self):
return 'repo_accepted_type = %s' % self.val
return f'repo_accepted_type = {self.val}'
phash = text
@ -741,7 +742,7 @@ class RepoGroupRoutePredicate(object):
self.val = val
def text(self):
return 'repo_group_route = %s' % self.val
return f'repo_group_route = {self.val}'
phash = text
@ -753,7 +754,7 @@ class RepoGroupRoutePredicate(object):
repo_group_name = info['match']['repo_group_name']
repo_group_name_parts = repo_group_name.split('/')
repo_group_slugs = [x for x in map(lambda x: repo_name_slug(x), repo_group_name_parts)]
repo_group_slugs = [x for x in [repo_name_slug(x) for x in repo_group_name_parts]]
if repo_group_name_parts != repo_group_slugs:
# short-skip if the repo-name doesn't follow slug rule
log.warning('repo_group_name: %s is different than slug %s', repo_group_name_parts, repo_group_slugs)
@ -765,6 +766,7 @@ class RepoGroupRoutePredicate(object):
if by_name_match:
# register this as request object we can re-use later
request.db_repo_group = by_name_match
request.db_repo_group_name = request.db_repo_group.group_name
return True
return False
@ -775,7 +777,7 @@ class UserGroupRoutePredicate(object):
self.val = val
def text(self):
return 'user_group_route = %s' % self.val
return f'user_group_route = {self.val}'
phash = text
@ -827,7 +829,7 @@ class UserRoutePredicate(UserRoutePredicateBase):
supports_default = False
def text(self):
return 'user_route = %s' % self.val
return f'user_route = {self.val}'
phash = text
@ -836,7 +838,7 @@ class UserRouteWithDefaultPredicate(UserRoutePredicateBase):
supports_default = True
def text(self):
return 'user_with_default_route = %s' % self.val
return f'user_with_default_route = {self.val}'
phash = text