changeset 7759:b71aedc74d7b

clone_url: clarify variable naming Minor nits: user -> username (temporarily more complex) uri_tmpl -> clone_uri_tmpl qualified_home_url -> prefix_url decoded_path -> prefix
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 16 Jul 2019 12:13:53 +0200
parents f0013f65982d
children 67962f489ddd
files kallithea/controllers/summary.py kallithea/lib/utils2.py kallithea/model/db.py kallithea/tests/other/test_libs.py
diffstat 4 files changed, 38 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/summary.py	Sun Jul 21 18:54:05 2019 +0200
+++ b/kallithea/controllers/summary.py	Tue Jul 16 12:13:53 2019 +0200
@@ -126,10 +126,8 @@
         else:
             log.error("Configured clone_uri_tmpl %r has no '{repo}' or '_{repoid}' and cannot toggle to use repo id URLs", c.clone_uri_tmpl)
 
-        c.clone_repo_url = c.db_repo.clone_url(user=username,
-                                                uri_tmpl=_def_clone_uri)
-        c.clone_repo_url_id = c.db_repo.clone_url(user=username,
-                                                uri_tmpl=_def_clone_uri_by_id)
+        c.clone_repo_url = c.db_repo.clone_url(clone_uri_tmpl=_def_clone_uri, username=username)
+        c.clone_repo_url_id = c.db_repo.clone_url(clone_uri_tmpl=_def_clone_uri_by_id, username=username)
 
         if c.db_repo.enable_statistics:
             c.show_stats = True
--- a/kallithea/lib/utils2.py	Sun Jul 21 18:54:05 2019 +0200
+++ b/kallithea/lib/utils2.py	Tue Jul 16 12:13:53 2019 +0200
@@ -411,25 +411,27 @@
     return ''.join(uri)
 
 
-def get_clone_url(uri_tmpl, qualified_home_url, repo_name, repo_id, **override):
-    parsed_url = urlobject.URLObject(qualified_home_url)
-    decoded_path = safe_unicode(urllib.unquote(parsed_url.path.rstrip('/')))
+def get_clone_url(clone_uri_tmpl, prefix_url, repo_name, repo_id, **override):
+    parsed_url = urlobject.URLObject(prefix_url)
+    prefix = safe_unicode(urllib.unquote(parsed_url.path.rstrip('/')))
     args = {
         'scheme': parsed_url.scheme,
         'user': '',
-        'netloc': parsed_url.netloc+decoded_path,  # path if we use proxy-prefix
-        'prefix': decoded_path,
+        '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)
+        '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():
-        uri_tmpl = uri_tmpl.replace('{%s}' % k, v)
+        clone_uri_tmpl = clone_uri_tmpl.replace('{%s}' % k, v)
 
     # remove leading @ sign if it's present. Case of empty user
-    url_obj = urlobject.URLObject(uri_tmpl)
+    url_obj = urlobject.URLObject(clone_uri_tmpl)
     url = url_obj.with_netloc(url_obj.netloc.lstrip('@'))
 
     return safe_unicode(url)
--- a/kallithea/model/db.py	Sun Jul 21 18:54:05 2019 +0200
+++ b/kallithea/model/db.py	Tue Jul 16 12:13:53 2019 +0200
@@ -1261,31 +1261,31 @@
         return clone_uri
 
     def clone_url(self, **override):
-        import kallithea.lib.helpers as h
-        qualified_home_url = h.canonical_url('home')
-
-        uri_tmpl = None
+        clone_uri_tmpl = None
         if 'with_id' in override:
-            uri_tmpl = self.DEFAULT_CLONE_URI_ID
+            clone_uri_tmpl = self.DEFAULT_CLONE_URI_ID
             del override['with_id']
 
-        if 'uri_tmpl' in override:
-            uri_tmpl = override['uri_tmpl']
-            del override['uri_tmpl']
+        if 'clone_uri_tmpl' in override:
+            clone_uri_tmpl = override['clone_uri_tmpl']
+            del override['clone_uri_tmpl']
 
         # we didn't override our tmpl from **overrides
-        if not uri_tmpl:
-            uri_tmpl = self.DEFAULT_CLONE_URI
+        if not clone_uri_tmpl:
+            clone_uri_tmpl = self.DEFAULT_CLONE_URI
             try:
                 from tg import tmpl_context as c
-                uri_tmpl = c.clone_uri_tmpl
+                clone_uri_tmpl = c.clone_uri_tmpl
             except AttributeError:
                 # in any case if we call this outside of request context,
                 # ie, not having tmpl_context set up
                 pass
 
-        return get_clone_url(uri_tmpl=uri_tmpl,
-                             qualified_home_url=qualified_home_url,
+        import kallithea.lib.helpers as h
+        prefix_url = h.canonical_url('home')
+
+        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)
 
--- a/kallithea/tests/other/test_libs.py	Sun Jul 21 18:54:05 2019 +0200
+++ b/kallithea/tests/other/test_libs.py	Tue Jul 16 12:13:53 2019 +0200
@@ -267,25 +267,25 @@
                 grav = gravatar_url(email_address=em, size=24)
                 assert grav == 'https://example.com/%s/%s' % (_md5(em), 24)
 
-    @parametrize('tmpl,repo_name,overrides,prefix,expected', [
+    @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', {'user': 'username'}, '', 'http://username@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', {'user': 'user'}, '/prefix', 'http://user@vps1:8000/prefix/group/repo1'),
-        (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'user': 'username'}, '/prefix', 'http://username@vps1:8000/prefix/group/repo1'),
-        (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'user': 'user'}, '/prefix/', 'http://user@vps1:8000/prefix/group/repo1'),
-        (Repository.DEFAULT_CLONE_URI, 'group/repo1', {'user': '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'),
+        (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', {'user': 'username'}, '', 'http://username@vps1:8000/_23'),
-        ('http://{user}@{netloc}/_{repoid}', 'group/repo1', {'user': 'username'}, '', 'http://username@vps1:8000/_23'),
-        ('http://{netloc}/_{repoid}', 'group/repo1', {'user': 'username'}, '', 'http://vps1:8000/_23'),
-        ('https://{user}@proxy1.example.com/{repo}', 'group/repo1', {'user': 'username'}, '', 'https://username@proxy1.example.com/group/repo1'),
+        ('{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', {'user': 'username'}, '', 'https://proxy1.example.com/username/group/repo1'),
+        ('https://proxy1.example.com/{user}/{repo}', 'group/repo1', {'username': 'username'}, '', 'https://proxy1.example.com/username/group/repo1'),
     ])
-    def test_clone_url_generator(self, tmpl, repo_name, overrides, prefix, expected):
+    def test_clone_url_generator(self, clone_uri_tmpl, repo_name, overrides, prefix, expected):
         from kallithea.lib.utils2 import get_clone_url
-        clone_url = get_clone_url(uri_tmpl=tmpl, qualified_home_url='http://vps1:8000'+prefix,
+        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)
         assert clone_url == expected