From 3570ace0172a75d3af68b526a090061261b6f42e Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 17 May 2017 22:49:52 -0500 Subject: [PATCH] flags: ignore flagging rate-limits when deleting posts. --- app/models/post_flag.rb | 14 +++++++------- test/unit/post_test.rb | 11 +++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/models/post_flag.rb b/app/models/post_flag.rb index 6c6643eca..da5c10a9d 100644 --- a/app/models/post_flag.rb +++ b/app/models/post_flag.rb @@ -139,10 +139,10 @@ class PostFlag < ActiveRecord::Base end def validate_creator_is_not_limited + return if is_deletion + if CurrentUser.can_approve_posts? # do nothing - elsif User.system.present? && CurrentUser.id == User.system.id - # do nothing elsif creator.created_at > 1.week.ago errors[:creator] << "cannot flag within the first week of sign up" elsif creator.is_gold? && flag_count_for_creator >= 10 @@ -150,11 +150,6 @@ class PostFlag < ActiveRecord::Base elsif !creator.is_gold? && flag_count_for_creator >= 1 errors[:creator] << "can flag 1 post a day" end - end - - def validate_post - errors[:post] << "is locked and cannot be flagged" if post.is_status_locked? - errors[:post] << "is deleted" if post.is_deleted? flag = post.flags.in_cooldown.last if flag.present? @@ -162,6 +157,11 @@ class PostFlag < ActiveRecord::Base end end + def validate_post + errors[:post] << "is locked and cannot be flagged" if post.is_status_locked? + errors[:post] << "is deleted" if post.is_deleted? + end + def initialize_creator self.creator_id ||= CurrentUser.id self.creator_ip_addr ||= CurrentUser.ip_addr diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index e9093e7f7..279ee6582 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -95,6 +95,17 @@ class PostTest < ActiveSupport::TestCase end end + context "that is still in cooldown after being flagged" do + should "succeed" do + post = FactoryGirl.create(:post) + post.flag!("test flag") + post.delete!("test deletion") + + assert_equal(true, post.is_deleted) + assert_equal(2, post.flags.size) + end + end + should "update the fast count" do Danbooru.config.stubs(:estimate_post_counts).returns(false) post = FactoryGirl.create(:post, :tag_string => "aaa")