launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #27639
[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)