Merge pull request #3701 from evazion/fix-3579
Fix #3579: Add post approval index
This commit is contained in:
@@ -5,10 +5,6 @@ class PostApproval < ApplicationRecord
|
||||
validate :validate_approval
|
||||
after_create :approve_post
|
||||
|
||||
def self.prune!
|
||||
where("created_at < ?", 1.month.ago).delete_all
|
||||
end
|
||||
|
||||
def validate_approval
|
||||
if post.is_status_locked?
|
||||
errors.add(:post, "is locked and cannot be approved")
|
||||
@@ -33,4 +29,26 @@ class PostApproval < ApplicationRecord
|
||||
post.flags.each(&:resolve!)
|
||||
post.update(approver: user, is_flagged: false, is_pending: false, is_deleted: false)
|
||||
end
|
||||
|
||||
concerning :SearchMethods do
|
||||
class_methods do
|
||||
def post_tags_match(query)
|
||||
PostQueryBuilder.new(query).build(self.joins(:post))
|
||||
end
|
||||
|
||||
def search(params)
|
||||
q = super
|
||||
params[:user_id] = User.name_to_id(params[:user_name]) if params[:user_name]
|
||||
|
||||
if params[:post_tags_match].present?
|
||||
q = q.post_tags_match(params[:post_tags_match])
|
||||
end
|
||||
|
||||
q = q.attribute_matches(:user_id, params[:user_id])
|
||||
q = q.attribute_matches(:post_id, params[:post_id])
|
||||
|
||||
q.apply_default_order(params)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,11 +4,11 @@ class PostEvent
|
||||
include ActiveModel::Serializers::Xml
|
||||
|
||||
attr_accessor :event
|
||||
delegate :creator, :creator_id, :reason, :is_resolved, :created_at, to: :event
|
||||
delegate :created_at, to: :event
|
||||
|
||||
def self.find_for_post(post_id)
|
||||
post = Post.find(post_id)
|
||||
(post.appeals + post.flags).sort_by(&:created_at).reverse.map { |e| new(event: e) }
|
||||
(post.appeals + post.flags + post.approvals).sort_by(&:created_at).reverse.map { |e| new(event: e) }
|
||||
end
|
||||
|
||||
def type_name
|
||||
@@ -17,6 +17,8 @@ class PostEvent
|
||||
"flag"
|
||||
when PostAppeal
|
||||
"appeal"
|
||||
when PostApproval
|
||||
"approval"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -24,9 +26,25 @@ class PostEvent
|
||||
type_name.first
|
||||
end
|
||||
|
||||
def reason
|
||||
event.try(:reason) || ""
|
||||
end
|
||||
|
||||
def is_resolved
|
||||
event.try(:is_resolved) || false
|
||||
end
|
||||
|
||||
def creator_id
|
||||
event.try(:creator_id) || event.try(:user_id)
|
||||
end
|
||||
|
||||
def creator
|
||||
event.try(:creator) || event.try(:user)
|
||||
end
|
||||
|
||||
def is_creator_visible?(user = CurrentUser.user)
|
||||
case event
|
||||
when PostAppeal
|
||||
when PostAppeal, PostApproval
|
||||
true
|
||||
when PostFlag
|
||||
flag = event
|
||||
|
||||
Reference in New Issue
Block a user