From 851ab1d2562b8e94d9cc7fbbd2031273658cada8 Mon Sep 17 00:00:00 2001 From: albert Date: Thu, 21 Mar 2013 15:48:48 -0700 Subject: [PATCH] implement new user limiting --- app/models/user.rb | 4 ++-- app/presenters/user_presenter.rb | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 1440dac14..d2a283523 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -438,9 +438,9 @@ class User < ActiveRecord::Base approved_count = Post.where("is_flagged = false and is_pending = false and is_deleted = false and uploader_id = ? and created_at >= ?", id, 1.month.ago).count if base_upload_limit - limit = base_upload_limit - (deleted_count / 5) - pending_count + limit = [base_upload_limit - (deleted_count / 2), 4].max - pending_count else - limit = 10 + (approved_count / 10) - (deleted_count / 5) - pending_count + limit = [10 + [approved_count / 2, 20].min - (deleted_count / 2), 4].max - pending_count end if limit < 0 diff --git a/app/presenters/user_presenter.rb b/app/presenters/user_presenter.rb index 666e5dff2..9c756667a 100644 --- a/app/presenters/user_presenter.rb +++ b/app/presenters/user_presenter.rb @@ -38,7 +38,17 @@ class UserPresenter return "none" end - return user.upload_limit.to_s + deleted_count = Post.for_user(id).deleted.where("created_at >= ?", 1.month.ago).count + pending_count = Post.for_user(id).pending.where("created_at >= ?", 3.days.ago).count + approved_count = Post.where("is_flagged = false and is_pending = false and is_deleted = false and uploader_id = ? and created_at >= ?", id, 1.month.ago).count + + if base_upload_limit + string = "max(base_upload_limit:#{base_upload_limit} - (deleted_count:#{deleted_count} / 2), 4) - pending_count:#{pending_count}" + else + string = "max(10 + min(approved_count:#{approved_count} / 2, 20) - (deleted_count:#{deleted_count} / 2), 4) - pending_count:#{pending_count}" + end + + "#{string} = #{user.upload_limit} (deletions and approvals within past month)" end def uploads