Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions app/jobs/destroy_university_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class DestroyUniversityJob < ApplicationJob
queue_as :whales

def perform(university)
# Destroy all the websites of the university
university.websites.each do |website|
Communication::Website::DestroyWebsiteJob.perform_now(website)
end
Osuny::Paranoid::OBJECTS_NOT_PARANOID.each do |klass|
klass.where(university_id: university.id).destroy_all
end

# Custom logic for users as we need to prevent server admin from being destroyed of all universities
User.where(university_id: university.id).find_each do |user|
user.skip_server_admin_sync = true if user.server_admin?
user.destroy
end

Osuny::Paranoid::OBJECTS_PARANOID.each do |klass|
klass.with_deleted
.where(university: university.id)
.find_each(&:really_destroy!)
end
university.destroy
end

end
75 changes: 75 additions & 0 deletions app/services/osuny/paranoid.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
class Osuny::Paranoid

OBJECTS_NOT_PARANOID = [
Search,
Communication::Media::Context,
Communication::Media::Localization,
Communication::Media,
Communication::Media::Category::Localization,
Communication::Media::Category,
Communication::Media::Collection::Localization,
Communication::Media::Collection,
Communication::Extranet::Document::Localization,
Communication::Extranet::Document,
Communication::Extranet::Document::Category::Localization,
Communication::Extranet::Document::Category,
Communication::Extranet::Document::Kind::Localization,
Communication::Extranet::Document::Kind,
Communication::Extranet::Post::Category::Localization,
Communication::Extranet::Post::Category,
Communication::Extranet::Post::Localization,
Communication::Extranet::Post,
Communication::Extranet::Connection,
Communication::Extranet::Localization,
Communication::Extranet,
Education::Program::Category::Localization,
Education::Program::Category,
University::Organization::Category::Localization,
University::Organization::Category,
University::Person::Category::Localization,
University::Person::Category,
University::App,
EmergencyMessage,
Import
].freeze
OBJECTS_PARANOID = [
Administration::Location::Localization,
Administration::Location,
Administration::AcademicYear::Localization,
Administration::AcademicYear,
Administration::Cohort::Localization,
Administration::Cohort,
Education::Diploma::Localization,
Education::Diploma,
Education::Program::Localization,
Education::Program,
Education::School::Localization,
Education::School,
Research::Journal::Paper::Kind::Localization,
Research::Journal::Paper::Kind,
Research::Journal::Volume::Localization,
Research::Journal::Volume,
Research::Journal::Paper::Localization,
Research::Journal::Paper,
Research::Journal::Localization,
Research::Journal,
Research::Laboratory::Axis::Localization,
Research::Laboratory::Axis,
Research::Thesis::Localization,
Research::Thesis,
Research::Laboratory::Localization,
Research::Laboratory,
University::Organization::Localization,
University::Organization,
University::Person::Experience::Localization,
University::Person::Experience,
University::Person::Involvement::Localization,
University::Person::Involvement,
University::Role::Localization,
University::Role,
University::Person::Localization,
University::Person,
Communication::Block # We finish by blocks to avoid foreign key issues
].freeze

end
Loading