30 lines
852 B
Ruby
30 lines
852 B
Ruby
# Posts new appeals to the Deletion appeal thread once per hour.
|
|
#
|
|
# @see DanbooruMaintenance#hourly
|
|
module PostAppealForumUpdater
|
|
APPEAL_TOPIC_TITLE = "Deletion appeal thread"
|
|
|
|
def self.update_forum!
|
|
return if pending_appeals.empty?
|
|
|
|
CurrentUser.scoped(User.system) do
|
|
topic = ForumTopic.order(:id).create_with(creator: User.system).find_or_create_by!(title: APPEAL_TOPIC_TITLE)
|
|
ForumPost.create!(creator: User.system, topic: topic, body: forum_post_body)
|
|
end
|
|
end
|
|
|
|
def self.pending_appeals
|
|
PostAppeal.pending.where(created_at: (1.hour.ago..Time.zone.now)).order(post_id: :asc)
|
|
end
|
|
|
|
def self.forum_post_body
|
|
pending_appeals.map do |appeal|
|
|
if appeal.reason.present?
|
|
"post ##{appeal.post_id}: #{appeal.reason}"
|
|
else
|
|
"post ##{appeal.post_id}"
|
|
end
|
|
end.join("\n")
|
|
end
|
|
end
|