From f6cf03265558973334a87ce36fd6e40727a55cfd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 25 2016 10:18:44 +0000 Subject: [PATCH 1/4] Rework the avatar filter to not rely on the ones associated with a Fedora account Instead of relying on user.id.fedoraproject.org, we simply rely on their default email address that they provided --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 080a658..f734e0a 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1989,17 +1989,6 @@ def update_user_ssh(session, user, ssh_key, keydir): session.flush() -def avatar_url(username, size=64, default='retro'): - ''' Return the URL to be used for the avatar. ''' - openid = "http://%s.id.fedoraproject.org/" % username - try: - return avatar_url_from_openid(openid, size, default) - except Exception as err: - pagure.LOG.debug('openid %s', openid) - pagure.LOG.debug(err) - return '' - - def avatar_url_from_openid(openid, size=64, default='retro', dns=False): """ Our own implementation since fas doesn't support this nicely yet. diff --git a/pagure/ui/filters.py b/pagure/ui/filters.py index 1e25782..5cfb746 100644 --- a/pagure/ui/filters.py +++ b/pagure/ui/filters.py @@ -237,8 +237,13 @@ def avatar(packager, size=64, default="retro"): """ Template filter sorting the given branches, Fedora first then EPEL, then whatever is left. """ + if not '@' in packager: + user = pagure.lib.search_user(SESSION, username=packager) + if user: + packager = user.default_email + output = '' % ( - pagure.lib.avatar_url(packager, size, default) + avatar_url(packager, size) ) return output @@ -374,6 +379,7 @@ def int_to_rgb(percent): pass return output + @APP.template_filter('return_md5') def return_md5(text): """ Template filter to return an MD5 for a string From 997f5ef4fd683c773c99f0f1b2782dec092d037b Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 25 2016 10:18:44 +0000 Subject: [PATCH 2/4] Pass directly the email to the avatar filter if it is known This will avoid making a call to the DB while we already have the information. --- diff --git a/pagure/templates/_formhelper.html b/pagure/templates/_formhelper.html index 93d49ff..5785bf7 100644 --- a/pagure/templates/_formhelper.html +++ b/pagure/templates/_formhelper.html @@ -101,7 +101,7 @@ {% macro show_comment(comment, id, repo, username, issueid, form, repo_admin) %}
- {{ comment.user.user | avatar(16) | safe }} + {{ comment.user.default_email | avatar(16) | safe }} {{ comment.user.user }} + {% else %} -
+
+ +
{% endif %}
{{ repo.name }}
-
- {% if repo.description %}{{ repo.description }}{%else%}no description{% endif %} +
+ {% if + repo.description %}{{ repo.description }}{% + else %}no description{% + endif %}
{% endfor %} diff --git a/pagure/templates/edit_file.html b/pagure/templates/edit_file.html index ab39427..bd8458d 100644 --- a/pagure/templates/edit_file.html +++ b/pagure/templates/edit_file.html @@ -50,7 +50,7 @@ endif %}>{{ email.email }} {% endfor %} - {{ user.username | avatar(16) | safe }} + {{ user.default_email | avatar(16) | safe }} {{ user.fullname }}
diff --git a/pagure/templates/group_info.html b/pagure/templates/group_info.html index 3a8dec8..c1a69f4 100644 --- a/pagure/templates/group_info.html +++ b/pagure/templates/group_info.html @@ -71,7 +71,7 @@ {% for user in group.users %}
- {{ user.user | avatar(28) | safe }} + {{ user.default_email | avatar(28) | safe }} {{ user.user }} {% if authenticated and user != group.creator and member %} diff --git a/pagure/templates/issues.html b/pagure/templates/issues.html index 1f74745..e0d7a31 100644 --- a/pagure/templates/issues.html +++ b/pagure/templates/issues.html @@ -101,7 +101,7 @@ repo=repo.name, author=issue.user.user, tags=tags, assignee=assignee, status=status) }}" title="Filter issues by reporter"> - {{ issue.user.user | avatar(16) | safe }} + {{ issue.user.default_email | avatar(16) | safe }} {{ issue.user.user }} @@ -114,7 +114,7 @@ repo=repo.name, assignee=issue.assignee.username, tags=tags, author=author, status=status) }}" title="Filter issues by assignee"> - {{ issue.assignee.user | avatar(16) | safe }} + {{ issue.assignee.default_email | avatar(16) | safe }} {{ issue.assignee.user }} {% else %} diff --git a/pagure/templates/pull_request.html b/pagure/templates/pull_request.html index b57c7ca..de8a826 100644 --- a/pagure/templates/pull_request.html +++ b/pagure/templates/pull_request.html @@ -50,7 +50,7 @@
Proposed {{ pull_request.date_created |humanize }} - by {{ pull_request.user.user | avatar(16) | safe }} {{ pull_request.user.user }} + by {{ pull_request.user.default_email | avatar(16) | safe }} {{ pull_request.user.user }}
From diff --git a/pagure/templates/repo_info.html b/pagure/templates/repo_info.html index 40d598b..092f348 100644 --- a/pagure/templates/repo_info.html +++ b/pagure/templates/repo_info.html @@ -184,14 +184,14 @@ git push -u origin master
{% for user in repo.users %} diff --git a/pagure/templates/requests.html b/pagure/templates/requests.html index 956650d..45d0f1b 100644 --- a/pagure/templates/requests.html +++ b/pagure/templates/requests.html @@ -61,7 +61,7 @@ repo=repo.name, author=request.user.user, assignee=assignee, status=status) }}" title="Filter requests by reporter"> - {{ request.user.user | avatar(16) | safe }} + {{ request.user.default_email | avatar(16) | safe }} {{ request.user.user }} @@ -71,7 +71,7 @@ repo=repo.name, assignee=request.assignee.username, author=author, status=status) }}" title="Filter issues by assignee"> - {{ request.assignee.user | avatar(16) | safe }} + {{ request.assignee.default_email | avatar(16) | safe }} {{ request.assignee.user }} {% else %} diff --git a/pagure/templates/user_info.html b/pagure/templates/user_info.html index 6b49bf1..f812776 100644 --- a/pagure/templates/user_info.html +++ b/pagure/templates/user_info.html @@ -23,7 +23,7 @@

- {{ username | avatar(36) | safe }} {{ username }} + {{ user.default_email | avatar(36) | safe }} {{ username }}

diff --git a/pagure/templates/user_requests.html b/pagure/templates/user_requests.html index f65002d..997ae37 100644 --- a/pagure/templates/user_requests.html +++ b/pagure/templates/user_requests.html @@ -40,7 +40,7 @@ {% for request in requests %} - PR#{{ request.id }} {% if request.assignee %} - {{ request.assignee.user | avatar(16) | safe }} + {{ request.assignee.default_email | avatar(16) | safe }} {{ request.assignee.user }} {% else %} unassigned From 51c9eaf48ccc7a0c28374ebe938da47d20e038ae Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 25 2016 10:18:45 +0000 Subject: [PATCH 3/4] Adjust the api to not use the dropped pagure.lib.avatar_url Thanks unit-tests! --- diff --git a/pagure/api/issue.py b/pagure/api/issue.py index ab941ed..c570b14 100644 --- a/pagure/api/issue.py +++ b/pagure/api/issue.py @@ -451,8 +451,10 @@ def api_view_issue_comment(repo, issueid, commentid, username=None): 404, error_code=APIERROR.ENOCOMMENT) output = comment.to_json(public=True) - output['avatar_url'] = pagure.lib.avatar_url(comment.user.user, size=16) - output['comment_date'] = comment.date_created.strftime('%Y-%m-%d %H:%M:%S') + output['avatar_url'] = pagure.lib.avatar_url_from_openid( + comment.user.default_email, size=16) + output['comment_date'] = comment.date_created.strftime( + '%Y-%m-%d %H:%M:%S') jsonout = flask.jsonify(output) return jsonout From c3ac2f95529e57c219d0d84f13c0f1c662ba2f93 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 25 2016 10:18:45 +0000 Subject: [PATCH 4/4] Replace the test_avatar_url by a test_avatar_url_from_openid Since the former method has been dropped while the second is still in place. --- diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index ef54583..e15e80a 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -1080,13 +1080,13 @@ class PagureLibtests(tests.Modeltests): user = pagure.lib.search_user(self.session, username='foo') self.assertEqual(user.public_ssh_key, None) - def test_avatar_url(self): - """ Test the avatar_url of pagure.lib. """ - output = pagure.lib.avatar_url('pingou') + def test_avatar_url_from_openid(self): + """ Test the avatar_url_from_openid of pagure.lib. """ + output = pagure.lib.avatar_url_from_openid('pingou@fedoraproject.org') self.assertEqual( output, 'https://seccdn.libravatar.org/avatar/' - '01fe73d687f4db328da1183f2a1b5b22962ca9d9c50f0728aafeac974856311c' + 'b3ee7bb4de70b6522c2478df3b4cd6322b5ec5d62ac7ceb1128e3d4ff42f6928' '?s=64&d=retro') def test_fork_project(self):