← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:fix-expose-whether-copies-in-upload-queues-contain-binaries into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:fix-expose-whether-copies-in-upload-queues-contain-binaries into launchpad:master.

Commit message:
Adjust preloading in QueueItemsView.loadPackageCopyJobs

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/411039

Now that `prefill_packageupload_caches` does some more PCJ-related preloading, we should avoid repeating the same queries in the view.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:fix-expose-whether-copies-in-upload-queues-contain-binaries into launchpad:master.
diff --git a/lib/lp/soyuz/browser/queue.py b/lib/lp/soyuz/browser/queue.py
index c0dc34a..9ee371e 100644
--- a/lib/lp/soyuz/browser/queue.py
+++ b/lib/lp/soyuz/browser/queue.py
@@ -19,7 +19,6 @@ from lp.app.errors import (
     UnexpectedFormData,
     )
 from lp.registry.interfaces.person import IPersonSet
-from lp.registry.model.distribution import Distribution
 from lp.services.database.bulk import (
     load_referencing,
     load_related,
@@ -56,14 +55,12 @@ from lp.soyuz.interfaces.queue import (
     QueueInconsistentStateError,
     )
 from lp.soyuz.interfaces.section import ISectionSet
-from lp.soyuz.model.archive import Archive
 from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
 from lp.soyuz.model.binarypackagerelease import BinaryPackageRelease
 from lp.soyuz.model.files import (
     BinaryPackageFile,
     SourcePackageReleaseFile,
     )
-from lp.soyuz.model.packagecopyjob import PackageCopyJob
 from lp.soyuz.model.sourcepackagerelease import SourcePackageRelease
 
 
@@ -192,11 +189,12 @@ class QueueItemsView(LaunchpadView):
 
     def loadPackageCopyJobs(self, uploads):
         """Batch-load `PackageCopyJob`s and related information."""
-        package_copy_jobs = load_related(
-            PackageCopyJob, uploads, ['package_copy_job_id'])
-        archives = load_related(
-            Archive, package_copy_jobs, ['source_archive_id'])
-        load_related(Distribution, archives, ['distributionID'])
+        # PackageUploadSet.getAll preloads the PackageCopyJobs themselves,
+        # along with their related archives and distributions.
+        package_copy_jobs = {
+            removeSecurityProxy(upload.package_copy_job) for upload in uploads
+            if upload.package_copy_job_id is not None}
+        archives = {pcj.source_archive for pcj in package_copy_jobs}
         person_ids = [archive.ownerID for archive in archives]
         jobs = load_related(Job, package_copy_jobs, ['job_id'])
         person_ids.extend(job.requester_id for job in jobs)