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,17 +47,32 @@ class Package < ActiveRecord::Base
self.joins(:screenshots).where(screenshots: {approved:false}).distinct(:name)
end
# Get all screenshots and have them sorted descendingly by their version number (Debian style).
def screenshots_sorted_by_version
self.screenshots.to_a.sort do |x,y|
version_x = DebImporter::Version.new(x.version)
version_y = DebImporter::Version.new(y.version)
if version_x<version_y
1
elsif version_x>version_y
-1
else
0
end
self.screenshots.to_a.sort { |x,y| version_compare(x.version,y.version) }
end
# 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
1
elsif version_x>version_y
-1
else
0
end
end
end