post_flags.rb: add 'rejected' and 'deleted' categories.

Includes a category field in /post_flags.json.

Adds 'rejected' and 'deleted' search categories. Categories:

* unapproved - deleted after going unapproved in first three days
* rejected   - deleted after being manually flagged
* deleted    - either of the above
* banned     - artist requested removal
* normal     - none of the above (a "normal" manual flag)
This commit is contained in:
evazion
2017-03-03 23:30:56 -06:00
parent 8376c33980
commit 3ae8cc5586

View File

@@ -1,6 +1,12 @@
class PostFlag < ActiveRecord::Base
class Error < Exception ; end
module Reasons
UNAPPROVED = "Unapproved in three days"
REJECTED = "Unapproved in three days after returning to moderation queue%"
BANNED = "Artist requested removal"
end
belongs_to :creator, :class_name => "User"
belongs_to :post
validates_presence_of :reason, :creator_id, :creator_ip_addr
@@ -66,11 +72,15 @@ class PostFlag < ActiveRecord::Base
case params[:category]
when "normal"
q = q.where("reason not in (?)", ["Unapproved in three days", "Unapproved in three days after returning to moderation queue", "Artist requested removal"])
q = q.where("reason NOT IN (?) AND reason NOT LIKE ?", [Reasons::UNAPPROVED, Reasons::BANNED], Reasons::REJECTED)
when "unapproved"
q = q.where("reason in (?)", ["Unapproved in three days", "Unapproved in three days after returning to moderation queue"])
q = q.where(reason: Reasons::UNAPPROVED)
when "banned"
q = q.where("reason = ?", "Artist requested removal")
q = q.where(reason: Reasons::BANNED)
when "rejected"
q = q.where("reason LIKE ?", Reasons::REJECTED)
when "deleted"
q = q.where("reason = ? OR reason LIKE ?", Reasons::UNAPPROVED, Reasons::REJECTED)
end
q
@@ -85,11 +95,28 @@ class PostFlag < ActiveRecord::Base
end
super + list
end
def method_attributes
super + [:category]
end
end
extend SearchMethods
include ApiMethods
def category
case reason
when Reasons::UNAPPROVED
:unapproved
when /#{Reasons::REJECTED.gsub("%", ".*")}/
:rejected
when Reasons::BANNED
:banned
else
:normal
end
end
def update_post
post.update_column(:is_flagged, true) unless post.is_flagged?
end