← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~rvb/launchpad/sync-bug-827608-credit-copy into lp:launchpad

 

Raphaël Victor Badin has proposed merging lp:~rvb/launchpad/sync-bug-827608-credit-copy into lp:launchpad with lp:~rvb/launchpad/sync-bug-827608-populate-ancestor as a prerequisite.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #827608 in Launchpad itself: "Sync requester isn't credited with upload"
  https://bugs.launchpad.net/launchpad/+bug/827608

For more details, see:
https://code.launchpad.net/~rvb/launchpad/sync-bug-827608-credit-copy/+merge/74769

This branch is another step towards fixing 827608.  The goal of this branch is to refactor _latestSeriesQuery (lib/lp/registry/model/person.py) so that it returns SourcePackagePublishingHistory objects instead of SourcePackageRelease objects.  We want that because we want to include (in another branch) in the returned SPPH objects the SPPHs which are the result of copying cross archive or cross distro, actions for which a user should be credit.

The only catch is that the order of the objects in lib/lp/registry/doc/person.txt has changed due to the fact that we order the result by spph.datecreated instead of spph.sourcepackagerelease.dateuploaded.

= Tests =

(lots of tests are affected by this change)
./bin/test -vvc -t person.txt
./bin/test -vvc test_person_view

= QA =

None.
-- 
https://code.launchpad.net/~rvb/launchpad/sync-bug-827608-credit-copy/+merge/74769
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~rvb/launchpad/sync-bug-827608-credit-copy into lp:launchpad.
=== modified file 'lib/lp/registry/browser/person.py'
--- lib/lp/registry/browser/person.py	2011-09-04 12:46:14 +0000
+++ lib/lp/registry/browser/person.py	2011-09-09 12:41:35 +0000
@@ -326,7 +326,7 @@
 from lp.soyuz.interfaces.archive import IArchiveSet
 from lp.soyuz.interfaces.archivesubscriber import IArchiveSubscriberSet
 from lp.soyuz.interfaces.binarypackagebuild import IBinaryPackageBuildSet
-from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease
+from lp.soyuz.interfaces.publishing import ISourcePackagePublishingHistory
 
 
 COMMASPACE = ', '
@@ -5156,17 +5156,18 @@
         return Link('+subscribedquestions', text, summary, icon='question')
 
 
-class SourcePackageReleaseWithStats:
-    """An ISourcePackageRelease, with extra stats added."""
+class SourcePackagePublishingHistoryWithStats:
+    """An ISourcePackagePublishinghistory, with extra stats added."""
 
-    implements(ISourcePackageRelease)
-    delegates(ISourcePackageRelease)
+    implements(ISourcePackagePublishingHistory)
+    delegates(ISourcePackagePublishingHistory)
     failed_builds = None
     needs_building = None
 
-    def __init__(self, sourcepackage_release, open_bugs, open_questions,
+    def __init__(self, spph, open_bugs, open_questions,
                  failed_builds, needs_building):
-        self.context = sourcepackage_release
+        self.context = spph
+        self.spr = spph.sourcepackagerelease
         self.open_bugs = open_bugs
         self.open_questions = open_questions
         self.failed_builds = failed_builds
@@ -5255,7 +5256,7 @@
 
         return header_message
 
-    def filterPPAPackageList(self, packages):
+    def filterPPAPackageList(self, spphs):
         """Remove packages that the user is not allowed to see.
 
         Given a list of PPA packages, some might be in a PPA that the
@@ -5269,14 +5270,15 @@
         # IPerson.getLatestUploadedPPAPackages() but formulating the SQL
         # query is virtually impossible!
         results = []
-        for package in packages:
+        for spph in spphs:
+            package = spph.sourcepackagerelease
             # Make a shallow copy to remove the Zope security.
             archives = set(package.published_archives)
             # Ensure the SPR.upload_archive is also considered.
             archives.add(package.upload_archive)
             for archive in archives:
                 if check_permission('launchpad.View', archive):
-                    results.append(package)
+                    results.append(spph)
                     break
 
         return results
@@ -5329,10 +5331,10 @@
         self.uploaded_packages_header_message = header_message
         return results
 
-    def _calculateBuildStats(self, package_releases):
+    def _calculateBuildStats(self, spphs):
         """Calculate failed builds and needs_build state.
 
-        For each of the package_releases, calculate the failed builds
+        For each of the spphs, calculate the failed builds
         and the needs_build state, and return a tuple of two dictionaries,
         one containing the failed builds and the other containing
         True or False according to the needs_build state, both keyed by
@@ -5341,14 +5343,15 @@
         # Calculate all the failed builds with one query.
         build_set = getUtility(IBinaryPackageBuildSet)
         package_release_ids = [
-            package_release.id for package_release in package_releases]
+            spph.sourcepackagerelease.id for spph in spphs]
         all_builds = build_set.getBuildsBySourcePackageRelease(
             package_release_ids)
         # Make a dictionary of lists of builds keyed by SourcePackageRelease
         # and a dictionary of "needs build" state keyed by the same.
         builds_by_package = {}
         needs_build_by_package = {}
-        for package in package_releases:
+        for spph in spphs:
+            package = spph.sourcepackagerelease
             builds_by_package[package] = []
             needs_build_by_package[package] = False
         for build in all_builds:
@@ -5363,11 +5366,11 @@
 
         return (builds_by_package, needs_build_by_package)
 
-    def _addStatsToPackages(self, package_releases):
+    def _addStatsToPackages(self, spphs):
         """Add stats to the given package releases, and return them."""
         distro_packages = [
-            package_release.distrosourcepackage
-            for package_release in package_releases]
+            spph.sourcepackagerelease.distrosourcepackage
+            for spph in spphs]
         package_bug_counts = getUtility(IBugTaskSet).getBugCountsForPackages(
             self.user, distro_packages)
         open_bugs = {}
@@ -5380,15 +5383,17 @@
             distro_packages)
 
         builds_by_package, needs_build_by_package = self._calculateBuildStats(
-            package_releases)
+            spphs)
 
         return [
-            SourcePackageReleaseWithStats(
-                package, open_bugs[package.distrosourcepackage],
-                package_question_counts[package.distrosourcepackage],
-                builds_by_package[package],
-                needs_build_by_package[package])
-            for package in package_releases]
+            SourcePackagePublishingHistoryWithStats(
+                spph,
+                open_bugs[spph.sourcepackagerelease.distrosourcepackage],
+                package_question_counts[
+                    spph.sourcepackagerelease.distrosourcepackage],
+                builds_by_package[spph.sourcepackagerelease],
+                needs_build_by_package[spph.sourcepackagerelease])
+            for spph in spphs]
 
     def setUpBatch(self, packages):
         """Set up the batch navigation for the page being viewed.

=== modified file 'lib/lp/registry/doc/person.txt'
--- lib/lp/registry/doc/person.txt	2011-08-23 13:07:09 +0000
+++ lib/lp/registry/doc/person.txt	2011-09-09 12:41:35 +0000
@@ -958,31 +958,34 @@
 question to any PPA.
 
     >>> mark = personset.getByName('mark')
-    >>> for sprelease in mark.getLatestMaintainedPackages():
+    >>> for spph in mark.getLatestMaintainedPackages():
+    ...     sprelease = spph.sourcepackagerelease
     ...     print (sprelease.name,
     ...            sprelease.upload_distroseries.fullseriesname,
     ...            sprelease.version)
+    (u'mozilla-firefox', u'Ubuntu Warty', u'0.9')
     (u'alsa-utils', u'Debian Sid', u'1.0.9a-4')
+    (u'alsa-utils', u'Ubuntu Warty', u'1.0.8-1ubuntu1')
     (u'pmount', u'Ubuntu Hoary', u'0.1-2')
+    (u'evolution', u'Ubuntu Hoary', u'1.0')
     (u'netapplet', u'Ubuntu Warty', u'0.99.6-1')
     (u'netapplet', u'Ubuntu Hoary', u'1.0-1')
-    (u'alsa-utils', u'Ubuntu Warty', u'1.0.8-1ubuntu1')
-    (u'mozilla-firefox', u'Ubuntu Warty', u'0.9')
-    (u'evolution', u'Ubuntu Hoary', u'1.0')
 
-    >>> for sprelease in mark.getLatestUploadedButNotMaintainedPackages():
+    >>> for spph in mark.getLatestUploadedButNotMaintainedPackages():
+    ...     sprelease = spph.sourcepackagerelease
     ...     print (sprelease.name,
     ...            sprelease.upload_distroseries.fullseriesname,
     ...            sprelease.version)
+    (u'cdrkit', u'Ubuntu Breezy-autotest', u'1.0')
     (u'foobar', u'Ubuntu Breezy-autotest', u'1.0')
-    (u'cdrkit', u'Ubuntu Breezy-autotest', u'1.0')
-    (u'libstdc++', u'Ubuntu Hoary', u'b8p')
-    (u'cnews', u'Ubuntu Hoary', u'cr.g7-37')
     (u'linux-source-2.6.15', u'Ubuntu Hoary', u'2.6.15.3')
     (u'alsa-utils', u'Ubuntu Hoary', u'1.0.9a-4ubuntu1')
+    (u'cnews', u'Ubuntu Hoary', u'cr.g7-37')
+    (u'libstdc++', u'Ubuntu Hoary', u'b8p')
 
-    >>> mark_spreleases = mark.getLatestUploadedPPAPackages()
-    >>> for sprelease in mark_spreleases:
+    >>> mark_spphs = mark.getLatestUploadedPPAPackages()
+    >>> for spph in mark_spphs:
+    ...     sprelease = spph.sourcepackagerelease
     ...     print (sprelease.name,
     ...            sprelease.version,
     ...            sprelease.creator.name,
@@ -995,13 +998,14 @@
 issue mentioned in bug 157303, where source with same creator and
 maintainer got omitted from the results:
 
-    >>> any_spr = mark_spreleases[0]
-    >>> naked_spr = removeSecurityProxy(any_spr)
-    >>> naked_spr.maintainer = mark
+    >>> any_spph = mark_spphs[0]
+    >>> naked_spph = removeSecurityProxy(any_spph)
+    >>> naked_spph.sourcepackagerelease.maintainer = mark
     >>> flush_database_updates()
 
-    >>> mark_spreleases = mark.getLatestUploadedPPAPackages()
-    >>> for sprelease in mark_spreleases:
+    >>> mark_spphs = mark.getLatestUploadedPPAPackages()
+    >>> for spph in mark_spphs:
+    ...     sprelease = spph.sourcepackagerelease
     ...     print (sprelease.name,
     ...            sprelease.version,
     ...            sprelease.creator.name,

=== modified file 'lib/lp/registry/interfaces/person.py'
--- lib/lp/registry/interfaces/person.py	2011-08-28 08:36:14 +0000
+++ lib/lp/registry/interfaces/person.py	2011-09-09 12:41:35 +0000
@@ -1234,24 +1234,26 @@
         """
 
     def getLatestMaintainedPackages():
-        """Return `SourcePackageRelease`s maintained by this person.
+        """Return `SourcePackagePublishingHistory`s related to SPRs maintained
+        by this person.
 
-        This method will only include the latest source package release
+        This method will only include the latest source package publishings
         for each source package name, distribution series combination.
         """
 
     def getLatestUploadedButNotMaintainedPackages():
-        """Return `SourcePackageRelease`s created by this person but
-        not maintained by him.
+        """Return `SourcePackagePublishingHistory`s created by this person
+        but not maintained by him.
 
-        This method will only include the latest source package release
+        This method will only include the latest source package publishings
         for each source package name, distribution series combination.
         """
 
     def getLatestUploadedPPAPackages():
-        """Return `SourcePackageRelease`s uploaded by this person to any PPA.
+        """Return `SourcePackagePublishingHistory`s related to SPRs uploaded
+        by this person to any PPA.
 
-        This method will only include the latest source package release
+        This method will only include the latest source package publishings
         for each source package name, distribution series combination.
         """
 

=== modified file 'lib/lp/registry/model/person.py'
--- lib/lp/registry/model/person.py	2011-08-26 20:00:37 +0000
+++ lib/lp/registry/model/person.py	2011-09-09 12:41:35 +0000
@@ -33,7 +33,10 @@
     datetime,
     timedelta,
     )
-from operator import attrgetter
+from operator import (
+    attrgetter,
+    itemgetter,
+    )
 import random
 import re
 import subprocess
@@ -297,7 +300,7 @@
 from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet
 from lp.soyuz.interfaces.archivesubscriber import IArchiveSubscriberSet
 from lp.soyuz.model.archive import Archive
-from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease
+from lp.soyuz.model.publishing import SourcePackagePublishingHistory
 from lp.translations.model.hastranslationimports import (
     HasTranslationImportsMixin,
     )
@@ -2598,16 +2601,17 @@
             uploader_only=True, ppa_only=True)
 
     def _latestSeriesQuery(self, uploader_only=False, ppa_only=False):
-        """Return the sourcepackagereleases (SPRs) related to this person.
+        """Return the sourcepackagepublishinghistory (SPPHs) related to this
+        person.
 
-        :param uploader_only: controls if we are interested in SPRs where
-            the person in question is only the uploader (creator) and not the
-            maintainer (debian-syncs) if the `ppa_only` parameter is also
-            False, or, if the flag is False, it returns all SPR maintained
-            by this person.
+        :param uploader_only: controls if we are interested in SPPHs related
+            to SPRs where the person in question is only the uploader
+            (creator) and not the maintainer (debian-syncs) if the `ppa_only`
+            parameter is also False, or, if the flag is False, it returns
+            SPPHs related to SPRs maintained by this person.
 
         :param ppa_only: controls if we are interested only in source
-            package releases targeted to any PPAs or, if False, sources
+            package publishings targeted to any PPAs or, if False, sources
             targeted to primary archives.
 
         Active 'ppa_only' flag is usually associated with active
@@ -2639,11 +2643,10 @@
 
         query_clauses = " AND ".join(clauses)
         query = """
-            SourcePackageRelease.id IN (
                 SELECT DISTINCT ON (upload_distroseries,
                                     sourcepackagerelease.sourcepackagename,
                                     upload_archive)
-                    sourcepackagerelease.id
+                    spph.id
                 FROM sourcepackagerelease, archive,
                     sourcepackagepublishinghistory as spph
                 WHERE
@@ -2652,15 +2655,24 @@
                     %(more_query_clauses)s
                 ORDER BY upload_distroseries,
                     sourcepackagerelease.sourcepackagename,
-                    upload_archive, dateuploaded DESC
-              )
+                    upload_archive,
+                    dateuploaded DESC, spph.datecreated DESC
               """ % dict(more_query_clauses=query_clauses)
 
-        rset = SourcePackageRelease.select(
-            query,
-            orderBy=['-SourcePackageRelease.dateuploaded',
-                     'SourcePackageRelease.id'],
-            prejoins=['sourcepackagename', 'maintainer', 'upload_archive'])
+        cur = cursor()
+        cur.execute(query)
+        spph_ids = map(itemgetter(0), cur.fetchall())
+
+        rset = SourcePackagePublishingHistory.select(
+            SourcePackagePublishingHistory.id.is_in(spph_ids),
+            orderBy=[
+                '-datecreated',
+                ],
+            prejoins=[
+                'sourcepackagerelease.sourcepackagename',
+                'sourcepackagerelease.maintainer',
+                'sourcepackagerelease.upload_archive',
+                ])
 
         return rset
 

=== modified file 'lib/lp/registry/templates/person-macros.pt'
--- lib/lp/registry/templates/person-macros.pt	2011-07-14 05:12:43 +0000
+++ lib/lp/registry/templates/person-macros.pt	2011-09-09 12:41:35 +0000
@@ -120,15 +120,15 @@
   </div>
 </metal:macro>
 
-<metal:macro define-macro="sourcepackagerelease-rows">
+<metal:macro define-macro="spph-rows">
 
   <tal:comment replace="nothing">
     This macro expects the following variables defined:
-    :sourcepackagereleases: A list of SourcePackageRelease objects
+    :spphs: A list of SourcePackagePublishingHistory objects
   </tal:comment>
 
-  <tr tal:repeat="sourcepackagerelease sourcepackagereleases">
-  <tal:define define="spr sourcepackagerelease;
+  <tr tal:repeat="spph spphs">
+  <tal:define define="spr spph/sourcepackagerelease;
                      distroseries spr/upload_distroseries">
     <td>
       <a tal:attributes="href string:${distroseries/distribution/fmt:url}/+source/${spr/name}"
@@ -154,27 +154,27 @@
       2005-10-24
     </td>
     <td>
-      <tal:needs_building condition="spr/needs_building">
+      <tal:needs_building condition="spph/needs_building">
           Not yet built
       </tal:needs_building>
-      <tal:built condition="not: spr/needs_building">
-          <tal:failed repeat="build spr/failed_builds">
+      <tal:built condition="not: spph/needs_building">
+          <tal:failed repeat="build spph/failed_builds">
              <a tal:attributes="href build/fmt:url"
                 tal:content="build/distro_arch_series/architecturetag" />
           </tal:failed>
-          <tal:not_failed condition="not: spr/failed_builds">
+          <tal:not_failed condition="not: spph/failed_builds">
              None
           </tal:not_failed>
       </tal:built>
     </td>
     <td style="text-align: right">
       <a tal:attributes="href string:${spr/distrosourcepackage/fmt:url}/+bugs"
-         tal:content="spr/open_bugs">
+         tal:content="spph/open_bugs">
       </a>
     </td>
     <td style="text-align: right">
       <a tal:attributes="href string:${spr/distrosourcepackage/fmt:url}/+questions"
-         tal:content="spr/open_questions">
+         tal:content="spph/open_questions">
       </a>
     </td>
   </tal:define>

=== modified file 'lib/lp/registry/templates/person-related-software.pt'
--- lib/lp/registry/templates/person-related-software.pt	2010-09-29 20:59:15 +0000
+++ lib/lp/registry/templates/person-related-software.pt	2011-09-09 12:41:35 +0000
@@ -21,8 +21,8 @@
   <div id="packages">
 
   <tal:maintained-packages
-    define="sourcepackagereleases view/latest_maintained_packages_with_stats"
-    condition="sourcepackagereleases">
+    define="spphs view/latest_maintained_packages_with_stats"
+    condition="spphs">
 
   <div class="top-portlet">
   <h2>Maintained packages</h2>
@@ -41,15 +41,15 @@
       </tr>
     </thead>
     <tbody>
-    <div metal:use-macro="context/@@+person-macros/sourcepackagerelease-rows" />
+    <div metal:use-macro="context/@@+person-macros/spph-rows" />
     </tbody>
   </table>
   </div>
   </tal:maintained-packages>
 
   <tal:uploaded-packages
-    define="sourcepackagereleases view/latest_uploaded_but_not_maintained_packages_with_stats"
-    condition="sourcepackagereleases">
+    define="spphs view/latest_uploaded_but_not_maintained_packages_with_stats"
+    condition="spphs">
 
   <div class="top-portlet">
   <h2>Uploaded packages</h2>
@@ -68,14 +68,14 @@
       </tr>
     </thead>
 
-    <div metal:use-macro="context/@@+person-macros/sourcepackagerelease-rows" />
+    <div metal:use-macro="context/@@+person-macros/spph-rows" />
   </table>
   </div>
   </tal:uploaded-packages>
 
   <tal:ppa-packages
-    define="sourcepackagereleases view/latest_uploaded_ppa_packages_with_stats"
-    condition="sourcepackagereleases">
+    define="spphs view/latest_uploaded_ppa_packages_with_stats"
+    condition="spphs">
 
   <div class="top-portlet">
   <h2>PPA packages</h2>
@@ -94,7 +94,7 @@
       </tr>
     </thead>
 
-    <div metal:use-macro="template/macros/sourcepackagerelease-ppa-rows" />
+    <div metal:use-macro="template/macros/spph-ppa-rows" />
   </table>
   </div>
   </tal:ppa-packages>
@@ -153,14 +153,14 @@
 </div>
 
 <metal:macros fill-slot="bogus">
-<metal:macro define-macro="sourcepackagerelease-ppa-rows">
+<metal:macro define-macro="spph-ppa-rows">
   <tal:comment replace="nothing">
     This macro expects the following variables defined:
-    :sourcepackagereleases: A list of SourcePackageRelease objects
+    :spphs: A list of SourcePackagePublishingHistory objects
   </tal:comment>
-  <tr tal:repeat="sourcepackagerelease sourcepackagereleases"
+  <tr tal:repeat="spph spphs"
       class="ppa_row">
-  <tal:block define="spr sourcepackagerelease;
+  <tal:block define="spr spph/sourcepackagerelease;
                      distroseries spr/upload_distroseries;
                      ppa spr/upload_archive">
     <td tal:content="spr/sourcepackagename/name">
@@ -180,15 +180,15 @@
       2005-10-24
     </td>
     <td>
-      <tal:block condition="spr/needs_building">
+      <tal:block condition="spph/needs_building">
           Not yet built
       </tal:block>
-      <tal:block condition="not: spr/needs_building">
-          <tal:block repeat="build spr/failed_builds">
+      <tal:block condition="not: spph/needs_building">
+          <tal:block repeat="build spph/failed_builds">
              <a tal:attributes="href build/fmt:url"
                 tal:content="build/distro_arch_series/architecturetag" />
           </tal:block>
-          <tal:block condition="not: spr/failed_builds">
+          <tal:block condition="not: spph/failed_builds">
              None
           </tal:block>
       </tal:block>

=== modified file 'lib/lp/soyuz/templates/person-maintained-packages.pt'
--- lib/lp/soyuz/templates/person-maintained-packages.pt	2009-09-08 14:37:17 +0000
+++ lib/lp/soyuz/templates/person-maintained-packages.pt	2011-09-09 12:41:35 +0000
@@ -25,9 +25,9 @@
        replace="structure view/batchnav/@@+navigation-links-upper" />
 
   <tal:maintained-packages
-    define="sourcepackagereleases view/batch">
+    define="spphs view/batch">
 
-  <table class="listing" condition="sourcepackagereleases">
+  <table class="listing" condition="spphs">
     <thead>
       <tr>
         <th>Name</th>
@@ -40,14 +40,14 @@
       </tr>
     </thead>
     <tbody>
-    <div metal:use-macro="context/@@+person-macros/sourcepackagerelease-rows"/>
+    <div metal:use-macro="context/@@+person-macros/spph-rows"/>
     </tbody>
   </table>
 
   <tal:navigation_bottom
        replace="structure view/batchnav/@@+navigation-links-lower" />
 
-  <tal:no_packages condition="not: sourcepackagereleases">
+  <tal:no_packages condition="not: spphs">
     <tal:name replace="context/fmt:displayname"/>
     does not maintain any packages.
   </tal:no_packages>

=== modified file 'lib/lp/soyuz/templates/person-ppa-packages.pt'
--- lib/lp/soyuz/templates/person-ppa-packages.pt	2010-06-10 08:29:19 +0000
+++ lib/lp/soyuz/templates/person-ppa-packages.pt	2011-09-09 12:41:35 +0000
@@ -25,9 +25,9 @@
        replace="structure view/batchnav/@@+navigation-links-upper" />
 
   <tal:ppa-packages
-    define="sourcepackagereleases view/batch">
+    define="spphs view/batch">
 
-  <table class="listing" condition="sourcepackagereleases">
+  <table class="listing" condition="spphs">
     <thead>
       <tr>
         <th>Name</th>
@@ -38,14 +38,14 @@
       </tr>
     </thead>
     <tbody>
-      <div metal:use-macro="template/macros/sourcepackagerelease-ppa-rows" />
+      <div metal:use-macro="template/macros/spph-ppa-rows" />
     </tbody>
   </table>
 
   <tal:navigation_bottom
        replace="structure view/batchnav/@@+navigation-links-lower" />
 
-  <tal:no_packages condition="not: sourcepackagereleases">
+  <tal:no_packages condition="not: spphs">
     <tal:name replace="context/fmt:displayname"/> has no related PPA packages.
   </tal:no_packages>
 
@@ -55,14 +55,14 @@
 </div>
 
 <metal:macros fill-slot="bogus">
-<metal:macro define-macro="sourcepackagerelease-ppa-rows">
+<metal:macro define-macro="spph-ppa-rows">
   <tal:comment replace="nothing">
     This macro expects the following variables defined:
-    :sourcepackagereleases: A list of SourcePackageRelease objects
+    :spphs: A list of SourcePackagePublishingHistory objects
   </tal:comment>
-  <tr tal:repeat="sourcepackagerelease sourcepackagereleases"
+  <tr tal:repeat="spph spphs"
       class="ppa_row">
-  <tal:block define="spr sourcepackagerelease;
+  <tal:block define="spr spph/sourcepackagerelease;
                      distroseries spr/upload_distroseries;
                      ppa spr/upload_archive">
     <td tal:content="spr/sourcepackagename/name">
@@ -82,15 +82,15 @@
       2005-10-24
     </td>
     <td>
-      <tal:block condition="spr/needs_building">
+      <tal:block condition="spph/needs_building">
           Not yet built
       </tal:block>
-      <tal:block condition="not: spr/needs_building">
-          <tal:block repeat="build spr/failed_builds">
+      <tal:block condition="not: spph/needs_building">
+          <tal:block repeat="build spph/failed_builds">
              <a tal:attributes="href build/fmt:url"
                 tal:content="build/distro_arch_series/architecturetag" />
           </tal:block>
-          <tal:block condition="not: spr/failed_builds">
+          <tal:block condition="not: spph/failed_builds">
              None
           </tal:block>
       </tal:block>

=== modified file 'lib/lp/soyuz/templates/person-uploaded-packages.pt'
--- lib/lp/soyuz/templates/person-uploaded-packages.pt	2009-09-08 14:37:17 +0000
+++ lib/lp/soyuz/templates/person-uploaded-packages.pt	2011-09-09 12:41:35 +0000
@@ -25,9 +25,9 @@
        replace="structure view/batchnav/@@+navigation-links-upper" />
 
   <tal:uploaded-packages
-    define="sourcepackagereleases view/batch">
+    define="spphs view/batch">
 
-  <table class="listing" condition="sourcepackagereleases">
+  <table class="listing" condition="spphs">
     <thead>
       <tr>
         <th>Name</th>
@@ -40,14 +40,14 @@
       </tr>
     </thead>
     <tbody>
-      <div metal:use-macro="context/@@+person-macros/sourcepackagerelease-rows" />
+      <div metal:use-macro="context/@@+person-macros/spph-rows" />
     </tbody>
   </table>
 
   <tal:navigation_bottom
        replace="structure view/batchnav/@@+navigation-links-lower" />
 
-  <tal:no_packages condition="not: sourcepackagereleases">
+  <tal:no_packages condition="not: spphs">
     <tal:name replace="context/fmt:displayname"/> has not uploaded any packages.
   </tal:no_packages>