From 8e023cd8c45979de1df89ae8318f90eb6c3f263e Mon Sep 17 00:00:00 2001 From: Toks Date: Wed, 15 Jan 2014 03:15:10 -0500 Subject: [PATCH] fixes #1646 --- app/logical/post_query_builder.rb | 3 ++- app/models/tag.rb | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index bb2f8a7c5..b75983497 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -118,6 +118,7 @@ class PostQueryBuilder relation = add_range_relation(q[:post_id], "posts.id", relation) relation = add_range_relation(q[:mpixels], "posts.image_width * posts.image_height / 1000000.0", relation) + relation = add_range_relation(q[:ratio], "ROUND(1.0 * posts.image_width / GREATEST(1, posts.image_height), 2)", relation) relation = add_range_relation(q[:width], "posts.image_width", relation) relation = add_range_relation(q[:height], "posts.image_height", relation) relation = add_range_relation(q[:score], "posts.score", relation) @@ -130,7 +131,7 @@ class PostQueryBuilder relation = add_range_relation(q[:copyright_tag_count], "posts.tag_count_copyright", relation) relation = add_range_relation(q[:character_tag_count], "posts.tag_count_character", relation) relation = add_range_relation(q[:post_tag_count], "posts.tag_count", relation) - relation = add_range_relation(q[:pixiv_id], "posts.pixiv_id", relation) + relation = add_range_relation(q[:pixiv_id], "posts.pixiv_id", relation) if q[:md5] relation = relation.where(["posts.md5 IN (?)", q[:md5]]) diff --git a/app/models/tag.rb b/app/models/tag.rb index 480d49e58..5c9db9298 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -1,5 +1,5 @@ class Tag < ActiveRecord::Base - METATAGS = "-user|user|-approver|approver|commenter|comm|noter|noteupdater|artcomm|-pool|pool|ordpool|-fav|fav|ordfav|sub|md5|-rating|rating|-locked|locked|width|height|mpixels|score|favcount|filesize|source|-source|id|-id|date|age|order|limit|-status|status|tagcount|gentags|arttags|chartags|copytags|parent|-parent|child|pixiv_id|pixiv" + METATAGS = "-user|user|-approver|approver|commenter|comm|noter|noteupdater|artcomm|-pool|pool|ordpool|-fav|fav|ordfav|sub|md5|-rating|rating|-locked|locked|width|height|mpixels|ratio|score|favcount|filesize|source|-source|id|-id|date|age|order|limit|-status|status|tagcount|gentags|arttags|chartags|copytags|parent|-parent|child|pixiv_id|pixiv" SUBQUERY_METATAGS = "commenter|comm|noter|noteupdater|artcomm" attr_accessible :category, :as => [:moderator, :janitor, :contributor, :gold, :member, :anonymous, :default, :builder, :admin] attr_accessible :is_locked, :as => [:moderator, :janitor, :admin] @@ -252,6 +252,15 @@ class Tag < ActiveRecord::Base size.seconds.ago end + when :ratio + object =~ /\A(\d+(?:\.\d+)?):(\d+(?:\.\d+)?)\Z/i + + if $1 && $2.to_f != 0.0 + ($1.to_f / $2.to_f).round(2) + else + object.to_f.round(2) + end + when :filesize object =~ /\A(\d+(?:\.\d*)?|\d*\.\d+)([kKmM]?)[bB]?\Z/ @@ -457,6 +466,9 @@ class Tag < ActiveRecord::Base when "mpixels" q[:mpixels] = parse_helper($2, :float) + when "ratio" + q[:ratio] = parse_helper($2, :ratio) + when "score" q[:score] = parse_helper($2)