Merge lp:~michael.nelson/ubuntu-webcatalog/985446-remove-commercial-apps-too into lp:ubuntu-webcatalog

Proposed by Michael Nelson
Status: Merged
Approved by: Łukasz Czyżykowski
Approved revision: 165
Merged at revision: 162
Proposed branch: lp:~michael.nelson/ubuntu-webcatalog/985446-remove-commercial-apps-too
Merge into: lp:ubuntu-webcatalog
Diff against target: 136 lines (+49/-6)
4 files modified
src/webcatalog/management/commands/import_sca_apps.py (+25/-1)
src/webcatalog/schema.py (+1/-1)
src/webcatalog/static/js/screenshots.js (+1/-1)
src/webcatalog/tests/test_commands.py (+22/-3)
To merge this branch: bzr merge lp:~michael.nelson/ubuntu-webcatalog/985446-remove-commercial-apps-too
Reviewer Review Type Date Requested Status
Łukasz Czyżykowski (community) Approve
Review via email: mp+120351@code.launchpad.net

Description of the change

Overview
========

As per bug 985446, ensures any apps that were previously imported from sca, but are no longer imported are deleted.

`fab test`

To post a comment you must log in.
Revision history for this message
Łukasz Czyżykowski (lukasz-czyzykowski) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/webcatalog/management/commands/import_sca_apps.py'
2--- src/webcatalog/management/commands/import_sca_apps.py 2012-07-02 21:25:30 +0000
3+++ src/webcatalog/management/commands/import_sca_apps.py 2012-08-20 09:31:44 +0000
4@@ -24,6 +24,7 @@
5 import json
6 import os
7 import urllib
8+from collections import defaultdict
9 from StringIO import StringIO
10 from tempfile import mkstemp
11
12@@ -52,6 +53,13 @@
13 if response.code != 200:
14 raise Exception("Couldn't connect to server at %s" % url)
15 app_list = json.loads(response.read())
16+ imported_apps = Application.objects.filter(
17+ imported_from_sca=True).values_list(
18+ 'package_name',
19+ 'distroseries__code_name')
20+ existing_apps = defaultdict(list)
21+ for package_name, code_name in imported_apps:
22+ existing_apps[package_name].append(code_name)
23 reverse_versions = dict((v, k) for (k, v) in
24 settings.UBUNTU_SERIES_FOR_VERSIONS.items())
25 for app_data in app_list:
26@@ -66,9 +74,24 @@
27 self.output(
28 "Created a DistroSeries record called '{0}'.\n".format(
29 series_name), 1)
30- self.import_app_from_data(app_data, icon_data, distroseries)
31+ package_name = self.import_app_from_data(
32+ app_data, icon_data, distroseries)
33+ if package_name:
34+ existing_series = existing_apps.get(package_name)
35+ if existing_series and series_name in existing_series:
36+ existing_series.remove(series_name)
37+ if not existing_series:
38+ del(existing_apps[package_name])
39+
40 Application.objects.check_latest(app_data['package_name'])
41
42+ # Any sca-imported apps that existed before update, but were not
43+ # imported from sca are removed.
44+ for package_name, series in existing_apps.items():
45+ Application.objects.filter(
46+ package_name=package_name,
47+ distroseries__code_name__in=series).delete()
48+
49 def import_app_from_data(self, app_data, icon_data, distroseries):
50 form = SCAApplicationForm.from_api_data(
51 app_data, distroseries)
52@@ -77,6 +100,7 @@
53 app.update_departments()
54 self.add_icon_to_app(app, data=icon_data)
55 self.output(u"{0} created.\n".format(app.name).encode('utf-8'), 1)
56+ return app.package_name
57
58 def get_icon_data(self, app_data):
59 icon_data = app_data.get('icon_data', '')
60
61=== modified file 'src/webcatalog/schema.py'
62--- src/webcatalog/schema.py 2012-07-02 13:51:23 +0000
63+++ src/webcatalog/schema.py 2012-08-20 09:31:44 +0000
64@@ -22,7 +22,7 @@
65 from configglue import schema
66 from django_configglue.schema import schemas
67
68-DjangoSchema = schemas.get(django.get_version())
69+DjangoSchema = schemas.get('1.3')
70
71
72 class WebCatalogSchema(DjangoSchema):
73
74=== modified file 'src/webcatalog/static/js/screenshots.js'
75--- src/webcatalog/static/js/screenshots.js 2012-05-29 18:23:21 +0000
76+++ src/webcatalog/static/js/screenshots.js 2012-08-20 09:31:44 +0000
77@@ -65,7 +65,7 @@
78 slides.on("click", function(e){
79 var slide = e.currentTarget;
80 var url = slide.getAttribute('src');
81- heading = appName + ' - screeshot ';
82+ heading = appName + ' - screenshot ';
83 panel.setStdModContent(Y.WidgetStdMod.HEADER, heading);
84 panel.setStdModContent(Y.WidgetStdMod.BODY, '<img width="800" src="' + url +'"/>');
85 panel.render('#viewerPanel');
86
87=== modified file 'src/webcatalog/tests/test_commands.py'
88--- src/webcatalog/tests/test_commands.py 2012-07-02 21:25:30 +0000
89+++ src/webcatalog/tests/test_commands.py 2012-08-20 09:31:44 +0000
90@@ -68,7 +68,7 @@
91 'CleanupDataTestCase',
92 'ImportAppInstallTestCase',
93 'ImportExhibitsTestCase',
94- 'ImportForPurchaseAppsTestCase',
95+ 'ImportFromSCAAppsTestCase',
96 'ImportRatingsTestCase',
97 'ImportAllAppInstallDataTestCase',
98 'ImportAllRatingsStatsTestCase',
99@@ -538,10 +538,10 @@
100 self.assertFalse(app.icon)
101
102
103-class ImportForPurchaseAppsTestCase(TestCaseWithFactory):
104+class ImportFromSCAAppsTestCase(TestCaseWithFactory):
105
106 def setUp(self):
107- super(ImportForPurchaseAppsTestCase, self).setUp()
108+ super(ImportFromSCAAppsTestCase, self).setUp()
109 self.natty = self.factory.make_distroseries(
110 code_name='natty', version='11.04')
111 self.maverick = self.factory.make_distroseries(
112@@ -682,6 +682,25 @@
113 arb_apps = Application.objects.filter(package_name='eg_arb_app')
114 self.assertEqual(2, arb_apps.count())
115
116+ def test_no_longer_existing_apps_are_removed(self):
117+ precise = self.factory.make_distroseries(code_name='precise')
118+ old_app = self.factory.make_application(
119+ package_name='hello', distroseries=precise,
120+ imported_from_sca=True)
121+
122+ with patch_settings(UBUNTU_SERIES_FOR_VERIONS={
123+ '10.04': 'lucid',
124+ '11.04': 'natty',
125+ }):
126+ call_command('import_sca_apps')
127+
128+ self.assertEqual(0, Application.objects.filter(pk=old_app.id).count())
129+ remaining_hello_apps = Application.objects.filter(
130+ imported_from_sca=True, package_name='hello')
131+ self.assertEqual(1, remaining_hello_apps.count())
132+ self.assertEqual('natty',
133+ remaining_hello_apps[0].distroseries.code_name)
134+
135
136 class ImportRatingsTestCase(TestCaseWithFactory):
137

Subscribers

People subscribed via source and target branches