def load_target(pid, psid, did, dsid, spnid):
    store = IStore(Product)
    p, ps, d, ds, spn = map(
        lambda (cls, id): store.get(cls, id) if id is not None else None,
        zip((Product, ProductSeries, Distribution, DistroSeries,
             SourcePackageName), (pid, psid, did, dsid, spnid)))
    return bug_target_from_key(p, ps, d, ds, spn)
示例#2
0
    def findFromMany(self, object_ids, types=None):
        from lp.registry.model.person import Person

        object_ids = list(object_ids)
        if not object_ids:
            return {}

        store = IStore(XRef)
        extract_type = lambda id: id[0]
        rows = list(
            store.using(XRef).find(
                (XRef.from_type, XRef.from_id, XRef.to_type, XRef.to_id,
                 XRef.creator_id, XRef.date_created, XRef.metadata),
                Or(*[
                    And(XRef.from_type == from_type,
                        XRef.from_id.is_in([id[1] for id in group]))
                    for from_type, group in groupby(
                        sorted(object_ids, key=extract_type), extract_type)
                ]),
                XRef.to_type.is_in(types) if types is not None else True))
        bulk.load(Person, [row[4] for row in rows])
        result = {}
        for row in rows:
            result.setdefault((row[0], row[1]), {})[(row[2], row[3])] = {
                "creator": store.get(Person, row[4]) if row[4] else None,
                "date_created": row[5],
                "metadata": row[6]
            }
        return result
示例#3
0
 def _preloadProcessors(self, rows):
     # Grab (Builder.id, Processor.id) pairs and stuff them into the
     # Builders' processor caches.
     store = IStore(BuilderProcessor)
     pairs = list(
         store.using(BuilderProcessor, Processor).find(
             (BuilderProcessor.builder_id, BuilderProcessor.processor_id),
             BuilderProcessor.processor_id == Processor.id,
             BuilderProcessor.builder_id.is_in([
                 b.id for b in rows
             ])).order_by(BuilderProcessor.builder_id, Processor.name))
     load(Processor, [pid for bid, pid in pairs])
     for row in rows:
         get_property_cache(row)._processors_cache = []
     for bid, pid in pairs:
         cache = get_property_cache(store.get(Builder, bid))
         cache._processors_cache.append(store.get(Processor, pid))
def load_target(pid, psid, did, dsid, spnid):
    store = IStore(Product)
    p, ps, d, ds, spn = map(
        lambda (cls, id): store.get(cls, id) if id is not None else None,
        zip((Product, ProductSeries, Distribution, DistroSeries,
             SourcePackageName),
            (pid, psid, did, dsid, spnid)))
    return bug_target_from_key(p, ps, d, ds, spn)
示例#5
0
 def _resolve(row):
     store = IStore(SourcePackagePublishingHistory)
     return tuple(
         (value if cls is None else store.get(cls, value))
         for value, cls in zip(row, lookups))
示例#6
0
 def _resolve(row):
     store = IStore(SourcePackagePublishingHistory)
     return tuple(
         (value if cls is None else store.get(cls, value))
         for value, cls in zip(row, lookups))
示例#7
0
 def test_createMultiple_defaults_requester_to_None(self):
     store = IStore(Job)
     job = store.get(Job, Job.createMultiple(store, 1)[0])
     self.assertEqual(None, job.requester)
示例#8
0
 def test_createMultiple_sets_requester(self):
     store = IStore(Job)
     requester = self.factory.makePerson()
     job = store.get(Job, Job.createMultiple(store, 1, requester)[0])
     self.assertEqual(requester, job.requester)
示例#9
0
 def test_createMultiple_sets_status_to_WAITING(self):
     store = IStore(Job)
     job = store.get(Job, Job.createMultiple(store, 1)[0])
     self.assertEqual(JobStatus.WAITING, job.status)
示例#10
0
 def test_createMultiple_returns_valid_job_ids(self):
     job_ids = list(Job.createMultiple(IStore(Job), 3))
     store = IStore(Job)
     for job_id in job_ids:
         self.assertIsNot(None, store.get(Job, job_id))