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
MAXIMUM_POINTS = 10_000
APPEAL_COST = 3
DELETION_COST = 5
attr_reader :user
@@ -40,7 +41,7 @@ class UploadLimit
appealed_count = user.post_appeals.pending.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
def free_upload_slots

View File

@@ -17,6 +17,14 @@ class UploadLimitTest < ActiveSupport::TestCase
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
should "increase the uploader's upload points" do
@post = create(:post, uploader: @user, is_pending: true, created_at: 7.days.ago)