Merge lp:~canonical-ca-hackers/ubuntu-recommender/top-up-recommendations into lp:ubuntu-recommender

Proposed by Łukasz Czyżykowski
Status: Merged
Approved by: Anthony Lenton
Approved revision: 57
Merged at revision: 56
Proposed branch: lp:~canonical-ca-hackers/ubuntu-recommender/top-up-recommendations
Merge into: lp:ubuntu-recommender
Diff against target: 63 lines (+19/-2)
2 files modified
src/recommender/api/handlers.py (+3/-2)
src/recommender/tests/test_api.py (+16/-0)
To merge this branch: bzr merge lp:~canonical-ca-hackers/ubuntu-recommender/top-up-recommendations
Reviewer Review Type Date Requested Status
Anthony Lenton (community) Approve
Review via email: mp+102708@code.launchpad.net

Commit message

Always return RECOMMENDATION_LIMIT number of recommendations from recommend me api call.

Description of the change

Overview
========
Added code to always return RECOMMENDATION_LIMIT number of recommendations from recommend me api call.

To post a comment you must log in.
Revision history for this message
Anthony Lenton (elachuni) wrote :

Thanks lukazs!

Revision history for this message
Anthony Lenton (elachuni) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/recommender/api/handlers.py'
--- src/recommender/api/handlers.py 2012-03-28 19:36:23 +0000
+++ src/recommender/api/handlers.py 2012-04-19 14:43:18 +0000
@@ -107,8 +107,9 @@
107 predictions = get_top_rated_apps(settings.RECOMMENDATION_LIMIT)107 predictions = get_top_rated_apps(settings.RECOMMENDATION_LIMIT)
108 return UserRecommendation(rid='', data=json.dumps(predictions))108 return UserRecommendation(rid='', data=json.dumps(predictions))
109 predictions = slopeone.predict_for_user(request.user.username)109 predictions = slopeone.predict_for_user(request.user.username)
110 if not predictions:110 missing_no = settings.RECOMMENDATION_LIMIT - len(predictions)
111 predictions = get_top_rated_apps(settings.RECOMMENDATION_LIMIT)111 if missing_no > 0:
112 predictions += get_top_rated_apps(missing_no)
112 rec = UserRecommendation.objects.create(113 rec = UserRecommendation.objects.create(
113 user=request.user,114 user=request.user,
114 rid=get_random_id(),115 rid=get_random_id(),
115116
=== modified file 'src/recommender/tests/test_api.py'
--- src/recommender/tests/test_api.py 2012-03-28 19:36:23 +0000
+++ src/recommender/tests/test_api.py 2012-04-19 14:43:18 +0000
@@ -49,6 +49,7 @@
49 Package,49 Package,
50 RemovedApp,50 RemovedApp,
51 RatingsAndReviewsDataItem,51 RatingsAndReviewsDataItem,
52 PersonIdentification,
52 Token,53 Token,
53 UserProfile,54 UserProfile,
54 UserRecommendation,55 UserRecommendation,
@@ -58,6 +59,7 @@
58 header_from_token,59 header_from_token,
59 patch_settings,60 patch_settings,
60 )61 )
62from recommender.predict import slopeone
6163
62from django_factory import TestCase64from django_factory import TestCase
6365
@@ -275,6 +277,7 @@
275 def setUp(self):277 def setUp(self):
276 super(RecommendMeTestCase, self).setUp()278 super(RecommendMeTestCase, self).setUp()
277 token, consumer = create_oauth_token_and_consumer(self.factory)279 token, consumer = create_oauth_token_and_consumer(self.factory)
280 self.consumer = consumer
278 self.url = reverse('api-recommend-me',281 self.url = reverse('api-recommend-me',
279 kwargs={'uuid': '12345678123456781234567812345678'})282 kwargs={'uuid': '12345678123456781234567812345678'})
280 self.header = header_from_token(self.url, token, consumer)283 self.header = header_from_token(self.url, token, consumer)
@@ -313,6 +316,19 @@
313 data = json.loads(response.content)316 data = json.loads(response.content)
314 self.assertNotEqual(data['data'], [])317 self.assertNotEqual(data['data'], [])
315318
319 @patch('recommender.api.handlers.slopeone')
320 def test_user_will_always_gets_max_number_of_predictions(
321 self, mock_slopeone):
322 mock_slopeone.predict_for_user.return_value = [
323 {'package_name': 'a', 'rating': 5}
324 ]
325 self.factory.make(settings.RECOMMENDATION_LIMIT, Package)
326
327 response = self.client.get(self.url, **self.header)
328
329 data = json.loads(response.content)
330 self.assertEqual(len(data['data']), settings.RECOMMENDATION_LIMIT)
331
316332
317class RecommendAppTestCase(TestCase):333class RecommendAppTestCase(TestCase):
318 def setUp(self):334 def setUp(self):

Subscribers

People subscribed via source and target branches