Project

General

Profile

Feature #30998 » 0001-Add-tasks-to-prune-registered-users-after-a-certain-.patch

Marius BĂLTEANU, 2022-03-18 22:57

View differences:

app/models/user.rb
874 874
    project_ids.map(&:to_i)
875 875
  end
876 876

  
877
  def self.prune(age)
878
    User.where("created_on < ? AND status = ?", Time.now - age, STATUS_REGISTERED).destroy_all
879
  end
880

  
877 881
  protected
878 882

  
879 883
  def validate_password_length
lib/tasks/redmine.rake
40 40
    end
41 41
  end
42 42

  
43
  namespace :users do
44
    desc 'Removes registered users that have not been activated after a number of days. Use DAYS to set the number of days, defaults to 30 days.'
45
    task :prune => :environment do
46
      days = 30
47
      env_days = ENV['DAYS']
48
      if env_days
49
        if env_days.to_i <= 0
50
          abort "Invalid DAYS #{env_days} given. The value must be a integer."
51
        else
52
          days = env_days.to_i
53
        end
54
      end
55
      User.prune(days.days)
56
    end
57
  end
58

  
43 59
  namespace :watchers do
44 60
    desc 'Removes watchers from what they can no longer view.'
45 61
    task :prune => :environment do
test/unit/user_test.rb
1348 1348
    cv2a.reload
1349 1349
    assert_equal @dlopper.id.to_s, cv2a.value
1350 1350
  end
1351

  
1352
  def test_prune_should_destroy_unactivated_old_users
1353
    User.generate!(:status => User::STATUS_REGISTERED, :created_on => 6.days.ago)
1354
    User.generate!(:status => User::STATUS_REGISTERED, :created_on => 7.day.ago)
1355
    User.generate!(:status => User::STATUS_REGISTERED)
1356

  
1357
    assert_difference 'User.count', -2 do
1358
      User.prune(7)
1359
    end
1360
  end
1351 1361
end
(4-4/4)