From 6feaa539208402b30b21dfa2819fe88b88d7eadd Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Thu, 23 Jun 2016 00:17:27 +0200 Subject: [PATCH] Added Package.best_screenshot_for_version --- app/models/package.rb | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/app/models/package.rb b/app/models/package.rb index 4081609..7e532df 100644 --- a/app/models/package.rb +++ b/app/models/package.rb @@ -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_xversion_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_xversion_y + -1 + else + 0 end end end