uploads: make early deletions cost more upload slots.

If a pending post is manually deleted before the 3 day moderation period
is up, then make it cost 5 upload slots until the 3 day period is up.
This means that if a new user uploads 3 bad posts that get manually
deleted, then all of their upload slots will be used and they won't be
able to upload again until 3 days have passed.
This commit is contained in:
evazion
2020-08-12 21:19:57 -05:00
parent 8c225e67e5
commit fbac2cd167
2 changed files with 10 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ class UploadLimit
INITIAL_POINTS = 1000 INITIAL_POINTS = 1000
MAXIMUM_POINTS = 10_000 MAXIMUM_POINTS = 10_000
APPEAL_COST = 3 APPEAL_COST = 3
DELETION_COST = 5
attr_reader :user attr_reader :user
@@ -40,7 +41,7 @@ class UploadLimit
appealed_count = user.post_appeals.pending.count appealed_count = user.post_appeals.pending.count
early_deleted_count = user.posts.deleted.where("created_at >= ?", Danbooru.config.moderation_period.ago).count early_deleted_count = user.posts.deleted.where("created_at >= ?", Danbooru.config.moderation_period.ago).count
pending_count + early_deleted_count + (appealed_count * APPEAL_COST) pending_count + (early_deleted_count * DELETION_COST) + (appealed_count * APPEAL_COST)
end end
def free_upload_slots def free_upload_slots

View File

@@ -17,6 +17,14 @@ class UploadLimitTest < ActiveSupport::TestCase
end end
end end
context "a new post that is deleted within the first 3 days" do
should "cost the uploader 5 upload slots" do
@post = create(:post, uploader: @user, is_deleted: true, created_at: 1.days.ago)
assert_equal(5, @user.upload_limit.used_upload_slots)
end
end
context "a pending post that is approved" do context "a pending post that is approved" do
should "increase the uploader's upload points" do should "increase the uploader's upload points" do
@post = create(:post, uploader: @user, is_pending: true, created_at: 7.days.ago) @post = create(:post, uploader: @user, is_pending: true, created_at: 7.days.ago)