You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

destroy_projects_job.rb 895B

12345678910111213141516171819202122232425262728293031
  1. # frozen_string_literal: true
  2. class DestroyProjectsJob < ApplicationJob
  3. include Redmine::I18n
  4. def self.schedule(projects_to_delete, user: User.current)
  5. # make the projects disappear immediately
  6. projects_to_delete.each do |project|
  7. project.self_and_descendants.update_all status: Project::STATUS_SCHEDULED_FOR_DELETION
  8. end
  9. perform_later(projects_to_delete.map(&:id), user.id, user.remote_ip)
  10. end
  11. def perform(project_ids, user_id, remote_ip)
  12. user = User.active.find_by_id(user_id)
  13. unless user&.admin?
  14. info "[DestroyProjectsJob] --- User check failed: User #{user_id} triggering projects destroy does not exist anymore or isn't admin/active."
  15. return
  16. end
  17. project_ids.each do |project_id|
  18. DestroyProjectJob.perform_now(project_id, user_id, remote_ip)
  19. end
  20. end
  21. private
  22. def info(*msg)
  23. Rails.logger.info(*msg)
  24. end
  25. end