Added Package.best_screenshot_for_version
This commit is contained in:
parent
ff254f8e00
commit
6feaa53920
1 changed files with 25 additions and 10 deletions
|
|
@ -47,17 +47,32 @@ 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)
|
|
||||||
if version_x<version_y
|
# Return the newest screenshot that is not newer than the given version.
|
||||||
1
|
def best_screenshot_for_version(version)
|
||||||
elsif version_x>version_y
|
sorted_screenshots = self.screenshots_sorted_by_version
|
||||||
-1
|
sorted_screenshots.each do |ss|
|
||||||
else
|
logger.debug { "Comparing version #{version} against #{ss.version}" }
|
||||||
0
|
return ss if version_compare(version, ss.version)<=0
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue