This repository has been archived by the owner on Oct 27, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
bulk_delete.rake
65 lines (52 loc) · 2.2 KB
/
bulk_delete.rake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
namespace :gitlab do
namespace :cleanup do
desc "GITLAB | Delete all users who are not from domain example.com"
task delete_users_except_email_domain: :environment do |t, args|
## set your domain name here
domain = 'example.com'
## comment out following line
abort("Comment out line #12 in file lib/tasks/bulk_delete.rake to proceed")
## UNCOMMENT following delete all users who never signed in
## users = User.where('email NOT LIKE ? AND sign_in_count = 0 ', '%' + domain).destroy_all
## get all users whose email address doesn't have above domain and they are not admin
users = User.where('email NOT LIKE ? AND admin = false ', '%' + domain)
if users.present?
puts " #{users.size} users found"
users.each do |user|
puts "\n\n#{user.id} - #{user.username} - #{user.email} - #{user.state}"
## Get Project Count
project_count = Project.where('creator_id = ?',user.id).size
#puts "User #{user.id} has #{project_count} projects" unless project_count.zero?
## Get Issues Count
issue_count = Issue.where('author_id = ?',user.id).size
#puts "User #{user.id} has #{issue_count} issues" unless issue_count.zero?
## Get Notes Count
notes_count = Note.where('author_id = ?',user.id).size
#puts "User #{user.id} has #{notes_count} notes" unless notes_count.zero?
## Print Summary
puts "User #{user.id} has #{issue_count} issues, #{notes_count} notes, #{project_count} projects"
## Check safe to delete
if issue_count.zero? and notes_count.zero? and project_count.zero?
## Delete user
puts "Deleting User #{user.id} - #{user.username} - #{user.email}"
user.destroy
else
## Block User
puts "Blocking User #{user.id} - #{user.username} - #{user.email}"
user.state = "blocked"
user.save
end
end #end of users loop
end #end of if
end #end of task
end
end
# ## Get Events Count
# event_count = Event.where('author_id = ?',user.id).size
# puts "User #{user.id} has #{event_count} events"
#
# if event_count.zero?
# puts "User #{user.id} can be SURELY DELETED.\n\n"
# else
# puts "User #{user.id} can be DELETED.\n\n"
# end