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
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')