Merge lp:~elachuni/ubuntu-webcatalog/screenshots-and-reviews into lp:ubuntu-webcatalog

Proposed by Anthony Lenton
Status: Merged
Approved by: Łukasz Czyżykowski
Approved revision: 108
Merged at revision: 107
Proposed branch: lp:~elachuni/ubuntu-webcatalog/screenshots-and-reviews
Merge into: lp:ubuntu-webcatalog
Diff against target: 93 lines (+30/-6)
3 files modified
src/webcatalog/tests/test_views.py (+22/-2)
src/webcatalog/utilities.py (+6/-3)
src/webcatalog/views.py (+2/-1)
To merge this branch: bzr merge lp:~elachuni/ubuntu-webcatalog/screenshots-and-reviews
Reviewer Review Type Date Requested Status
Canonical Consumer Applications Hackers Pending
Review via email: mp+102616@code.launchpad.net

Commit message

Fix screenshots and reviews.

Description of the change

A fix for two issues uncovered during testing:

- The review page crashes for packages with colons in their names. Afaik this is an issue only for multiarch packages (that's why they picked that separator). See for example http://catalog.razorgirl.info/cat/applications/oneiric/skype:i386/reviews/
http://catalog.razorgirl.info/cat/applications/skype:i386/ is even funnier.

- The screenshots page fails when there's more than one app for a given package name (this includes the same app on two different distroseries). See for example https://catalog.razorgirl.info/cat/applications/screenshots/hedgewars/

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/webcatalog/tests/test_views.py'
2--- src/webcatalog/tests/test_views.py 2012-04-18 22:29:29 +0000
3+++ src/webcatalog/tests/test_views.py 2012-04-19 03:12:18 +0000
4@@ -897,7 +897,8 @@
5 self.mock_get_reviews.return_value = [eg_review]
6
7 def tearDown(self):
8- self.get_reviews_patcher.stop()
9+ if hasattr(self, 'get_reviews_patcher'):
10+ self.get_reviews_patcher.stop()
11 super(ApplicationReviewsTestCase, self).tearDown()
12
13 def test_only_valid_apps(self):
14@@ -968,11 +969,21 @@
15 self.assertContains(response, 'review_summary1')
16 self.assertContains(response, 'review_summary2')
17
18+ def test_doesnt_break_for_invalid_package_name(self):
19+ self.get_reviews_patcher.stop()
20+ del self.get_reviews_patcher
21+ app = self.factory.make_application(package_name='invalid:name')
22+
23+ response = self.client.get(reverse('wc-package-reviews',
24+ args=[app.distroseries.code_name, app.package_name]))
25+
26+ self.assertEqual(200, response.status_code)
27+
28
29 class ApplicationScreenshotsTestCase(TestCaseWithFactory):
30 def setUp(self):
31 super(ApplicationScreenshotsTestCase, self).setUp()
32- self.app = self.factory.make_application()
33+ self.app = self.factory.make_application(is_latest=True)
34 self.expected = ['http://example.com/foo', 'http://example.com/bar']
35
36 def test_only_valid_apps(self):
37@@ -1032,6 +1043,15 @@
38
39 self.assertEqual('max-age=600', response['cache-control'])
40
41+ @patch('webcatalog.utilities.urllib.urlopen')
42+ def test_doesnt_break_with_multiple_apps(self, mock_urlopen):
43+ self.factory.make_application(package_name=self.app.package_name)
44+
45+ response = self.client.get(reverse('wc-package-screenshots',
46+ args=[self.app.package_name]))
47+
48+ self.assertEqual(200, response.status_code)
49+
50
51 class ComboViewTestCase(TestCase):
52 """Tests for ComboView."""
53
54=== modified file 'src/webcatalog/utilities.py'
55--- src/webcatalog/utilities.py 2012-04-18 22:29:29 +0000
56+++ src/webcatalog/utilities.py 2012-04-19 03:12:18 +0000
57@@ -42,7 +42,7 @@
58 BasicAuthorizer,
59 OAuthAuthorizer,
60 )
61-
62+from piston_mini_client.validators import ValidationException
63 from rnrclient import RatingsAndReviewsAPI
64 from ssoclient import SingleSignOnAPI
65
66@@ -74,8 +74,11 @@
67 if cached_reviews is not None:
68 return cached_reviews
69
70- fresh_reviews = self.rnr_api.get_reviews(packagename=package_name,
71- distroseries=distroseries, page=page)
72+ try:
73+ fresh_reviews = self.rnr_api.get_reviews(packagename=package_name,
74+ distroseries=distroseries, page=page)
75+ except ValidationException:
76+ fresh_reviews = []
77 cache.set(key, fresh_reviews, settings.REVIEWS_CACHE_TIMEOUT)
78 return fresh_reviews
79
80
81=== modified file 'src/webcatalog/views.py'
82--- src/webcatalog/views.py 2012-04-18 22:29:29 +0000
83+++ src/webcatalog/views.py 2012-04-19 03:12:18 +0000
84@@ -211,7 +211,8 @@
85
86
87 def application_screenshots(request, package_name):
88- app = get_object_or_404(Application, package_name=package_name)
89+ app = get_object_or_404(Application, package_name=package_name,
90+ is_latest=True)
91 screenshots = WebServices().get_screenshots_for_package(package_name)
92 if request.is_ajax():
93 return HttpResponse(json.dumps(screenshots),

Subscribers

People subscribed via source and target branches