← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~stevenk/launchpad/derivedistroseries-qafail-again into lp:launchpad/devel

 

Steve Kowalik has proposed merging lp:~stevenk/launchpad/derivedistroseries-qafail-again into lp:launchpad/devel.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)


Fix a stupid thinko in the circular imports for deriveDistroSeries()

Also, remove status, since it's pointless, callers can't iterate over any objects in the API for the different states, and you need launchpad.Moderate permission to set it.

Fix the API tests to exercise how I was planning to QA it, by creating a new series.
-- 
https://code.launchpad.net/~stevenk/launchpad/derivedistroseries-qafail-again/+merge/40054
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~stevenk/launchpad/derivedistroseries-qafail-again into lp:launchpad/devel.
=== modified file 'lib/canonical/launchpad/interfaces/_schema_circular_imports.py'
--- lib/canonical/launchpad/interfaces/_schema_circular_imports.py	2010-11-02 05:48:54 +0000
+++ lib/canonical/launchpad/interfaces/_schema_circular_imports.py	2010-11-04 07:44:43 +0000
@@ -379,7 +379,7 @@
     IDistroSeries, 'getPackageUploads', IPackageUpload)
 patch_reference_property(IDistroSeries, 'parent_series', IDistroSeries)
 patch_plain_parameter_type(
-    IDistroSeries, 'deriveDistroSeries', 'distribution', IDistroSeries)
+    IDistroSeries, 'deriveDistroSeries', 'distribution', IDistribution)
 
 # IDistroSeriesDifferenceComment
 IDistroSeriesDifferenceComment['comment_author'].schema = IPerson

=== modified file 'lib/lp/registry/interfaces/distroseries.py'
--- lib/lp/registry/interfaces/distroseries.py	2010-11-02 06:21:58 +0000
+++ lib/lp/registry/interfaces/distroseries.py	2010-11-04 07:44:43 +0000
@@ -810,7 +810,6 @@
         description=copy_field(description, required=False),
         version=copy_field(version, required=False),
         distribution=copy_field(distribution, required=False),
-        status=copy_field(status, required=False),
         architectures=List(
             title=_("The list of architectures to copy to the derived "
             "distroseries."), value_type=TextLine(),
@@ -827,7 +826,7 @@
     @call_with(user=REQUEST_USER)
     @export_write_operation()
     def deriveDistroSeries(user, name, displayname, title, summary,
-                           description, version, distribution, status,
+                           description, version, distribution,
                            architectures, packagesets, rebuild):
         """Derive a distroseries from this one.
 
@@ -851,9 +850,6 @@
         :param distribution: The distribution the derived series will
             belong to. If it isn't specified this distroseries'
             distribution is used.
-        :param status: The status the new distroseries will be created
-            in. If the distroseries isn't specified, this parameter will
-            be ignored. Defaults to FROZEN.
         :param architectures: The architectures to copy to the derived
             series. If not specified, all of the architectures are copied.
         :param packagesets: The packagesets to copy to the derived series.

=== modified file 'lib/lp/registry/model/distroseries.py'
--- lib/lp/registry/model/distroseries.py	2010-11-03 17:47:52 +0000
+++ lib/lp/registry/model/distroseries.py	2010-11-04 07:44:43 +0000
@@ -1890,8 +1890,7 @@
     def deriveDistroSeries(self, user, name, distribution=None,
                            displayname=None, title=None, summary=None,
                            description=None, version=None,
-                           status=SeriesStatus.FROZEN, architectures=(),
-                           packagesets=(), rebuild=False):
+                           architectures=(), packagesets=(), rebuild=False):
         """See `IDistroSeries`."""
         # XXX StevenK bug=643369 This should be in the security adapter
         # This should be allowed if the user is a driver for self.parent
@@ -1925,7 +1924,6 @@
                 name=name, displayname=displayname, title=title,
                 summary=summary, description=description,
                 version=version, parent_series=self, owner=user)
-            child.status = status
             IStore(self).add(child)
         else:
             if child.parent_series is not self:

=== modified file 'lib/lp/registry/stories/webservice/xx-derivedistroseries.txt'
--- lib/lp/registry/stories/webservice/xx-derivedistroseries.txt	2010-10-28 19:46:28 +0000
+++ lib/lp/registry/stories/webservice/xx-derivedistroseries.txt	2010-11-04 07:44:43 +0000
@@ -13,9 +13,9 @@
     >>> soyuz = factory.makeTeam(name='soyuz-team')
     >>> parent = factory.makeDistroSeries()
     >>> child = factory.makeDistroSeries(name='child1', parent_series=parent)
-    >>> second_child = factory.makeDistroSeries(name='child2',
-    ...     parent_series=parent)
     >>> other = factory.makeDistroSeries()
+    >>> distribution = factory.makeDistribution(name='deribuntu', owner=soyuz)
+    >>> version = "%s.0" % factory.getUniqueInteger()
     >>> logout()
     >>> from canonical.launchpad.testing.pages import webservice_for_person
     >>> from canonical.launchpad.webapp.interfaces import OAuthPermission
@@ -60,10 +60,13 @@
 
 If we call it with all of the arguments, it also works.
 
-    >>> child_name = second_child.name
+    >>> deribuntu = webservice.get('/deribuntu').jsonBody()
+    >>> text = 'The Second Child'
     >>> derived = soyuz_webservice.named_post(
     ...     series['self_link'], 'deriveDistroSeries', {},
-    ...     name=child_name, architectures=('i386',),
+    ...     name='child2', displayname=text, title=text, summary=text,
+    ...     description=text, version=version,
+    ...     distribution=deribuntu['self_link'], architectures=('i386',),
     ...     packagesets=('test1',), rebuild=False)
     >>> print derived
     HTTP/1.1 200 Ok