Mercurial > kallithea
changeset 7762:47e11e924cbe
clone_url: drop **override - we only pass username
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Tue, 16 Jul 2019 12:10:33 +0200 |
parents | b118e9ffc85c |
children | ca8f597c8fa8 |
files | kallithea/controllers/summary.py kallithea/lib/utils2.py kallithea/model/db.py kallithea/tests/other/test_libs.py |
diffstat | 4 files changed, 24 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/summary.py Wed Jul 31 02:09:04 2019 +0200 +++ b/kallithea/controllers/summary.py Tue Jul 16 12:10:33 2019 +0200 @@ -114,9 +114,9 @@ c.cs_statuses = c.db_repo.statuses(page_revisions) if request.authuser.is_default_user: - username = '' + username = None else: - username = safe_str(request.authuser.username) + username = request.authuser.username c.clone_repo_url = c.db_repo.clone_url(clone_uri_tmpl=c.clone_uri_tmpl, with_id=False, username=username) c.clone_repo_url_id = c.db_repo.clone_url(clone_uri_tmpl=c.clone_uri_tmpl, with_id=True, username=username)
--- a/kallithea/lib/utils2.py Wed Jul 31 02:09:04 2019 +0200 +++ b/kallithea/lib/utils2.py Tue Jul 16 12:10:33 2019 +0200 @@ -411,21 +411,17 @@ return ''.join(uri) -def get_clone_url(clone_uri_tmpl, prefix_url, repo_name, repo_id, **override): +def get_clone_url(clone_uri_tmpl, prefix_url, repo_name, repo_id, username=None): parsed_url = urlobject.URLObject(prefix_url) prefix = safe_unicode(urllib.unquote(parsed_url.path.rstrip('/'))) args = { 'scheme': parsed_url.scheme, - 'user': '', + 'user': safe_unicode(urllib.quote(safe_str(username or ''))), 'netloc': parsed_url.netloc + prefix, # like "hostname:port/prefix" (with optional ":port" and "/prefix") 'prefix': prefix, # undocumented, empty or starting with / 'repo': repo_name, 'repoid': str(repo_id), } - if 'username' in override: - args['user'] = override.pop('username') - args.update(override) - args['user'] = urllib.quote(safe_str(args['user'])) for k, v in args.items(): clone_uri_tmpl = clone_uri_tmpl.replace('{%s}' % k, v)
--- a/kallithea/model/db.py Wed Jul 31 02:09:04 2019 +0200 +++ b/kallithea/model/db.py Tue Jul 16 12:10:33 2019 +0200 @@ -1259,7 +1259,7 @@ clone_uri = url_obj.with_password('*****') return clone_uri - def clone_url(self, clone_uri_tmpl, with_id=False, **override): + def clone_url(self, clone_uri_tmpl, with_id=False, username=None): if '{repo}' not in clone_uri_tmpl and '_{repoid}' not in clone_uri_tmpl: log.error("Configured clone_uri_tmpl %r has no '{repo}' or '_{repoid}' and cannot toggle to use repo id URLs", clone_uri_tmpl) elif with_id: @@ -1273,7 +1273,8 @@ return get_clone_url(clone_uri_tmpl=clone_uri_tmpl, prefix_url=prefix_url, repo_name=self.repo_name, - repo_id=self.repo_id, **override) + repo_id=self.repo_id, + username=username) def set_state(self, state): self.repo_state = state
--- a/kallithea/tests/other/test_libs.py Wed Jul 31 02:09:04 2019 +0200 +++ b/kallithea/tests/other/test_libs.py Tue Jul 16 12:10:33 2019 +0200 @@ -267,26 +267,26 @@ grav = gravatar_url(email_address=em, size=24) assert grav == 'https://example.com/%s/%s' % (_md5(em), 24) - @parametrize('clone_uri_tmpl,repo_name,overrides,prefix,expected', [ - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {}, '', 'http://vps1:8000/group/repo1'), - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'username': 'username'}, '', 'http://username@vps1:8000/group/repo1'), - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {}, '/prefix', 'http://vps1:8000/prefix/group/repo1'), - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'username': 'user'}, '/prefix', 'http://user@vps1:8000/prefix/group/repo1'), - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'username': 'username'}, '/prefix', 'http://username@vps1:8000/prefix/group/repo1'), - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'username': 'user'}, '/prefix/', 'http://user@vps1:8000/prefix/group/repo1'), - (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'username': 'username'}, '/prefix/', 'http://username@vps1:8000/prefix/group/repo1'), - ('{scheme}://{user}@{netloc}/_{repoid}', 'group/repo1', {}, '', 'http://vps1:8000/_23'), - ('{scheme}://{user}@{netloc}/_{repoid}', 'group/repo1', {'username': 'username'}, '', 'http://username@vps1:8000/_23'), - ('http://{user}@{netloc}/_{repoid}', 'group/repo1', {'username': 'username'}, '', 'http://username@vps1:8000/_23'), - ('http://{netloc}/_{repoid}', 'group/repo1', {'username': 'username'}, '', 'http://vps1:8000/_23'), - ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', {'username': 'username'}, '', 'https://username@proxy1.example.com/group/repo1'), - ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', {}, '', 'https://proxy1.example.com/group/repo1'), - ('https://proxy1.example.com/{user}/{repo}', 'group/repo1', {'username': 'username'}, '', 'https://proxy1.example.com/username/group/repo1'), + @parametrize('clone_uri_tmpl,repo_name,username,prefix,expected', [ + (Repository.DEFAULT_CLONE_URI, 'group/repo1', None, '', 'http://vps1:8000/group/repo1'), + (Repository.DEFAULT_CLONE_URI, 'group/repo1', 'username', '', 'http://username@vps1:8000/group/repo1'), + (Repository.DEFAULT_CLONE_URI, 'group/repo1', None, '/prefix', 'http://vps1:8000/prefix/group/repo1'), + (Repository.DEFAULT_CLONE_URI, 'group/repo1', 'user', '/prefix', 'http://user@vps1:8000/prefix/group/repo1'), + (Repository.DEFAULT_CLONE_URI, 'group/repo1', 'username', '/prefix', 'http://username@vps1:8000/prefix/group/repo1'), + (Repository.DEFAULT_CLONE_URI, 'group/repo1', 'user', '/prefix/', 'http://user@vps1:8000/prefix/group/repo1'), + (Repository.DEFAULT_CLONE_URI, 'group/repo1', 'username', '/prefix/', 'http://username@vps1:8000/prefix/group/repo1'), + ('{scheme}://{user}@{netloc}/_{repoid}', 'group/repo1', None, '', 'http://vps1:8000/_23'), + ('{scheme}://{user}@{netloc}/_{repoid}', 'group/repo1', 'username', '', 'http://username@vps1:8000/_23'), + ('http://{user}@{netloc}/_{repoid}', 'group/repo1', 'username', '', 'http://username@vps1:8000/_23'), + ('http://{netloc}/_{repoid}', 'group/repo1', 'username', '', 'http://vps1:8000/_23'), + ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', 'username', '', 'https://username@proxy1.example.com/group/repo1'), + ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', None, '', 'https://proxy1.example.com/group/repo1'), + ('https://proxy1.example.com/{user}/{repo}', 'group/repo1', 'username', '', 'https://proxy1.example.com/username/group/repo1'), ]) - def test_clone_url_generator(self, clone_uri_tmpl, repo_name, overrides, prefix, expected): + def test_clone_url_generator(self, clone_uri_tmpl, repo_name, username, prefix, expected): from kallithea.lib.utils2 import get_clone_url clone_url = get_clone_url(clone_uri_tmpl=clone_uri_tmpl, prefix_url='http://vps1:8000' + prefix, - repo_name=repo_name, repo_id=23, **overrides) + repo_name=repo_name, repo_id=23, username=username) assert clone_url == expected def _quick_url(self, text, tmpl="""<a class="changeset_hash" href="%s">%s</a>""", url_=None):