Added Package.best_screenshot_for_version

This commit is contained in:
Christoph Haas 2016-06-23 00:17:27 +02:00
parent ff254f8e00
commit 6feaa53920

View file

@ -47,10 +47,26 @@ class Package < ActiveRecord::Base
self.joins(:screenshots).where(screenshots: {approved:false}).distinct(:name) self.joins(:screenshots).where(screenshots: {approved:false}).distinct(:name)
end end
# Get all screenshots and have them sorted descendingly by their version number (Debian style).
def screenshots_sorted_by_version def screenshots_sorted_by_version
self.screenshots.to_a.sort do |x,y| self.screenshots.to_a.sort { |x,y| version_compare(x.version,y.version) }
version_x = DebImporter::Version.new(x.version) end
version_y = DebImporter::Version.new(y.version)
# Return the newest screenshot that is not newer than the given version.
def best_screenshot_for_version(version)
sorted_screenshots = self.screenshots_sorted_by_version
sorted_screenshots.each do |ss|
logger.debug { "Comparing version #{version} against #{ss.version}" }
return ss if version_compare(version, ss.version)<=0
end
return sorted_screenshots.last
end
private
def version_compare(x,y)
version_x = DebImporter::Version.new(x)
version_y = DebImporter::Version.new(y)
if version_x<version_y if version_x<version_y
1 1
elsif version_x>version_y elsif version_x>version_y
@ -60,4 +76,3 @@ class Package < ActiveRecord::Base
end end
end end
end end
end