Merge lp:~rvb/launchpad/bug-869221-expose-nominatedarchindep into lp:launchpad

Proposed by Raphaël Badin
Status: Merged
Approved by: Raphaël Badin
Approved revision: no longer in the source branch.
Merged at revision: 14166
Proposed branch: lp:~rvb/launchpad/bug-869221-expose-nominatedarchindep
Merge into: lp:launchpad
Diff against target: 108 lines (+27/-9)
5 files modified
lib/canonical/launchpad/interfaces/_schema_circular_imports.py (+7/-5)
lib/lp/registry/browser/tests/test_distroseries_webservice.py (+10/-0)
lib/lp/registry/interfaces/distroseries.py (+8/-3)
lib/lp/registry/stories/webservice/xx-distroseries.txt (+1/-0)
lib/lp/soyuz/scripts/initialize_distroseries.py (+1/-1)
To merge this branch: bzr merge lp:~rvb/launchpad/bug-869221-expose-nominatedarchindep
Reviewer Review Type Date Requested Status
Benji York (community) code Approve
Review via email: mp+78797@code.launchpad.net

Commit message

Expose IDistroseries.nominatedarchindep on the api.

Description of the change

This branch simply exposes IDistroseries.nominatedarchindep on the api. This is (good to have in general and) in preparation for the ui part of fixing #869221.

= Tests =

./bin/test -vvc test_distroseries_webservice test_nominatedarchindep

= QA =

Fetch a distroseries via the api and make sure that it has the attribute nominatedarchindep.

To post a comment you must log in.
Revision history for this message
Benji York (benji) wrote :

Looks good.

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/canonical/launchpad/interfaces/_schema_circular_imports.py'
2--- lib/canonical/launchpad/interfaces/_schema_circular_imports.py 2011-09-27 20:07:25 +0000
3+++ lib/canonical/launchpad/interfaces/_schema_circular_imports.py 2011-10-18 07:26:27 +0000
4@@ -31,11 +31,6 @@
5 patch_reference_property,
6 )
7 from canonical.launchpad.interfaces.emailaddress import IEmailAddress
8-from lp.services.messages.interfaces.message import (
9- IIndexedMessage,
10- IMessage,
11- IUserToUserEmail,
12- )
13 from canonical.launchpad.interfaces.temporaryblobstorage import (
14 ITemporaryBlobStorage,
15 ITemporaryStorageManager,
16@@ -173,6 +168,11 @@
17 from lp.registry.interfaces.teammembership import ITeamMembership
18 from lp.registry.interfaces.wikiname import IWikiName
19 from lp.services.comments.interfaces.conversation import IComment
20+from lp.services.messages.interfaces.message import (
21+ IIndexedMessage,
22+ IMessage,
23+ IUserToUserEmail,
24+ )
25 from lp.services.worlddata.interfaces.country import (
26 ICountry,
27 ICountrySet,
28@@ -506,6 +506,8 @@
29 patch_collection_return_type(
30 IDistroSeries, 'getPackageUploads', IPackageUpload)
31 patch_reference_property(IDistroSeries, 'previous_series', IDistroSeries)
32+patch_reference_property(
33+ IDistroSeries, 'nominatedarchindep', IDistroArchSeries)
34 patch_collection_return_type(
35 IDistroSeries, 'getDerivedSeries', IDistroSeries)
36 patch_collection_return_type(
37
38=== modified file 'lib/lp/registry/browser/tests/test_distroseries_webservice.py'
39--- lib/lp/registry/browser/tests/test_distroseries_webservice.py 2011-07-05 10:47:28 +0000
40+++ lib/lp/registry/browser/tests/test_distroseries_webservice.py 2011-10-18 07:26:27 +0000
41@@ -5,6 +5,8 @@
42
43 from datetime import timedelta
44
45+from zope.security.proxy import removeSecurityProxy
46+
47 from canonical.testing import AppServerLayer
48 from lp.registry.enum import (
49 DistroSeriesDifferenceStatus,
50@@ -57,3 +59,11 @@
51 search_results = ds_ws.getDifferenceComments(
52 since=yesterday, source_package_name=package_name)
53 self.assertContentEqual([self._wsFor(comment)], search_results)
54+
55+ def test_nominatedarchindep(self):
56+ # nominatedarchindep is exposed on IDistroseries.
57+ distroseries = self.factory.makeDistroSeries()
58+ arch = self.factory.makeDistroArchSeries(distroseries=distroseries)
59+ removeSecurityProxy(distroseries).nominatedarchindep = arch
60+ ds_ws = self._wsFor(distroseries)
61+ self.assertEqual(self._wsFor(arch), ds_ws.nominatedarchindep)
62
63=== modified file 'lib/lp/registry/interfaces/distroseries.py'
64--- lib/lp/registry/interfaces/distroseries.py 2011-10-17 08:55:32 +0000
65+++ lib/lp/registry/interfaces/distroseries.py 2011-10-18 07:26:27 +0000
66@@ -284,9 +284,14 @@
67
68 architecturecount = Attribute("The number of architectures in this "
69 "series.")
70- nominatedarchindep = Attribute(
71- "DistroArchSeries designed to build architecture-independent "
72- "packages whithin this distroseries context.")
73+ nominatedarchindep = exported(
74+ Reference(
75+ Interface, # IDistroArchSeries.
76+ title=_("DistroArchSeries designed to build "
77+ "architecture-independent packages whithin this "
78+ "distroseries context."),
79+ default=None,
80+ required=False))
81 messagecount = Attribute("The total number of translatable items in "
82 "this series.")
83 distroserieslanguages = Attribute("The set of dr-languages in this "
84
85=== modified file 'lib/lp/registry/stories/webservice/xx-distroseries.txt'
86--- lib/lp/registry/stories/webservice/xx-distroseries.txt 2011-09-09 15:07:18 +0000
87+++ lib/lp/registry/stories/webservice/xx-distroseries.txt 2011-10-18 07:26:27 +0000
88@@ -77,6 +77,7 @@
89 include_long_descriptions: True
90 main_archive_link: u'http://.../ubuntu/+archive/primary'
91 name: u'hoary'
92+ nominatedarchindep_link: u'http://.../ubuntu/hoary/i386'
93 official_bug_tags: []
94 owner_link: u'http://.../~ubuntu-team'
95 parent_series_link: u'http://.../ubuntu/warty'
96
97=== modified file 'lib/lp/soyuz/scripts/initialize_distroseries.py'
98--- lib/lp/soyuz/scripts/initialize_distroseries.py 2011-10-07 09:30:44 +0000
99+++ lib/lp/soyuz/scripts/initialize_distroseries.py 2011-10-18 07:26:27 +0000
100@@ -171,7 +171,7 @@
101 if len(potential_nominated_arches) == 0:
102 raise InitializationError(
103 "The distroseries has no architectures selected to "
104- "build architecture independent binaries.")
105+ "build architecture independent binaries.")
106
107 def _checkPublisherConfig(self):
108 """A series cannot be initialized if it has no publisher config