Merge lp:~elachuni/ubuntu-webcatalog/remove-portlet-if-empty into lp:ubuntu-webcatalog

Proposed by Anthony Lenton
Status: Merged
Approved by: Anthony Lenton
Approved revision: 116
Merged at revision: 114
Proposed branch: lp:~elachuni/ubuntu-webcatalog/remove-portlet-if-empty
Merge into: lp:ubuntu-webcatalog
Diff against target: 120 lines (+36/-5)
5 files modified
src/webcatalog/templates/webcatalog/application_detail.html (+1/-1)
src/webcatalog/templates/webcatalog/recommended_apps_widget.html (+2/-0)
src/webcatalog/tests/test_utilities.py (+8/-0)
src/webcatalog/tests/test_views.py (+19/-2)
src/webcatalog/utilities.py (+6/-2)
To merge this branch: bzr merge lp:~elachuni/ubuntu-webcatalog/remove-portlet-if-empty
Reviewer Review Type Date Requested Status
Natalia Bidart (community) Approve
Review via email: mp+102913@code.launchpad.net

Commit message

Another two minor fixes:
- Request the ajax version of the reviews from the app details page (not the full version).
- Only include a portlet header for recommended apps if there's at least one recommendation.

To post a comment you must log in.
115. By Anthony Lenton

Added missing newline at the end of a template.

116. By Anthony Lenton

Handled socket errors and other api issues.

Revision history for this message
Natalia Bidart (nataliabidart) wrote :

Branch looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/webcatalog/templates/webcatalog/application_detail.html'
--- src/webcatalog/templates/webcatalog/application_detail.html 2012-04-19 23:25:16 +0000
+++ src/webcatalog/templates/webcatalog/application_detail.html 2012-04-20 19:18:18 +0000
@@ -11,7 +11,7 @@
11YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('io-base', 'node-base', function (Y) {11YUI({combine: true, comboBase: '{% url wc-combo %}?', root: 'yui/3.4.0/build/'}).use('io-base', 'node-base', function (Y) {
1212
13 // XXX michaeln 2011-09-16 bug=851660 Autoload further batches of results.13 // XXX michaeln 2011-09-16 bug=851660 Autoload further batches of results.
14 var reviews_uri = "{% url wc-package-reviews application.distroseries.code_name application.package_name %}";14 var reviews_uri = "{% url wc-package-reviews-ajax application.distroseries.code_name application.package_name %}";
15 Y.io(reviews_uri, {15 Y.io(reviews_uri, {
16 on: {16 on: {
17 complete: function(id, obj){17 complete: function(id, obj){
1818
=== modified file 'src/webcatalog/templates/webcatalog/recommended_apps_widget.html'
--- src/webcatalog/templates/webcatalog/recommended_apps_widget.html 2012-04-19 23:05:19 +0000
+++ src/webcatalog/templates/webcatalog/recommended_apps_widget.html 2012-04-20 19:18:18 +0000
@@ -1,4 +1,5 @@
1{% load webcatalog %}1{% load webcatalog %}
2{% if recommended_apps %}
2<div class="portletheader">Other people also downloaded...</div>3<div class="portletheader">Other people also downloaded...</div>
3<ul class="portletactions">4<ul class="portletactions">
4{% for app in recommended_apps %}5{% for app in recommended_apps %}
@@ -16,3 +17,4 @@
16 </li>17 </li>
17{% endfor %}18{% endfor %}
18</ul>19</ul>
20{% endif %}
1921
=== modified file 'src/webcatalog/tests/test_utilities.py'
--- src/webcatalog/tests/test_utilities.py 2012-04-19 13:29:35 +0000
+++ src/webcatalog/tests/test_utilities.py 2012-04-20 19:18:18 +0000
@@ -38,6 +38,7 @@
38from django.test import TestCase38from django.test import TestCase
39from httplib2 import ServerNotFoundError39from httplib2 import ServerNotFoundError
40from mock import patch40from mock import patch
41from piston_mini_client.failhandlers import APIError
4142
4243
43class CreatePNGFromFileTestCase(TestCaseWithFactory):44class CreatePNGFromFileTestCase(TestCaseWithFactory):
@@ -176,6 +177,13 @@
176 self.assertEqual({'foo': 'bar'}, result)177 self.assertEqual({'foo': 'bar'}, result)
177 self.assertEqual(0, self.mock_recommend_app.call_count)178 self.assertEqual(0, self.mock_recommend_app.call_count)
178179
180 def test_get_recommends_for_package_socket_error(self):
181 self.mock_recommend_app.side_effect = APIError('500', 'error')
182
183 result = WebServices().get_recommends_for_package('firefox')
184
185 self.assertEqual({'data': [], 'package': 'firefox'}, result)
186
179187
180class ScreenshotGetterTestCase(TestCase):188class ScreenshotGetterTestCase(TestCase):
181 @patch('webcatalog.utilities.urllib.urlopen')189 @patch('webcatalog.utilities.urllib.urlopen')
182190
=== modified file 'src/webcatalog/tests/test_views.py'
--- src/webcatalog/tests/test_views.py 2012-04-20 16:57:50 +0000
+++ src/webcatalog/tests/test_views.py 2012-04-20 19:18:18 +0000
@@ -143,6 +143,15 @@
143 app.package_name,143 app.package_name,
144 ])))144 ])))
145145
146 def test_link_to_reviews_snippet(self):
147 response, app = self.get_app_and_response()
148
149 self.assertContains(response, 'var reviews_uri = "{0}"'.format(
150 reverse('wc-package-reviews-ajax', args=[
151 app.distroseries.code_name,
152 app.package_name,
153 ])))
154
146 def test_link_to_recommended_apps_not_present(self):155 def test_link_to_recommended_apps_not_present(self):
147 with patch_settings(NUM_RECOMMENDED_APPS=0):156 with patch_settings(NUM_RECOMMENDED_APPS=0):
148 response, app = self.get_app_and_response()157 response, app = self.get_app_and_response()
@@ -1090,11 +1099,19 @@
1090 app2 = self.factory.make_application(package_name='firefox')1099 app2 = self.factory.make_application(package_name='firefox')
10911100
1092 response = self.client.get(1101 response = self.client.get(
1093 reverse('wc-package-recommends', args=['firefox']),1102 reverse('wc-package-recommends', args=['firefox']))
1094 HTTP_X_REQUESTED_WITH='XMLHttpRequest')
10951103
1096 self.assertEqual(app2, response.context['application'])1104 self.assertEqual(app2, response.context['application'])
10971105
1106 def test_no_recommendations_renders_no_portlet_header(self):
1107 self.factory.make_application(package_name='firefox')
1108 self.mock_get_recommends.return_value['data'] = []
1109
1110 response = self.client.get(
1111 reverse('wc-package-recommends', args=['firefox']))
1112
1113 self.assertEqual('', response.content.strip())
1114
10981115
1099class ComboViewTestCase(TestCase):1116class ComboViewTestCase(TestCase):
1100 """Tests for ComboView."""1117 """Tests for ComboView."""
11011118
=== modified file 'src/webcatalog/utilities.py'
--- src/webcatalog/utilities.py 2012-04-19 13:29:35 +0000
+++ src/webcatalog/utilities.py 2012-04-20 19:18:18 +0000
@@ -42,6 +42,7 @@
42 BasicAuthorizer,42 BasicAuthorizer,
43 OAuthAuthorizer,43 OAuthAuthorizer,
44 )44 )
45from piston_mini_client.failhandlers import APIError
45from piston_mini_client.validators import ValidationException46from piston_mini_client.validators import ValidationException
46from rnrclient import RatingsAndReviewsAPI47from rnrclient import RatingsAndReviewsAPI
47from sreclient import SoftwareCenterRecommenderAPI48from sreclient import SoftwareCenterRecommenderAPI
@@ -89,8 +90,11 @@
89 if cached_recommends is not None:90 if cached_recommends is not None:
90 return cached_recommends91 return cached_recommends
9192
92 fresh_recommends = self.recommender_api.recommend_app(93 try:
93 pkgname=package_name)94 fresh_recommends = self.recommender_api.recommend_app(
95 pkgname=package_name)
96 except APIError:
97 fresh_recommends = {'package': package_name, 'data': []}
94 cache.set(key, fresh_recommends)98 cache.set(key, fresh_recommends)
95 return fresh_recommends99 return fresh_recommends
96100

Subscribers

People subscribed via source and target branches