~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/soyuz/model/binarypackagebuild.py

  • Committer: Julian Edwards
  • Date: 2011-09-21 11:24:53 UTC
  • mto: This revision was merged to the branch mainline in revision 14004.
  • Revision ID: julian.edwards@canonical.com-20110921112453-6132qxw0gl2q2306
remove unneeded interpreter in txlongpoll recipe

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
    EmptyResultSet,
30
30
    Store,
31
31
    )
32
 
from storm.zope import IResultSet
33
32
from zope.component import getUtility
34
33
from zope.interface import implements
 
34
from zope.security.proxy import removeSecurityProxy
35
35
 
36
36
from canonical.config import config
37
37
from canonical.database.sqlbase import (
1021
1021
            BuildStatus.NEEDSBUILD,
1022
1022
            BuildStatus.BUILDING,
1023
1023
            BuildStatus.UPLOADING]:
1024
 
            order_by = [Desc(BuildQueue.lastscore), BinaryPackageBuild.id]
1025
 
            order_by_table = BuildQueue
 
1024
            orderBy = ["-BuildQueue.lastscore", "BinaryPackageBuild.id"]
1026
1025
            clauseTables.append('BuildQueue')
1027
1026
            clauseTables.append('BuildPackageJob')
1028
1027
            condition_clauses.append(
1029
1028
                'BuildPackageJob.build = BinaryPackageBuild.id')
1030
1029
            condition_clauses.append('BuildPackageJob.job = BuildQueue.job')
1031
1030
        elif status == BuildStatus.SUPERSEDED or status is None:
1032
 
            order_by = [Desc(BuildFarmJob.date_created),
1033
 
                        BinaryPackageBuild.id]
1034
 
            order_by_table = BuildFarmJob
 
1031
            orderBy = ["-BuildFarmJob.date_created"]
1035
1032
        else:
1036
 
            order_by = [Desc(BuildFarmJob.date_finished),
1037
 
                        BinaryPackageBuild.id]
1038
 
            order_by_table = BuildFarmJob
 
1033
            orderBy = ["-BuildFarmJob.date_finished"]
1039
1034
 
1040
1035
        # End of duplication (see XXX cprov 2006-09-25 above).
1041
1036
 
1048
1043
            "PackageBuild.archive IN %s" %
1049
1044
            sqlvalues(list(distribution.all_distro_archive_ids)))
1050
1045
 
1051
 
        store = Store.of(distribution)
1052
 
        clauseTables = [BinaryPackageBuild] + clauseTables
1053
 
        result_set = store.using(*clauseTables).find(
1054
 
            (BinaryPackageBuild, order_by_table), *condition_clauses)
1055
 
        result_set.order_by(*order_by)
1056
 
 
1057
 
        def get_bpp(result_row):
1058
 
            return result_row[0]
1059
 
 
1060
1046
        return self._decorate_with_prejoins(
1061
 
            DecoratedResultSet(result_set, result_decorator=get_bpp))
 
1047
            BinaryPackageBuild.select(' AND '.join(condition_clauses),
 
1048
            clauseTables=clauseTables, orderBy=orderBy))
1062
1049
 
1063
1050
    def _decorate_with_prejoins(self, result_set):
1064
1051
        """Decorate build records with related data prefetch functionality."""
1065
1052
        # Grab the native storm result set.
1066
 
        result_set = IResultSet(result_set)
 
1053
        result_set = removeSecurityProxy(result_set)._result_set
1067
1054
        decorated_results = DecoratedResultSet(
1068
1055
            result_set, pre_iter_hook=self._prefetchBuildData)
1069
1056
        return decorated_results