[odrs-web] Return reviews with less than 2 reports by default



commit 0551497e72ae82c4f973fb1a99e7e7ca062bd4e9
Author: Richard Hughes <richard hughsie com>
Date:   Tue Jul 2 13:04:15 2019 +0100

    Return reviews with less than 2 reports by default
    
    This is the only way we're going to get more than one report for a review...

 app_data/odrs/tests/odrs_test.py | 19 +++++++++++++------
 app_data/odrs/views_api.py       | 21 ++++++++++-----------
 2 files changed, 23 insertions(+), 17 deletions(-)
---
diff --git a/app_data/odrs/tests/odrs_test.py b/app_data/odrs/tests/odrs_test.py
index a441159..28b7ca9 100644
--- a/app_data/odrs/tests/odrs_test.py
+++ b/app_data/odrs/tests/odrs_test.py
@@ -343,18 +343,22 @@ class OdrsTest(unittest.TestCase):
         assert b'An essential part of my daily workflow' in rv.data, rv.data
         assert b'user_skey' in rv.data, rv.data
 
-    def review_upvote(self):
+    def review_upvote(self, user_hash=None):
+        if not user_hash:
+            user_hash = self.user_hash
         data = {'review_id': 1,
                 'app_id': 'inkscape.desktop',
-                'user_hash': self.user_hash,
-                'user_skey': _get_user_key(self.user_hash, 'inkscape.desktop')}
+                'user_hash': user_hash,
+                'user_skey': _get_user_key(user_hash, 'inkscape.desktop')}
         return self.app.post('/1.0/reviews/api/upvote', data=json.dumps(data))
 
-    def review_report(self):
+    def review_report(self, user_hash=None):
+        if not user_hash:
+            user_hash = self.user_hash
         data = {'review_id': 1,
                 'app_id': 'inkscape.desktop',
-                'user_hash': self.user_hash,
-                'user_skey': _get_user_key(self.user_hash, 'inkscape.desktop')}
+                'user_hash': user_hash,
+                'user_skey': _get_user_key(user_hash, 'inkscape.desktop')}
         return self.app.post('/1.0/reviews/api/report', data=json.dumps(data))
 
     def test_api_upvote(self):
@@ -388,6 +392,9 @@ class OdrsTest(unittest.TestCase):
         rv = self.review_report()
         assert b'success": true' in rv.data, rv.data
         assert b'voted #1 -5' in rv.data, rv.data
+        rv = self.review_report(user_hash='729342d6a7c477bb1ea0186f8c60804a3d783183')
+        assert b'success": true' in rv.data, rv.data
+        assert b'voted #1 -5' in rv.data, rv.data
         rv = self._review_fetch(app_id='inkscape.desktop')
         assert b'An essential part of my daily workflow' not in rv.data, rv.data
 
diff --git a/app_data/odrs/views_api.py b/app_data/odrs/views_api.py
index 60dfc94..f8dc443 100644
--- a/app_data/odrs/views_api.py
+++ b/app_data/odrs/views_api.py
@@ -23,6 +23,8 @@ from .models import _vote_exists
 from .util import json_success, json_error, _locale_is_compatible, _eventlog_add, _get_user_key, 
_get_datestr_from_dt
 from .util import _sanitised_version, _sanitised_summary, _sanitised_description, _get_rating_for_app_id
 
+ODRS_REPORTED_CNT = 2
+
 def _get_client_address():
     """ Gets user IP address """
     if request.headers.getlist('X-Forwarded-For'):
@@ -137,21 +139,18 @@ def api_submit():
     db.session.commit()
     return json_success()
 
-def _get_for_app_id(app_id, user_hash=None):
-    reviews = db.session.query(Review).\
-                    filter(Review.app_id == app_id).\
-                    filter(Review.reported == 0).\
-                    order_by(Review.date_created.desc()).all()
-    return [review.asdict(user_hash) for review in reviews]
-
 @app.route('/1.0/reviews/api/app/<app_id>/<user_hash>')
 @app.route('/1.0/reviews/api/app/<app_id>')
 def api_show_app(app_id, user_hash=None):
     """
     Return details about an application.
     """
-    reviews = _get_for_app_id(app_id, user_hash)
-    dat = json.dumps(reviews, sort_keys=True, indent=4, separators=(',', ': '))
+    reviews = db.session.query(Review).\
+                    filter(Review.app_id == app_id).\
+                    filter(Review.reported < ODRS_REPORTED_CNT).\
+                    order_by(Review.date_created.desc()).all()
+    items = [review.asdict(user_hash) for review in reviews]
+    dat = json.dumps(items, sort_keys=True, indent=4, separators=(',', ': '))
     return Response(response=dat,
                     status=200, \
                     mimetype='application/json')
@@ -194,7 +193,7 @@ def api_fetch():
         app_ids.extend(item['compat_ids'])
     reviews = db.session.query(Review).\
                     filter(Review.app_id.in_(app_ids)).\
-                    filter(Review.reported == 0).all()
+                    filter(Review.reported < ODRS_REPORTED_CNT).all()
 
     # if user does not exist then create
     user = db.session.query(User).filter(User.user_hash == item['user_hash']).first()
@@ -247,7 +246,7 @@ def api_all(user_hash=None):
     """
     Return all the reviews on the server as a JSON object.
     """
-    reviews = db.session.query(Review).filter(Review.reported == 0).all()
+    reviews = db.session.query(Review).filter(Review.reported < ODRS_REPORTED_CNT).all()
     items = [review.asdict(user_hash) for review in reviews]
     dat = json.dumps(items, sort_keys=True, indent=4, separators=(',', ': '))
     return Response(response=dat,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]