← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~rockstar/launchpad/recipe-no-signer into lp:launchpad/devel

 

Paul Hummer has proposed merging lp:~rockstar/launchpad/recipe-no-signer into lp:launchpad/devel.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  #581920 Shouldn't say "no signer" in uploader field
  https://bugs.launchpad.net/bugs/581920


This branch just creates a SourcePackageRelease.uploader that not only knows about how to deal with source package uploads, but source package recipes.  I created new unit tests for each uploader case that can happen as well.  I also cleaned up some lint as a driveby, but it's still complaining about commas not following whitespace.
-- 
https://code.launchpad.net/~rockstar/launchpad/recipe-no-signer/+merge/31339
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~rockstar/launchpad/recipe-no-signer into lp:launchpad/devel.
=== modified file 'lib/lp/soyuz/interfaces/sourcepackagerelease.py'
--- lib/lp/soyuz/interfaces/sourcepackagerelease.py	2010-03-20 23:16:42 +0000
+++ lib/lp/soyuz/interfaces/sourcepackagerelease.py	2010-07-29 22:57:50 +0000
@@ -137,6 +137,8 @@
         "The `PackageUpload` record corresponding to original upload of "
         "this source package release. It's 'None' if it is a source "
         "imported by Gina.")
+    uploader = Attribute(
+        "The user who uploaded the package.")
 
     # Really ISourcePackageRecipeBuild -- see _schema_circular_imports.
     source_package_recipe_build = Reference(
@@ -183,8 +185,8 @@
 
         :tarball_alias: is a Librarian alias that references to a tarball with
             translations.
-        :is_published: indicates if the imported files are already published by
-            upstream.
+        :is_published: indicates if the imported files are already published
+            by upstream.
         :importer: is the person that did the import.
 
         raise DownloadFailed if we are not able to fetch the file from

=== modified file 'lib/lp/soyuz/model/sourcepackagerelease.py'
--- lib/lp/soyuz/model/sourcepackagerelease.py	2010-07-23 11:18:54 +0000
+++ lib/lp/soyuz/model/sourcepackagerelease.py	2010-07-29 22:57:50 +0000
@@ -147,7 +147,6 @@
     package_diffs = SQLMultipleJoin(
         'PackageDiff', joinColumn='to_source', orderBy="-date_requested")
 
-
     @property
     def builds(self):
         """See `ISourcePackageRelease`."""
@@ -521,6 +520,15 @@
         return DecoratedResultSet(results, operator.itemgetter(0)).one()
 
     @property
+    def uploader(self):
+        """See `ISourcePackageRelease`"""
+        if self.source_package_recipe_build is not None:
+            return self.source_package_recipe_build.requester
+        if self.dscsigningkey is not None:
+            return self.dscsigningkey.owner
+        return None
+
+    @property
     def change_summary(self):
         """See ISourcePackageRelease"""
         # this regex is copied from apt-listchanges.py courtesy of MDZ

=== modified file 'lib/lp/soyuz/templates/archive-index.pt'
--- lib/lp/soyuz/templates/archive-index.pt	2010-03-24 16:54:56 +0000
+++ lib/lp/soyuz/templates/archive-index.pt	2010-07-29 22:57:50 +0000
@@ -280,7 +280,7 @@
                 </tal:newer_version>
               </td>
               <td tal:define="spr publishing/sourcepackagerelease;
-                              signer spr/dscsigningkey/owner/fmt:link|string:no signer">
+                              signer spr/uploader/fmt:link|string:no signer">
                   <span tal:replace="structure signer">Joe Bloggs</span>
                   <tal:date_published
                     condition="publishing/datepublished">

=== added file 'lib/lp/soyuz/tests/test_sourcepackagerelease.py'
--- lib/lp/soyuz/tests/test_sourcepackagerelease.py	1970-01-01 00:00:00 +0000
+++ lib/lp/soyuz/tests/test_sourcepackagerelease.py	2010-07-29 22:57:50 +0000
@@ -0,0 +1,38 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""Test SourcePackageRelease."""
+
+__metaclass__ = type
+
+from canonical.testing import LaunchpadFunctionalLayer
+
+from lp.testing import TestCaseWithFactory
+
+
+class TestSourcePackageRelease(TestCaseWithFactory):
+
+    layer = LaunchpadFunctionalLayer
+
+    def test_uploader_no_uploader(self):
+        spr = self.factory.makeSourcePackageRelease()
+        self.assertEqual(
+            None,
+            spr.uploader)
+
+    def test_uploader_dsc_package(self):
+        owner = self.factory.makePerson()
+        key = self.factory.makeGPGKey(owner)
+        spr = self.factory.makeSourcePackageRelease(dscsigningkey=key)
+        self.assertEqual(
+            spr.dscsigningkey.owner,
+            spr.uploader)
+
+    def test_uploader_recipe(self):
+        recipe_build = self.factory.makeSourcePackageRecipeBuild()
+        recipe = recipe_build.recipe
+        spr = self.factory.makeSourcePackageRelease(
+            source_package_recipe_build=recipe_build)
+        self.assertEqual(
+            recipe_build.requester,
+            spr.uploader)

=== modified file 'lib/lp/testing/factory.py'
--- lib/lp/testing/factory.py	2010-07-29 07:28:56 +0000
+++ lib/lp/testing/factory.py	2010-07-29 22:57:50 +0000
@@ -1051,7 +1051,8 @@
             CodeReviewNotificationLevel.NOEMAIL, subscribed_by)
 
     def makeDiff(self, diff_text=DIFF):
-        return ProxyFactory(Diff.fromFile(StringIO(diff_text), len(diff_text)))
+        return ProxyFactory(
+            Diff.fromFile(StringIO(diff_text), len(diff_text)))
 
     def makePreviewDiff(self, conflicts=u''):
         diff = self.makeDiff()
@@ -2266,7 +2267,8 @@
                                  dsc_standards_version='3.6.2',
                                  dsc_format='1.0', dsc_binaries='foo-bin',
                                  date_uploaded=UTC_NOW,
-                                 source_package_recipe_build=None):
+                                 source_package_recipe_build=None,
+                                 dscsigningkey=None):
         """Make a `SourcePackageRelease`."""
         if distroseries is None:
             if source_package_recipe_build is not None:
@@ -2325,7 +2327,7 @@
             changelog_entry=None,
             dsc=None,
             copyright=self.getUniqueString(),
-            dscsigningkey=None,
+            dscsigningkey=dscsigningkey,
             dsc_maintainer_rfc822=maintainer_email,
             dsc_standards_version=dsc_standards_version,
             dsc_format=dsc_format,
@@ -2766,8 +2768,10 @@
 unwrapped_types = (
     DSCFile, InstanceType, MergeDirective2, Message, datetime, int, str, unicode)
 
+
 def is_security_proxied_or_harmless(obj):
-    """Check that the given object is security wrapped or a harmless object."""
+    """Check that the given object is security wrapped or a harmless object.
+    """
     if obj is None:
         return True
     if builtin_isinstance(obj, Proxy):
@@ -2793,6 +2797,7 @@
 
     Whereever you see such a warning: fix it!
     """
+
     def __init__(self):
         self._factory = BareLaunchpadObjectFactory()