From 12de26d2cfbdce9a444d9fb0a3e0e7e35aa83332 Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 26 Sep 2019 16:35:05 -0500 Subject: [PATCH] post versions: add more search options to /post_versions/search. --- app/models/post_archive.rb | 28 ++----------------------- app/models/user.rb | 4 ++-- app/views/post_versions/search.html.erb | 8 +++++++ 3 files changed, 12 insertions(+), 28 deletions(-) diff --git a/app/models/post_archive.rb b/app/models/post_archive.rb index 9410da237..877eef489 100644 --- a/app/models/post_archive.rb +++ b/app/models/post_archive.rb @@ -18,36 +18,12 @@ class PostArchive < ApplicationRecord end module SearchMethods - def for_user(user_id) - if user_id - where("updater_id = ?", user_id) - else - none - end - end - - def for_user_name(name) - user_id = User.name_to_id(name) - for_user(user_id) - end - def search(params) q = super + q = q.search_attributes(params, :updater_id, :post_id, :rating, :rating_changed, :parent_id, :parent_changed, :source, :source_changed, :version) if params[:updater_name].present? - q = q.for_user_name(params[:updater_name]) - end - - if params[:updater_id].present? - q = q.where(updater_id: params[:updater_id].split(",").map(&:to_i)) - end - - if params[:post_id].present? - q = q.where(post_id: params[:post_id].split(",").map(&:to_i)) - end - - if params[:start_id].present? - q = q.where("id <= ?", params[:start_id].to_i) + q = q.where(updater_id: User.name_to_id(params[:updater_name])) end q.apply_default_order(params) diff --git a/app/models/user.rb b/app/models/user.rb index 6064a1f6b..1fd46c82c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -97,7 +97,7 @@ class User < ApplicationRecord has_many :post_disapprovals, :dependent => :destroy has_many :post_flags, foreign_key: :creator_id has_many :post_votes - has_many :post_archives + has_many :post_versions, class_name: "PostArchive", foreign_key: :updater_id has_many :bans, -> {order("bans.id desc")} has_one :recent_ban, -> {order("bans.id desc")}, :class_name => "Ban" @@ -668,7 +668,7 @@ class User < ApplicationRecord self.class.without_timeout do User.where(id: id).update_all( post_upload_count: posts.count, - post_update_count: PostArchive.for_user(id).count, + post_update_count: post_versions.count, note_update_count: note_versions.count ) end diff --git a/app/views/post_versions/search.html.erb b/app/views/post_versions/search.html.erb index 1e058581b..a4ba56d0a 100644 --- a/app/views/post_versions/search.html.erb +++ b/app/views/post_versions/search.html.erb @@ -3,8 +3,16 @@

Search Changes

<%= search_form_for(post_versions_path) do |f| %> + <%= f.input :updated_at, label: "Date" %> <%= f.input :updater_name, label: "Updater", input_html: { "data-autocomplete": "user" } %> <%= f.input :post_id %> + <%= f.input :parent_id %> + <%= f.input :rating %> + <%= f.input :source_ilike, label: "Source", hint: "Use * for wildcard" %> + <%= f.input :version %> + <%= f.input :rating_changed, as: :select %> + <%= f.input :parent_changed, as: :select %> + <%= f.input :source_changed, as: :select %> <%= f.submit "Search" %> <% end %>