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
=== modified file 'src/webcatalog/management/commands/import_sca_apps.py'
--- src/webcatalog/management/commands/import_sca_apps.py 2012-07-02 21:25:30 +0000
+++ src/webcatalog/management/commands/import_sca_apps.py 2012-08-20 09:31:44 +0000
@@ -24,6 +24,7 @@
24import json24import json
25import os25import os
26import urllib26import urllib
27from collections import defaultdict
27from StringIO import StringIO28from StringIO import StringIO
28from tempfile import mkstemp29from tempfile import mkstemp
2930
@@ -52,6 +53,13 @@
52 if response.code != 200:53 if response.code != 200:
53 raise Exception("Couldn't connect to server at %s" % url)54 raise Exception("Couldn't connect to server at %s" % url)
54 app_list = json.loads(response.read())55 app_list = json.loads(response.read())
56 imported_apps = Application.objects.filter(
57 imported_from_sca=True).values_list(
58 'package_name',
59 'distroseries__code_name')
60 existing_apps = defaultdict(list)
61 for package_name, code_name in imported_apps:
62 existing_apps[package_name].append(code_name)
55 reverse_versions = dict((v, k) for (k, v) in63 reverse_versions = dict((v, k) for (k, v) in
56 settings.UBUNTU_SERIES_FOR_VERSIONS.items())64 settings.UBUNTU_SERIES_FOR_VERSIONS.items())
57 for app_data in app_list:65 for app_data in app_list:
@@ -66,9 +74,24 @@
66 self.output(74 self.output(
67 "Created a DistroSeries record called '{0}'.\n".format(75 "Created a DistroSeries record called '{0}'.\n".format(
68 series_name), 1)76 series_name), 1)
69 self.import_app_from_data(app_data, icon_data, distroseries)77 package_name = self.import_app_from_data(
78 app_data, icon_data, distroseries)
79 if package_name:
80 existing_series = existing_apps.get(package_name)
81 if existing_series and series_name in existing_series:
82 existing_series.remove(series_name)
83 if not existing_series:
84 del(existing_apps[package_name])
85
70 Application.objects.check_latest(app_data['package_name'])86 Application.objects.check_latest(app_data['package_name'])
7187
88 # Any sca-imported apps that existed before update, but were not
89 # imported from sca are removed.
90 for package_name, series in existing_apps.items():
91 Application.objects.filter(
92 package_name=package_name,
93 distroseries__code_name__in=series).delete()
94
72 def import_app_from_data(self, app_data, icon_data, distroseries):95 def import_app_from_data(self, app_data, icon_data, distroseries):
73 form = SCAApplicationForm.from_api_data(96 form = SCAApplicationForm.from_api_data(
74 app_data, distroseries)97 app_data, distroseries)
@@ -77,6 +100,7 @@
77 app.update_departments()100 app.update_departments()
78 self.add_icon_to_app(app, data=icon_data)101 self.add_icon_to_app(app, data=icon_data)
79 self.output(u"{0} created.\n".format(app.name).encode('utf-8'), 1)102 self.output(u"{0} created.\n".format(app.name).encode('utf-8'), 1)
103 return app.package_name
80104
81 def get_icon_data(self, app_data):105 def get_icon_data(self, app_data):
82 icon_data = app_data.get('icon_data', '')106 icon_data = app_data.get('icon_data', '')
83107
=== modified file 'src/webcatalog/schema.py'
--- src/webcatalog/schema.py 2012-07-02 13:51:23 +0000
+++ src/webcatalog/schema.py 2012-08-20 09:31:44 +0000
@@ -22,7 +22,7 @@
22from configglue import schema22from configglue import schema
23from django_configglue.schema import schemas23from django_configglue.schema import schemas
2424
25DjangoSchema = schemas.get(django.get_version())25DjangoSchema = schemas.get('1.3')
2626
2727
28class WebCatalogSchema(DjangoSchema):28class WebCatalogSchema(DjangoSchema):
2929
=== modified file 'src/webcatalog/static/js/screenshots.js'
--- src/webcatalog/static/js/screenshots.js 2012-05-29 18:23:21 +0000
+++ src/webcatalog/static/js/screenshots.js 2012-08-20 09:31:44 +0000
@@ -65,7 +65,7 @@
65 slides.on("click", function(e){65 slides.on("click", function(e){
66 var slide = e.currentTarget;66 var slide = e.currentTarget;
67 var url = slide.getAttribute('src');67 var url = slide.getAttribute('src');
68 heading = appName + ' - screeshot ';68 heading = appName + ' - screenshot ';
69 panel.setStdModContent(Y.WidgetStdMod.HEADER, heading);69 panel.setStdModContent(Y.WidgetStdMod.HEADER, heading);
70 panel.setStdModContent(Y.WidgetStdMod.BODY, '<img width="800" src="' + url +'"/>');70 panel.setStdModContent(Y.WidgetStdMod.BODY, '<img width="800" src="' + url +'"/>');
71 panel.render('#viewerPanel');71 panel.render('#viewerPanel');
7272
=== modified file 'src/webcatalog/tests/test_commands.py'
--- src/webcatalog/tests/test_commands.py 2012-07-02 21:25:30 +0000
+++ src/webcatalog/tests/test_commands.py 2012-08-20 09:31:44 +0000
@@ -68,7 +68,7 @@
68 'CleanupDataTestCase',68 'CleanupDataTestCase',
69 'ImportAppInstallTestCase',69 'ImportAppInstallTestCase',
70 'ImportExhibitsTestCase',70 'ImportExhibitsTestCase',
71 'ImportForPurchaseAppsTestCase',71 'ImportFromSCAAppsTestCase',
72 'ImportRatingsTestCase',72 'ImportRatingsTestCase',
73 'ImportAllAppInstallDataTestCase',73 'ImportAllAppInstallDataTestCase',
74 'ImportAllRatingsStatsTestCase',74 'ImportAllRatingsStatsTestCase',
@@ -538,10 +538,10 @@
538 self.assertFalse(app.icon)538 self.assertFalse(app.icon)
539539
540540
541class ImportForPurchaseAppsTestCase(TestCaseWithFactory):541class ImportFromSCAAppsTestCase(TestCaseWithFactory):
542542
543 def setUp(self):543 def setUp(self):
544 super(ImportForPurchaseAppsTestCase, self).setUp()544 super(ImportFromSCAAppsTestCase, self).setUp()
545 self.natty = self.factory.make_distroseries(545 self.natty = self.factory.make_distroseries(
546 code_name='natty', version='11.04')546 code_name='natty', version='11.04')
547 self.maverick = self.factory.make_distroseries(547 self.maverick = self.factory.make_distroseries(
@@ -682,6 +682,25 @@
682 arb_apps = Application.objects.filter(package_name='eg_arb_app')682 arb_apps = Application.objects.filter(package_name='eg_arb_app')
683 self.assertEqual(2, arb_apps.count())683 self.assertEqual(2, arb_apps.count())
684684
685 def test_no_longer_existing_apps_are_removed(self):
686 precise = self.factory.make_distroseries(code_name='precise')
687 old_app = self.factory.make_application(
688 package_name='hello', distroseries=precise,
689 imported_from_sca=True)
690
691 with patch_settings(UBUNTU_SERIES_FOR_VERIONS={
692 '10.04': 'lucid',
693 '11.04': 'natty',
694 }):
695 call_command('import_sca_apps')
696
697 self.assertEqual(0, Application.objects.filter(pk=old_app.id).count())
698 remaining_hello_apps = Application.objects.filter(
699 imported_from_sca=True, package_name='hello')
700 self.assertEqual(1, remaining_hello_apps.count())
701 self.assertEqual('natty',
702 remaining_hello_apps[0].distroseries.code_name)
703
685704
686class ImportRatingsTestCase(TestCaseWithFactory):705class ImportRatingsTestCase(TestCaseWithFactory):
687706

Subscribers

People subscribed via source and target branches