From ccb2e086bbf8264ed5e3dfd3faca28fb6faf2218 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Aug 03 2018 09:43:04 +0000 Subject: update subscriber count and avatar on issue page update the javascript to change the subscriber count and remove or add the user's avatar when subscribing or unsubscribing from an issue. Fixes #3367 Signed-off-by: Ryan Lerch --- diff --git a/pagure/api/fork.py b/pagure/api/fork.py index cf6a0a8..ce45853 100644 --- a/pagure/api/fork.py +++ b/pagure/api/fork.py @@ -777,6 +777,11 @@ def api_pull_request_add_flag(repo, requestid, username=None, namespace=None): raise pagure.exceptions.APIError( 400, error_code=APIERROR.EINVALIDREQ, errors=form.errors) + output['avatar_url'] = pagure.lib.avatar_url_from_email( + flask.g.fas_user.default_email, size=30) + + output['user'] = flask.g.fas_user.username + jsonout = flask.jsonify(output) return jsonout @@ -831,7 +836,9 @@ def api_subscribe_pull_request( :: { - "message": "User subscribed" + "message": "User subscribed", + "avatar_url": "https://image.png", + "user": "pingou" } """ # noqa diff --git a/pagure/api/issue.py b/pagure/api/issue.py index c699ab4..38da836 100644 --- a/pagure/api/issue.py +++ b/pagure/api/issue.py @@ -993,6 +993,11 @@ def api_comment_issue(repo, issueid, username=None, namespace=None): raise pagure.exceptions.APIError( 400, error_code=APIERROR.EINVALIDREQ, errors=form.errors) + output['avatar_url'] = pagure.lib.avatar_url_from_email( + flask.g.fas_user.default_email, size=30) + + output['user'] = flask.g.fas_user.username + jsonout = flask.jsonify(output) return jsonout @@ -1132,7 +1137,9 @@ def api_subscribe_issue(repo, issueid, username=None, namespace=None): :: { - "message": "User subscribed" + "message": "User subscribed", + "avatar_url": "https://image.png", + "user": "pingou" } """ # noqa diff --git a/pagure/templates/issue.html b/pagure/templates/issue.html index 3968813..36486d0 100644 --- a/pagure/templates/issue.html +++ b/pagure/templates/issue.html @@ -564,7 +564,7 @@ namespace=repo.namespace, repo=repo.name, issueid=issueid)
Subscribers - {{subscribers|count}} + {{subscribers|count}}
{% for subscriber in subscribers %} {{ + }}" title="{{ subscriber }}" id="sub-avatar-{{subscriber}}">{{ subscriber |avatar(size=30, css_class="pb-1") | safe }} {% endfor %} @@ -1216,14 +1216,22 @@ $( "#previewinmarkdown" ).click( } else { _data.status = true; } - console.log(_data); $.post( _url, _data ).done( function(data) { var _btn = $("#subcribe-btn"); + var _countlabel = $("#subscribers-count") + var _count = parseInt(_countlabel.text()) if (_btn.text() == 'Subscribe'){ _btn.text('Unsubscribe'); + _countlabel.text(_count+1) + var _html = '' + + ''; + $('#subscribers_list').prepend(_html); } else { _btn.text('Subscribe'); + _countlabel.text(_count-1); + $('#sub-avatar-'+data.user).remove(); } return false; } diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index 910ce64..ba8925e 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -3350,7 +3350,9 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, - {'message': 'You are no longer watching this issue'} + {'message': 'You are no longer watching this issue', + 'avatar_url': 'https://seccdn.libravatar.org/avatar/94bea27db4b720dc24905a1848dbd9d7a8d2c11594f88a62c9dd73009d7b408c?s=30&d=retro', + 'user': 'bar'} ) data = {} @@ -3360,7 +3362,9 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, - {'message': 'You are no longer watching this issue'} + {'message': 'You are no longer watching this issue', + 'avatar_url': 'https://seccdn.libravatar.org/avatar/94bea27db4b720dc24905a1848dbd9d7a8d2c11594f88a62c9dd73009d7b408c?s=30&d=retro', + 'user': 'bar'} ) # No change @@ -3378,7 +3382,9 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, - {'message': 'You are now watching this issue'} + {'message': 'You are now watching this issue', + 'avatar_url': 'https://seccdn.libravatar.org/avatar/94bea27db4b720dc24905a1848dbd9d7a8d2c11594f88a62c9dd73009d7b408c?s=30&d=retro', + 'user': 'bar'} ) # Subscribe - no changes @@ -3389,7 +3395,9 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, - {'message': 'You are now watching this issue'} + {'message': 'You are now watching this issue', + 'avatar_url': 'https://seccdn.libravatar.org/avatar/94bea27db4b720dc24905a1848dbd9d7a8d2c11594f88a62c9dd73009d7b408c?s=30&d=retro', + 'user': 'bar'} ) repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -3406,7 +3414,9 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, - {'message': 'You are no longer watching this issue'} + {'message': 'You are no longer watching this issue', + 'avatar_url': 'https://seccdn.libravatar.org/avatar/94bea27db4b720dc24905a1848dbd9d7a8d2c11594f88a62c9dd73009d7b408c?s=30&d=retro', + 'user': 'bar'} ) repo = pagure.lib.get_authorized_project(self.session, 'test')