~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/registry/model/packagingjob.py

  • Committer: Leonard Richardson
  • Date: 2011-03-21 13:46:47 UTC
  • mto: This revision was merged to the branch mainline in revision 12658.
  • Revision ID: leonard.richardson@canonical.com-20110321134647-z4yvov4djcpr7833
Merge from trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
from lp.registry.model.productseries import ProductSeries
31
31
from lp.registry.model.sourcepackagename import SourcePackageName
32
32
from lp.services.database.stormbase import StormBase
33
 
from lp.services.job.interfaces.job import IJob
 
33
from lp.services.job.interfaces.job import (
 
34
    IJob,
 
35
    JobStatus,
 
36
    )
34
37
from lp.services.job.model.job import Job
35
38
 
36
39
 
179
182
            *extra_clauses)
180
183
        return (cls._subclass[job.job_type](job) for job in jobs)
181
184
 
 
185
    @classmethod
 
186
    def getNextJobStatus(cls, packaging):
 
187
        """Return the status of the next job to run."""
 
188
        store = IStore(PackagingJob)
 
189
        result = store.find(
 
190
            Job, Job.id == PackagingJob.job_id,
 
191
            PackagingJob.distroseries_id == packaging.distroseries.id,
 
192
            PackagingJob.sourcepackagename_id ==
 
193
                packaging.sourcepackagename.id,
 
194
            PackagingJob.productseries_id == packaging.productseries.id,
 
195
            PackagingJob.job_type == cls.class_job_type,
 
196
            Job._status.is_in([JobStatus.WAITING, JobStatus.RUNNING]))
 
197
        result.order_by(PackagingJob.id)
 
198
        job = result.first()
 
199
        if job is None:
 
200
            return None
 
201
        return job.status
 
202
 
182
203
 
183
204
#make accessible to zcml
184
205
schedule_job = PackagingJobDerived.scheduleJob