def latest_overall_publication(self):
     """See `IDistributionSourcePackage`."""
     # XXX kiko 2008-06-03: This is magical code that finds the
     # latest relevant publication. It relies on ordering of status
     # and pocket enum values, which is arguably evil but much faster
     # than CASE sorting; at any rate this can be fixed when
     # https://bugs.launchpad.net/soyuz/+bug/236922 is.
     spph = SourcePackagePublishingHistory.selectFirst(
         """
         SourcePackagePublishingHistory.distroseries = DistroSeries.id AND
         DistroSeries.distribution = %s AND
         SourcePackagePublishingHistory.sourcepackagename = %s AND
         SourcePackagePublishingHistory.archive IN %s AND
         pocket NOT IN (%s, %s) AND
         status in (%s, %s)""" %
         sqlvalues(self.distribution, self.sourcepackagename,
                   self.distribution.all_distro_archive_ids,
                   PackagePublishingPocket.PROPOSED,
                   PackagePublishingPocket.BACKPORTS,
                   PackagePublishingStatus.PUBLISHED,
                   PackagePublishingStatus.OBSOLETE),
         clauseTables=["SourcePackagePublishingHistory", "DistroSeries"],
         orderBy=[
             "status",
             SQLConstant("to_number(DistroSeries.version, '99.99') DESC"),
             "-pocket"
         ])
     return spph
 def latest_overall_publication(self):
     """See `IDistributionSourcePackage`."""
     # XXX kiko 2008-06-03: This is magical code that finds the
     # latest relevant publication. It relies on ordering of status
     # and pocket enum values, which is arguably evil but much faster
     # than CASE sorting; at any rate this can be fixed when
     # https://bugs.launchpad.net/soyuz/+bug/236922 is.
     spph = SourcePackagePublishingHistory.selectFirst("""
         SourcePackagePublishingHistory.distroseries = DistroSeries.id AND
         DistroSeries.distribution = %s AND
         SourcePackagePublishingHistory.sourcepackagename = %s AND
         SourcePackagePublishingHistory.archive IN %s AND
         pocket NOT IN (%s, %s) AND
         status in (%s, %s)""" %
             sqlvalues(self.distribution,
                       self.sourcepackagename,
                       self.distribution.all_distro_archive_ids,
                       PackagePublishingPocket.PROPOSED,
                       PackagePublishingPocket.BACKPORTS,
                       PackagePublishingStatus.PUBLISHED,
                       PackagePublishingStatus.OBSOLETE),
         clauseTables=["SourcePackagePublishingHistory",
                       "DistroSeries"],
         orderBy=["status",
                  SQLConstant(
                     "to_number(DistroSeries.version, '99.99') DESC"),
                  "-pocket"])
     return spph
Example #3
0
    def getLatestPublishingEntry(self, time_interval):
        query = """
            SourcePackagePublishingHistory.pocket = %s
            AND SourcePackagePublishingHistory.component = %s
            AND SourcePackagePublishingHistory.distroseries = %s
            AND SourcePackagePublishingHistory.archive = %s
            AND SourcePackagePublishingHistory.status = %s
            """ % sqlvalues(self.pocket, self.component, self.distroseries,
                            self.distroseries.main_archive,
                            PackagePublishingStatus.PUBLISHED)

        if time_interval is not None:
            start, end = time_interval
            assert end > start
            query = (query +
                     " AND datepublished >= %s AND datepublished < %s" %
                     sqlvalues(start, end))
        return SourcePackagePublishingHistory.selectFirst(
            query, orderBy='-datepublished')
    def getLatestPublishingEntry(self, time_interval):
        query = """
            SourcePackagePublishingHistory.pocket = %s
            AND SourcePackagePublishingHistory.component = %s
            AND SourcePackagePublishingHistory.distroseries = %s
            AND SourcePackagePublishingHistory.archive = %s
            AND SourcePackagePublishingHistory.status = %s
            """ % sqlvalues(self.pocket, self.component,
                            self.distroseries,
                            self.distroseries.main_archive,
                            PackagePublishingStatus.PUBLISHED)

        if time_interval is not None:
            start, end = time_interval
            assert end > start
            query = (query + " AND datepublished >= %s AND datepublished < %s"
                     % sqlvalues(start, end))
        return SourcePackagePublishingHistory.selectFirst(
            query, orderBy='-datepublished')