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):