Merge lp:~leonardr/launchpad/publish-distro-series-for-recipe into lp:launchpad

Proposed by Tim Penhey
Status: Work in progress
Proposed branch: lp:~leonardr/launchpad/publish-distro-series-for-recipe
Merge into: lp:launchpad
Diff against target: 107 lines (+73/-4)
3 files modified
lib/lp/code/interfaces/sourcepackagerecipe.py (+25/-4)
lib/lp/code/model/sourcepackagerecipe.py (+8/-0)
lib/lp/code/tests/test_recipe_webservice.py (+40/-0)
To merge this branch: bzr merge lp:~leonardr/launchpad/publish-distro-series-for-recipe
Reviewer Review Type Date Requested Status
Launchpad code reviewers Pending
Review via email: mp+50996@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

12444. By Leonard Richardson

Added fake implementations of addDistroSeries and removeDistroSeries.

12443. By Leonard Richardson

Published the distroseries in the web service starting in version devel.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/code/interfaces/sourcepackagerecipe.py'
--- lib/lp/code/interfaces/sourcepackagerecipe.py 2011-02-22 23:07:17 +0000
+++ lib/lp/code/interfaces/sourcepackagerecipe.py 2011-02-23 20:46:44 +0000
@@ -179,10 +179,11 @@
179 vocabulary='UserTeamsParticipationPlusSelf',179 vocabulary='UserTeamsParticipationPlusSelf',
180 description=_("The person or team who can edit this recipe.")))180 description=_("The person or team who can edit this recipe.")))
181181
182 distroseries = CollectionField(182 distroseries = exported(CollectionField(
183 Reference(IDistroSeries), title=_("The distroseries this recipe will"183 value_type=Reference(schema=IDistroSeries),
184 " build a source package for"),184 title=_("This recipe will build a source package for these "
185 readonly=False)185 "distroseries."),
186 readonly=False), (("devel", dict(exported=True))), exported=False)
186 build_daily = exported(Bool(187 build_daily = exported(Bool(
187 title=_("Built daily"),188 title=_("Built daily"),
188 description=_("Automatically build each day, if the source has changed.")))189 description=_("Automatically build each day, if the source has changed.")))
@@ -203,6 +204,26 @@
203204
204 is_stale = Bool(title=_('Recipe is stale.'))205 is_stale = Bool(title=_('Recipe is stale.'))
205206
207 @operation_parameters(distro_series=Reference(schema=IDistroSeries))
208 @export_write_operation()
209 @operation_for_version("devel")
210 def addDistroSeries(distro_series):
211 """Start building source packages for an additional distro series.
212
213 :param distroseries: The distro series for which source
214 packages should be built.
215 """
216
217 @operation_parameters(distro_series=Reference(schema=IDistroSeries))
218 @export_write_operation()
219 @operation_for_version("devel")
220 def removeDistroSeries(distro_series):
221 """Stop building source packages for a given distro series.
222
223 :param distroseries: The distro series for which source
224 packages should no longer be built.
225 """
226
206227
207class ISourcePackageRecipe(ISourcePackageRecipeData,228class ISourcePackageRecipe(ISourcePackageRecipeData,
208 ISourcePackageRecipeEdit, ISourcePackageRecipeEditableAttributes,229 ISourcePackageRecipeEdit, ISourcePackageRecipeEditableAttributes,
209230
=== modified file 'lib/lp/code/model/sourcepackagerecipe.py'
--- lib/lp/code/model/sourcepackagerecipe.py 2011-02-19 00:30:04 +0000
+++ lib/lp/code/model/sourcepackagerecipe.py 2011-02-23 20:46:44 +0000
@@ -342,3 +342,11 @@
342 return None342 return None
343 durations.sort(reverse=True)343 durations.sort(reverse=True)
344 return durations[len(durations) / 2]344 return durations[len(durations) / 2]
345
346 def addDistroSeries(self, distro_series):
347 """Add a distroseries to the list of series that get builds."""
348 pass
349
350 def removeDistroSeries(self, distro_series):
351 """Add a distroseries to the list of series that get builds."""
352 pass
345353
=== added file 'lib/lp/code/tests/test_recipe_webservice.py'
--- lib/lp/code/tests/test_recipe_webservice.py 1970-01-01 00:00:00 +0000
+++ lib/lp/code/tests/test_recipe_webservice.py 2011-02-23 20:46:44 +0000
@@ -0,0 +1,40 @@
1# Copyright 2011 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).
3
4__metaclass__ = type
5
6from canonical.testing.layers import DatabaseFunctionalLayer
7from lp.testing import (
8 launchpadlib_for,
9 login_person,
10 logout,
11 TestCaseWithFactory,
12 )
13
14
15class TestRecipeDistroSeries(TestCaseWithFactory):
16
17 layer = DatabaseFunctionalLayer
18
19 def setUp(self):
20 super(TestRecipeDistroSeries, self).setUp()
21 recipe = self.factory.makeSourcePackageRecipe()
22 self.recipe_name = recipe.name
23 self.owner_name = recipe.owner.name
24
25 def test_distroseries_present_in_devel(self):
26 lp = launchpadlib_for("test", self.owner_name, version="devel")
27 recipe = lp.me.getRecipe(name=self.recipe_name)
28 self.assertEqual(len(recipe.distroseries), 1)
29
30 def test_distroseries_not_present_in_10(self):
31 lp = launchpadlib_for("test", self.owner_name, version="1.0")
32 recipe_in_10 = lp.me.getRecipe(name=self.recipe_name)
33 self.assertFalse(hasattr(recipe_in_10, 'distroseries'))
34
35 def test_add_distroseries(self):
36 series = self.factory.makeSourcePackageRecipeDistroseries()
37 lp = launchpadlib_for("test", self.owner_name, version="devel")
38 recipe = lp.me.getRecipe(name=self.recipe_name)
39 distro_series = lp.distributions['ubuntu'].getSeries(name_or_version='warty')
40 recipe.addDistroSeries(distro_series=distro_series)