From 132ef8f93cbdae804ee98d2933ac98fc4963d8c1 Mon Sep 17 00:00:00 2001 From: albert Date: Thu, 28 Feb 2013 10:19:31 -0800 Subject: [PATCH] hide approval mod actions, better logic for user promotion/demotion mod actions --- app/models/mod_action.rb | 4 ++++ app/models/post.rb | 2 +- app/models/user.rb | 12 +++++++++--- config/schedule.rb | 4 ++++ test/unit/user_test.rb | 7 +++++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/models/mod_action.rb b/app/models/mod_action.rb index 97013ef2f..1ded0d168 100644 --- a/app/models/mod_action.rb +++ b/app/models/mod_action.rb @@ -10,6 +10,10 @@ class ModAction < ActiveRecord::Base q = q.where("creator_id = ?", params[:creator_id].to_i) end + if params[:all].blank? + q = q.where("description not like ") + end + q end diff --git a/app/models/post.rb b/app/models/post.rb index 37bfe8984..527736024 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -246,7 +246,7 @@ class Post < ActiveRecord::Base self.is_deleted = false self.approver_id = CurrentUser.id save! - ModAction.create(:description => "approved post ##{id}") + # ModAction.create(:description => "approved post ##{id}") end def disapproved_by?(user) diff --git a/app/models/user.rb b/app/models/user.rb index f2d5613fc..baf88f3c9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -43,6 +43,7 @@ class User < ActiveRecord::Base has_many :note_versions, :foreign_key => "updater_id" has_many :dmails, :foreign_key => "owner_id", :order => "dmails.id desc" belongs_to :inviter, :class_name => "User" + after_update :create_mod_action module BanMethods def validate_ip_addr_is_not_banned @@ -61,7 +62,6 @@ class User < ActiveRecord::Base module InvitationMethods def invite!(level) if level.to_i <= Levels::CONTRIBUTOR - ModAction.create(:description => "invited user ##{id} (#{name})") self.level = level self.inviter_id = CurrentUser.id save @@ -254,8 +254,8 @@ class User < ActiveRecord::Base end end - def level_string - case level + def level_string(value = nil) + case (value || level) when Levels::BLOCKED "Banned" @@ -324,6 +324,12 @@ class User < ActiveRecord::Base def is_admin? level >= Levels::ADMIN end + + def create_mod_action + if level_changed? + ModAction.create(:description => "level changed #{level_string(level_was)} -> #{level_string} by #{CurrentUser.name}") + end + end end module EmailMethods diff --git a/config/schedule.rb b/config/schedule.rb index e9af4e59f..18ca2b31c 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -12,6 +12,10 @@ every 1.day do runner "Upload.delete_all(['created_at < ?', 1.day.ago])" end +every 1.day do + runner "ModAction.delete_all(['created_at < ?', 3.days.ago])" +end + if environment == "production" every 1.hour do runner "AmazonBackup.execute" diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 98cd335fd..e084bcaf3 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -30,6 +30,13 @@ class UserTest < ActiveSupport::TestCase @user.reload assert_equal(User::Levels::MEMBER, @user.level) end + + should "create a mod action" do + assert_difference("ModAction.count") do + @user.invite!(User::Levels::CONTRIBUTOR) + end + assert_equal("level changed Member -> Contributor by #{CurrentUser.name}", ModAction.first.description) + end end context "who has negeative feedback and is trying to change their name" do