소스 검색

Fix the api_view_user_activity_stats to return the expected data

In flask 0.11 quite some changes were made to flask.jsonify() changing
its behavior and in this case breaking the calendar heatmap widget.
This commit fixes this.

While at it, highlight in the calendar heatmap today just to make it
prettier.

Let's not speak about the change to the tests here, not now, not ever...

Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
Pierre-Yves Chibon 6 년 전
부모
커밋
a8e4e9f5d1
3개의 변경된 파일4개의 추가작업 그리고 11개의 파일을 삭제
  1. 1 4
      pagure/api/user.py
  2. 2 0
      pagure/templates/_render_repo.html
  3. 1 7
      tests/test_pagure_flask_api_user.py

+ 1 - 4
pagure/api/user.py

@@ -225,10 +225,7 @@ def api_view_user_activity_stats(username):
             d = d.isoformat()
         return d
 
-    stats = [
-        (format_date(d[0]), d[1])
-        for d in stats
-    ]
+    stats = {format_date(d[0]): d[1] for d in stats}
 
     jsonout = flask.jsonify(stats)
     return jsonout

+ 2 - 0
pagure/templates/_render_repo.html

@@ -314,6 +314,8 @@
         data: "{{ url_for(
           'api_ns.api_view_user_activity_stats',
           username=username, format='timestamp') }}",
+        dataType: "json",
+        highlight: "now",
         onClick: function(date, nb) {
           date = date.getFullYear() + '-' + padStr(date.getMonth() + 1)
             + '-' + padStr(date.getDate());

+ 1 - 7
tests/test_pagure_flask_api_user.py

@@ -325,13 +325,7 @@ class PagureFlaskApiUSertests(tests.Modeltests):
         self.assertEqual(output.status_code, 200)
         data = json.loads(output.data)
         date = datetime.datetime.utcnow().date().strftime('%Y-%m-%d')
-        # There seems to be a difference in the JSON generated between
-        # flask-0.10.1 (F23) and 0.11.1 (jenkins)
-        self.assertTrue(
-            data == {date: 4}
-            or
-            data == [[date, 4]]
-        )
+        self.assertDictEqual(data, {date: 4})
 
     @patch('pagure.lib.notify.send_email')
     def test_api_view_user_activity_date(self, mockemail):