← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~wgrant/launchpad/archive-references-everywhere into lp:launchpad

 

William Grant has proposed merging lp:~wgrant/launchpad/archive-references-everywhere into lp:launchpad.

Commit message:
Port most of the world to use Archive.reference when talking about an archive.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~wgrant/launchpad/archive-references-everywhere/+merge/226061

Port half of the world to use Archive.reference when talking about an archive. This is all the simple cases, and the rest will be ported in separate branches.
-- 
https://code.launchpad.net/~wgrant/launchpad/archive-references-everywhere/+merge/226061
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~wgrant/launchpad/archive-references-everywhere into lp:launchpad.
=== modified file 'lib/lp/app/browser/tales.py'
--- lib/lp/app/browser/tales.py	2014-05-14 11:05:22 +0000
+++ lib/lp/app/browser/tales.py	2014-07-09 03:42:17 +0000
@@ -1743,7 +1743,7 @@
 
     def _composeArchiveReference(self, archive):
         if archive.is_ppa:
-            return " [%s/%s]" % (archive.owner.name, archive.name)
+            return " [%s]" % archive.reference
         else:
             return ""
 

=== modified file 'lib/lp/app/browser/vocabulary.py'
--- lib/lp/app/browser/vocabulary.py	2013-04-10 07:45:16 +0000
+++ lib/lp/app/browser/vocabulary.py	2014-07-09 03:42:17 +0000
@@ -390,8 +390,7 @@
             super(ArchivePickerEntrySourceAdapter, self)
                     .getPickerEntries(term_values, context_object, **kwarg))
         for archive, picker_entry in izip(term_values, entries):
-            picker_entry.description = '%s/%s' % (
-                                       archive.owner.name, archive.name)
+            picker_entry.description = archive.reference
         return entries
 
 

=== modified file 'lib/lp/app/tests/test_tales.py'
--- lib/lp/app/tests/test_tales.py	2014-05-19 11:33:05 +0000
+++ lib/lp/app/tests/test_tales.py	2014-07-09 03:42:17 +0000
@@ -506,4 +506,5 @@
         build, p3a, team_owner = self._make_public_build_for_private_team()
         login_person(team_owner)
         self.assertIn(
-            "[%s/%s]" % (p3a.owner.name, p3a.name), format_link(build))
+            "[~%s/%s/%s]" % (p3a.owner.name, p3a.distribution.name, p3a.name),
+            format_link(build))

=== modified file 'lib/lp/archivepublisher/publishing.py'
--- lib/lp/archivepublisher/publishing.py	2014-07-08 23:22:48 +0000
+++ lib/lp/archivepublisher/publishing.py	2014-07-09 03:42:17 +0000
@@ -1038,6 +1038,4 @@
             new_name = '%s%d' % (base_name, count)
             count += 1
         self.archive.name = new_name
-        self.log.info(
-            "Renamed deleted archive '%s/%s'.", self.archive.owner.name,
-            self.archive.name)
+        self.log.info("Renamed deleted archive '%s'.", self.archive.reference)

=== modified file 'lib/lp/code/browser/tests/test_sourcepackagerecipe.py'
--- lib/lp/code/browser/tests/test_sourcepackagerecipe.py	2014-07-03 04:51:30 +0000
+++ lib/lp/code/browser/tests/test_sourcepackagerecipe.py	2014-07-09 03:42:17 +0000
@@ -1446,7 +1446,7 @@
             Request builds for cake_recipe
             Archive:
             (nothing selected)
-            Secret PPA [~chef/ppa]
+            Secret PPA [~chef/ubuntu/ppa]
             Distribution series:
             Secret Squirrel
             Hoary

=== modified file 'lib/lp/code/browser/tests/test_tales.py'
--- lib/lp/code/browser/tests/test_tales.py	2012-01-01 02:58:52 +0000
+++ lib/lp/code/browser/tests/test_tales.py	2014-07-09 03:42:17 +0000
@@ -191,7 +191,7 @@
         self.assertThat(
             adapter.link(None),
             Equals(
-                '<a href="%s">%s recipe build</a> [eric/ppa]'
+                '<a href="%s">%s recipe build</a> [~eric/ubuntu/ppa]'
                 % (canonical_url(build, path_only_if_possible=True),
                    build.recipe.base_branch.unique_name)))
 
@@ -206,7 +206,7 @@
         self.assertThat(
             adapter.link(None),
             Equals(
-                '<a href="%s">build for deleted recipe</a> [eric/ppa]'
+                '<a href="%s">build for deleted recipe</a> [~eric/ubuntu/ppa]'
                 % (canonical_url(build, path_only_if_possible=True), )))
 
     def test_link_no_permission(self):

=== modified file 'lib/lp/code/emailtemplates/build-request.txt'
--- lib/lp/code/emailtemplates/build-request.txt	2011-12-18 23:10:57 +0000
+++ lib/lp/code/emailtemplates/build-request.txt	2014-07-09 03:42:17 +0000
@@ -1,6 +1,6 @@
  * State: %(status)s
  * Recipe: %(recipe_owner)s/%(recipe)s
- * Archive: %(archive_owner)s/%(archive)s
+ * Archive: %(archive)s
  * Distroseries: %(distroseries)s
  * Duration: %(duration)s
  * Build Log: %(log_url)s

=== modified file 'lib/lp/code/interfaces/sourcepackagerecipe.py'
--- lib/lp/code/interfaces/sourcepackagerecipe.py	2013-01-07 02:40:55 +0000
+++ lib/lp/code/interfaces/sourcepackagerecipe.py	2014-07-09 03:42:17 +0000
@@ -175,8 +175,7 @@
         Return a list of dict(
         distroseries:distroseries.displayname
         archive:archive.token)
-        The archive token is the same as that defined by the archive vocab:
-        archive.owner.name/archive.name
+        The archive reference is as defined by the archive vocab.
         This information is used to construct the request builds popup form.
         """
 

=== modified file 'lib/lp/code/mail/sourcepackagerecipebuild.py'
--- lib/lp/code/mail/sourcepackagerecipebuild.py	2014-02-25 11:34:31 +0000
+++ lib/lp/code/mail/sourcepackagerecipebuild.py	2014-07-09 03:42:17 +0000
@@ -62,8 +62,7 @@
             'distroseries': self.build.distroseries.name,
             'recipe': self.build.recipe.name,
             'recipe_owner': self.build.recipe.owner.name,
-            'archive': self.build.archive.name,
-            'archive_owner': self.build.archive.owner.name,
+            'archive': self.build.archive.reference,
             'log_url': '',
             'component': self.build.current_component.name,
             'duration': '',

=== modified file 'lib/lp/code/model/sourcepackagerecipe.py'
--- lib/lp/code/model/sourcepackagerecipe.py	2013-06-20 05:50:00 +0000
+++ lib/lp/code/model/sourcepackagerecipe.py	2014-07-09 03:42:17 +0000
@@ -369,8 +369,7 @@
         for build in builds:
             result.append(
                 {"distroseries": build.distroseries.displayname,
-                 "archive": '%s/%s' %
-                           (build.archive.owner.name, build.archive.name)})
+                 "archive": build.archive.reference})
         return result
 
     @property

=== modified file 'lib/lp/code/model/tests/test_sourcepackagerecipe.py'
--- lib/lp/code/model/tests/test_sourcepackagerecipe.py	2014-07-01 02:01:54 +0000
+++ lib/lp/code/model/tests/test_sourcepackagerecipe.py	2014-07-09 03:42:17 +0000
@@ -678,8 +678,7 @@
             recipe.requestBuild(archive, person, distroseries)
             build_info.insert(0, {
                 "distroseries": distroseries.displayname,
-                "archive": '%s/%s' %
-                           (archive.owner.name, archive.name)})
+                "archive": archive.reference})
         self.assertEqual(build_info, list(recipe.getPendingBuildInfo()))
 
     def test_getBuilds_cancelled(self):
@@ -1193,8 +1192,7 @@
                 pocket=PackagePublishingPocket.RELEASE.title)
             build_info.insert(0, {
                 "distroseries": distroseries.displayname,
-                "archive": '%s/%s' %
-                           (archive.owner.name, archive.name)})
+                "archive": archive.reference})
         self.assertEqual(build_info, list(recipe.getPendingBuildInfo()))
 
     def test_query_count_of_webservice_recipe(self):

=== modified file 'lib/lp/soyuz/adapters/packagelocation.py'
--- lib/lp/soyuz/adapters/packagelocation.py	2014-07-04 11:21:54 +0000
+++ lib/lp/soyuz/adapters/packagelocation.py	2014-07-09 03:42:17 +0000
@@ -52,17 +52,8 @@
         return False
 
     def __str__(self):
-        # Use ASCII-only for copy archive and PPA titles, owner names can
-        # contain unicode.
-        if self.archive.is_ppa:
-            title = self.archive.owner.name
-        elif self.archive.is_copy:
-            title = "%s/%s" % (self.archive.owner.name, self.archive.name)
-        else:
-            title = self.archive.displayname
-
         result = '%s: %s-%s' % (
-            title, self.distroseries.name, self.pocket.name)
+            self.archive.reference, self.distroseries.name, self.pocket.name)
 
         if self.component is not None:
             result += ' (%s)' % self.component.name

=== modified file 'lib/lp/soyuz/adapters/tests/test_packagelocation.py'
--- lib/lp/soyuz/adapters/tests/test_packagelocation.py	2012-01-01 02:58:52 +0000
+++ lib/lp/soyuz/adapters/tests/test_packagelocation.py	2014-07-09 03:42:17 +0000
@@ -217,44 +217,39 @@
     def testRepresentation(self):
         """Check if PackageLocation is represented correctly."""
         location_ubuntu_hoary = self.getPackageLocation()
-        self.assertEqual(str(location_ubuntu_hoary),
-                         'Primary Archive for Ubuntu Linux: hoary-RELEASE')
+        self.assertEqual(
+            str(location_ubuntu_hoary), 'ubuntu: hoary-RELEASE')
 
         universe = getUtility(IComponentSet)['universe']
         location_ubuntu_hoary.component = universe
 
         self.assertEqual(
-            str(location_ubuntu_hoary),
-            'Primary Archive for Ubuntu Linux: hoary-RELEASE (universe)')
+            str(location_ubuntu_hoary), 'ubuntu: hoary-RELEASE (universe)')
 
         location_ubuntu_warty_security = self.getPackageLocation(
             suite='warty-security')
-        self.assertEqual(str(location_ubuntu_warty_security),
-                         'Primary Archive for Ubuntu Linux: warty-SECURITY')
+        self.assertEqual(
+            str(location_ubuntu_warty_security), 'ubuntu: warty-SECURITY')
 
         location_ubuntutest = self.getPackageLocation(
             distribution_name='ubuntutest')
         self.assertEqual(
-            str(location_ubuntutest),
-            'Primary Archive for Ubuntu Test: hoary-test-RELEASE')
+            str(location_ubuntutest), 'ubuntutest: hoary-test-RELEASE')
 
         location_cprov_ppa = self.getPackageLocation(
             distribution_name='ubuntu', purpose=ArchivePurpose.PPA,
             person_name='cprov', archive_name="ppa")
         self.assertEqual(
-            str(location_cprov_ppa),
-            'cprov: hoary-RELEASE')
+            str(location_cprov_ppa), '~cprov/ubuntu/ppa: hoary-RELEASE')
 
         location_ubuntu_partner = self.getPackageLocation(
             distribution_name='ubuntu', purpose=ArchivePurpose.PARTNER)
         self.assertEqual(
-            str(location_ubuntu_partner),
-            'Partner Archive for Ubuntu Linux: hoary-RELEASE')
+            str(location_ubuntu_partner), 'ubuntu/partner: hoary-RELEASE')
 
         self.factory.makePackageset(name=u"foo-packageset")
         location_ubuntu_packageset = self.getPackageLocation(
             packageset_names=[u"foo-packageset"])
         self.assertEqual(
             str(location_ubuntu_packageset),
-            'Primary Archive for Ubuntu Linux: '
-            'hoary-RELEASE [foo-packageset]')
+            'ubuntu: hoary-RELEASE [foo-packageset]')

=== modified file 'lib/lp/soyuz/browser/archive.py'
--- lib/lp/soyuz/browser/archive.py	2014-07-07 02:10:54 +0000
+++ lib/lp/soyuz/browser/archive.py	2014-07-09 03:42:17 +0000
@@ -1393,9 +1393,8 @@
 def make_archive_vocabulary(archives):
     terms = []
     for archive in archives:
-        token = '%s/%s' % (archive.owner.name, archive.name)
-        label = '%s [~%s]' % (archive.displayname, token)
-        terms.append(SimpleTerm(archive, token, label))
+        label = '%s [%s]' % (archive.displayname, archive.reference)
+        terms.append(SimpleTerm(archive, archive.reference, label))
     return SimpleVocabulary(terms)
 
 

=== modified file 'lib/lp/soyuz/browser/tests/archive-views.txt'
--- lib/lp/soyuz/browser/tests/archive-views.txt	2013-05-09 08:53:01 +0000
+++ lib/lp/soyuz/browser/tests/archive-views.txt	2014-07-09 03:42:17 +0000
@@ -1266,7 +1266,7 @@
 
     >>> for item in archive_widget.vocabulary:
     ...     print item.title
-    PPA for Ubuntu Team [~ubuntu-team/ppa]
+    PPA for Ubuntu Team [~ubuntu-team/ubuntu/ppa]
 
     >>> print archive_widget.getInputValue() == cprov.archive
     True
@@ -1316,8 +1316,8 @@
 
     >>> for item in archive_widget.vocabulary:
     ...     print item.title
-    PPA for Celso Providelo [~cprov/ppa]
-    PPA for No Privileges Person [~no-priv/ppa]
+    PPA for Celso Providelo [~cprov/ubuntu/ppa]
+    PPA for No Privileges Person [~no-priv/ubuntu/ppa]
 
     >>> print archive_widget.getInputValue()
     Traceback (most recent call last):
@@ -1364,7 +1364,7 @@
     ...     cprov_private_ppa, name="+copy-packages",
     ...     form={
     ...         'field.selected_sources': [str(private_source.id)],
-    ...         'field.destination_archive': 'ubuntu-team/ppa',
+    ...         'field.destination_archive': '~ubuntu-team/ubuntu/ppa',
     ...         'field.destination_series': '',
     ...         'field.include_binaries': 'REBUILD_SOURCES',
     ...         'field.actions.copy': 'Copy',
@@ -1410,7 +1410,7 @@
     ...     cprov_private_ppa, name="+copy-packages",
     ...     form={
     ...         'field.selected_sources': [str(private_source.id)],
-    ...         'field.destination_archive': 'ubuntu-team/ppa',
+    ...         'field.destination_archive': '~ubuntu-team/ubuntu/ppa',
     ...         'field.destination_series': '',
     ...         'field.include_binaries': 'REBUILD_SOURCES',
     ...         'field.actions.copy': 'Copy',

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue.txt'
--- lib/lp/soyuz/doc/distroseriesqueue.txt	2013-07-25 11:58:55 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue.txt	2014-07-09 03:42:17 +0000
@@ -108,7 +108,7 @@
     ...         print source.sourcepackagerelease.name
     ...     pub_records = item.realiseUpload(FakeLogger())
     ed
-    DEBUG Publishing source ed/0.2-20 to ubuntu/hoary in the primary archive
+    DEBUG Publishing source ed/0.2-20 to ubuntu/hoary in ubuntu
 
 
 Confirm we can now find ed published in hoary.

=== modified file 'lib/lp/soyuz/model/packagecopyjob.py'
--- lib/lp/soyuz/model/packagecopyjob.py	2014-05-15 08:49:44 +0000
+++ lib/lp/soyuz/model/packagecopyjob.py	2014-07-09 03:42:17 +0000
@@ -740,18 +740,12 @@
             parts.append(" no package (!)")
         else:
             parts.append(" package %s" % self.package_name)
-        parts.append(
-            " from %s/%s" % (
-                self.source_archive.distribution.name,
-                self.source_archive.name))
+        parts.append(" from %s" % self.source_archive.reference)
         if self.source_pocket is not None:
             parts.append(", %s pocket," % self.source_pocket.name)
         if self.source_distroseries is not None:
             parts.append(" in %s" % self.source_distroseries)
-        parts.append(
-            " to %s/%s" % (
-                self.target_archive.distribution.name,
-                self.target_archive.name))
+        parts.append(" to %s" % self.target_archive.reference)
         parts.append(", %s pocket," % self.target_pocket.name)
         if self.target_distroseries is not None:
             parts.append(" in %s" % self.target_distroseries)

=== modified file 'lib/lp/soyuz/model/queue.py'
--- lib/lp/soyuz/model/queue.py	2014-07-07 07:36:54 +0000
+++ lib/lp/soyuz/model/queue.py	2014-07-09 03:42:17 +0000
@@ -1340,12 +1340,12 @@
     def publish(self, logger=None):
         """See `IPackageUploadSource`."""
         # Publish myself in the distroseries pointed at by my queue item.
-        debug(logger, "Publishing source %s/%s to %s/%s in the %s archive" % (
+        debug(logger, "Publishing source %s/%s to %s/%s in %s" % (
             self.sourcepackagerelease.name,
             self.sourcepackagerelease.version,
             self.packageupload.distroseries.distribution.name,
             self.packageupload.distroseries.name,
-            self.packageupload.archive.name))
+            self.packageupload.archive.reference))
 
         return getUtility(IPublishingSet).newSourcePublication(
             archive=self.packageupload.archive,

=== modified file 'lib/lp/soyuz/scripts/populate_archive.py'
--- lib/lp/soyuz/scripts/populate_archive.py	2013-09-18 06:34:44 +0000
+++ lib/lp/soyuz/scripts/populate_archive.py	2014-07-09 03:42:17 +0000
@@ -149,12 +149,9 @@
                     "No PPA for user: '%s'" % from_user)
 
         if the_origin.archive.private:
-            if from_user is not None:
-                the_name = '%s/%s' % (from_user, the_origin.archive.name)
-            else:
-                the_name = the_origin.archive.name
             raise SoyuzScriptError(
-                "Cannot copy from private archive ('%s')" % the_name)
+                "Cannot copy from private archive (%s)"
+                % the_origin.archive.reference)
 
         # Build the destination package location.
         the_destination = build_location(to_distribution, to_suite, component)

=== modified file 'lib/lp/soyuz/scripts/tests/test_populatearchive.py'
--- lib/lp/soyuz/scripts/tests/test_populatearchive.py	2013-11-18 07:51:18 +0000
+++ lib/lp/soyuz/scripts/tests/test_populatearchive.py	2014-07-09 03:42:17 +0000
@@ -613,7 +613,7 @@
         self.runScript(
             extra_args=extra_args, exception_type=SoyuzScriptError,
             exception_text=(
-                "Cannot copy from private archive ('joe/ppa')"))
+                "Cannot copy from private archive (~joe/ubuntu/ppa)"))
 
     def testDisabledDestinationArchive(self):
         """Try copying to a disabled archive.

=== modified file 'lib/lp/soyuz/stories/ppa/xx-copy-packages.txt'
--- lib/lp/soyuz/stories/ppa/xx-copy-packages.txt	2013-11-28 05:59:00 +0000
+++ lib/lp/soyuz/stories/ppa/xx-copy-packages.txt	2014-07-09 03:42:17 +0000
@@ -225,10 +225,10 @@
 default form value for 'Destination PPA'.
 
     >>> print jblack_browser.getControl('Destination PPA').displayOptions
-    ['PPA for James Blackwell [~jblack/ppa]']
+    ['PPA for James Blackwell [~jblack/ubuntu/ppa]']
 
     >>> print jblack_browser.getControl('Destination PPA').value
-    ['jblack/ppa']
+    ['~jblack/ubuntu/ppa']
 
 James notice that Celso's 'pmount' was uploaded and built in Warty,
 but he is using Hoary. No problem, because he can select a destination
@@ -711,13 +711,14 @@
 allows him to select one of them.
 
     >>> print jblack_browser.getControl('Destination PPA').displayOptions
-    ['PPA for James Blackwell [~jblack/ppa]', 'PPA for James Blackwell Friends [~jblack-friends/ppa]']
+    ['PPA for James Blackwell [~jblack/ubuntu/ppa]',
+     'PPA for James Blackwell Friends [~jblack-friends/ubuntu/ppa]']
 
 James wants to populate the PPA for James Blackwell Friends, he
 selects that.
 
     >>> jblack_browser.getControl(
-    ...     'Destination PPA').value = ['jblack-friends/ppa']
+    ...     'Destination PPA').value = ['~jblack-friends/ubuntu/ppa']
 
 James decides that 'hoary' is where the action will be for his friends.
 
@@ -857,7 +858,7 @@
     ...     jblack_pub_ids)
 
     >>> jblack_browser.getControl(
-    ...     'Destination PPA').value = ['jblack-sandbox/ppa']
+    ...     'Destination PPA').value = ['~jblack-sandbox/ubuntu/ppa']
 
     >>> jblack_browser.getControl('Destination series').value = ['']
 
@@ -1002,7 +1003,8 @@
     >>> foo_pub_id = getPPAPubIDsFor('no-priv', u'foo')[0]
     >>> jblack_browser.getControl(
     ...     name='field.selected_sources').value = [foo_pub_id]
-    >>> jblack_browser.getControl('Destination PPA').value = ['jblack/ppa']
+    >>> jblack_browser.getControl('Destination PPA').value = [
+    ...     '~jblack/ubuntu/ppa']
     >>> jblack_browser.getControl(
     ...     name='field.include_binaries').value = ['COPY_BINARIES']
     >>> jblack_browser.getControl("Copy Packages").click()
@@ -1034,7 +1036,8 @@
     >>> foo_pub_id = getPPAPubIDsFor('cprov', u'foo')[0]
     >>> jblack_browser.getControl(
     ...     name='field.selected_sources').value = [foo_pub_id]
-    >>> jblack_browser.getControl('Destination PPA').value = ['jblack/ppa']
+    >>> jblack_browser.getControl('Destination PPA').value = [
+    ...     '~jblack/ubuntu/ppa']
     >>> jblack_browser.getControl(
     ...     name='field.include_binaries').value = ['COPY_BINARIES']
     >>> jblack_browser.getControl("Copy Packages").click()
@@ -1050,7 +1053,8 @@
 
     >>> jblack_browser.getControl(
     ...     name='field.selected_sources').value = [foo_pub_id]
-    >>> jblack_browser.getControl('Destination PPA').value = ['jblack/ppa']
+    >>> jblack_browser.getControl('Destination PPA').value = [
+    ...     '~jblack/ubuntu/ppa']
     >>> jblack_browser.getControl('Destination series').value = ['warty']
     >>> jblack_browser.getControl(
     ...     name='field.include_binaries').value = ['COPY_BINARIES']
@@ -1092,7 +1096,8 @@
     >>> foo_pub_id = getPPAPubIDsFor('mark', u'foo')[0]
     >>> jblack_browser.getControl(
     ...     name='field.selected_sources').value = [foo_pub_id]
-    >>> jblack_browser.getControl('Destination PPA').value = ['jblack/ppa']
+    >>> jblack_browser.getControl('Destination PPA').value = [
+    ...     '~jblack/ubuntu/ppa']
     >>> jblack_browser.getControl('Destination series').value = ['grumpy']
     >>> jblack_browser.getControl(
     ...     name='field.include_binaries').value = ['COPY_BINARIES']
@@ -1126,7 +1131,8 @@
     >>> foo_pub_id = getPPAPubIDsFor('jblack-friends', u'foo')[0]
     >>> jblack_browser.getControl(
     ...     name='field.selected_sources').value = [foo_pub_id]
-    >>> jblack_browser.getControl('Destination PPA').value = ['jblack/ppa']
+    >>> jblack_browser.getControl('Destination PPA').value = [
+    ...     '~jblack/ubuntu/ppa']
     >>> jblack_browser.getControl('Destination series').value = ['grumpy']
     >>> jblack_browser.getControl(
     ...     name='field.include_binaries').value = ['COPY_BINARIES']

=== modified file 'lib/lp/soyuz/stories/soyuz/xx-build-record.txt'
--- lib/lp/soyuz/stories/soyuz/xx-build-record.txt	2013-11-19 02:51:24 +0000
+++ lib/lp/soyuz/stories/soyuz/xx-build-record.txt	2014-07-09 03:42:17 +0000
@@ -536,7 +536,7 @@
     Build details
     ...
     Source package recipe build:
-    ~cprov/product/mybranch recipe build [cprov/ppa]
+    ~cprov/product/mybranch recipe build [~cprov/ubuntu/ppa]
     ...
 
     >>> print anon_browser.getLink('~cprov/product/mybranch recipe build').url

=== modified file 'lib/lp/soyuz/stories/soyuz/xx-private-builds.txt'
--- lib/lp/soyuz/stories/soyuz/xx-private-builds.txt	2013-12-03 05:18:41 +0000
+++ lib/lp/soyuz/stories/soyuz/xx-private-builds.txt	2014-07-09 03:42:17 +0000
@@ -203,7 +203,7 @@
     ...
     Name  Architectures  Status
     bob   386            Building i386 build of mozilla-firefox ...
-    frog  386            Building i386 build of privacy-test ... [cprov/p3a]
+    frog  386            Building i386 build of privacy-test ... [~cprov/ubuntu/p3a]
     ...
 
 Launchpad Buildd admins cannot see private builds.
@@ -225,7 +225,7 @@
     ...
     Name  Architectures  Status
     bob   386            Building i386 build of mozilla-firefox ...
-    frog  386            Building i386 build of privacy-test ... [cprov/p3a]
+    frog  386            Building i386 build of privacy-test ... [~cprov/ubuntu/p3a]
     Updated on ...
 
 Anonymous users cannot see the private build:
@@ -299,7 +299,7 @@
     ...
     Name  Architectures  Status
     bob   386            Building i386 build of mozilla-firefox ...
-    frog  386            Building i386 build of privacy-test 666 ... [cprov/p3a]
+    frog  386            Building i386 build of privacy-test 666 ... [~cprov/ubuntu/p3a]
     ...
 
 Any other logged-in user will also see the build:
@@ -311,7 +311,7 @@
     ...
     Name  Architectures  Status
     bob   386            Building i386 build of mozilla-firefox ...
-    frog  386            Building i386 build of privacy-test 666 ... [cprov/p3a]
+    frog  386            Building i386 build of privacy-test 666 ... [~cprov/ubuntu/p3a]
     ...
 
 Accessing the build page will now also work:

=== modified file 'lib/lp/soyuz/tests/test_packagecopyjob.py'
--- lib/lp/soyuz/tests/test_packagecopyjob.py	2014-07-08 06:34:37 +0000
+++ lib/lp/soyuz/tests/test_packagecopyjob.py	2014-07-09 03:42:17 +0000
@@ -605,8 +605,10 @@
             requester=requester)
         self.assertEqual(
             ("<PlainPackageCopyJob to copy package foo from "
-             "{distroseries.distribution.name}/{archive1.name} to "
-             "{distroseries.distribution.name}/{archive2.name}, "
+             "~{archive1.owner.name}/{distroseries.distribution.name}/"
+             "{archive1.name} to "
+             "~{archive2.owner.name}/{distroseries.distribution.name}/"
+             "{archive2.name}, "
              "RELEASE pocket, in {distroseries.distribution.name} "
              "{distroseries.name}, including binaries>").format(
                 distroseries=distroseries, archive1=archive1,


Follow ups