demarches-normaliennes/lib/tasks/support.rake

64 lines
1.7 KiB
Ruby
Raw Normal View History

require Rails.root.join("lib", "tasks", "task_helper")
namespace :support do
2018-06-27 12:38:38 +02:00
desc <<~EOD
2018-10-04 11:59:27 +02:00
Delete the user account for a given USER_EMAIL.
2018-06-27 12:38:38 +02:00
Only works if the user has no dossier where the instruction has started.
EOD
task delete_user_account: :environment do
2018-10-04 11:59:27 +02:00
user_email = ENV['USER_EMAIL']
if user_email.nil?
fail "Must specify a USER_EMAIL"
2018-06-27 12:38:38 +02:00
end
2018-10-04 11:59:27 +02:00
user = User.find_by(email: user_email)
2018-06-27 12:38:38 +02:00
if user.dossiers.state_instruction_commencee.any?
fail "Cannot delete this user because instruction has started for some dossiers"
end
2018-10-01 14:20:14 +02:00
user.dossiers.each(&:delete_and_keep_track)
2018-06-27 12:38:38 +02:00
user.destroy
end
2018-10-05 19:05:55 +02:00
desc <<~EOD
Change the SIRET for a given dossier (specified by DOSSIER_ID)
EOD
task update_dossier_siret: :environment do
siret_number = ENV['SIRET']
dossier_id = ENV['DOSSIER_ID']
if siret_number.nil?
fail "Must specify a SIRET"
end
siret_number = siret_number.dup # Unfreeze the string
siret = Siret.new(siret: siret_number)
if siret.invalid?
fail siret.errors.full_messages.to_sentence
end
dossier = Dossier.find(dossier_id)
EtablissementUpdateJob.perform_now(dossier, siret_number)
end
2018-10-05 19:11:22 +02:00
desc <<~EOD
Change a users mail from OLD_EMAIL to NEW_EMAIL.
Also works for administrateurs and instructeurs.
EOD
task change_user_email: :environment do
old_email = ENV['OLD_EMAIL']
new_email = ENV['NEW_EMAIL']
if User.find_by(email: new_email).present?
fail "There is an existing account for #{new_email}, not overwriting"
end
user = User.find_by(email: old_email)
if user.nil?
fail "Couldnt find existing account for #{old_email}"
end
user.update(email: new_email)
end
end