From 9ddcfc7b3272cbe61099f23a771c13ccb92f7f2f Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Tue, 30 May 2023 19:40:17 +0200 Subject: [PATCH] merge --- .../communication/website/with_connected_objects.rb | 4 +++- app/models/concerns/as_indirect_object.rb | 2 ++ lib/tasks/app.rake | 11 +---------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/models/communication/website/with_connected_objects.rb b/app/models/communication/website/with_connected_objects.rb index 2c3c783fc..82ad076ed 100644 --- a/app/models/communication/website/with_connected_objects.rb +++ b/app/models/communication/website/with_connected_objects.rb @@ -107,6 +107,8 @@ module Communication::Website::WithConnectedObjects # On ne connecte pas le site à lui-même !indirect_object.is_a?(Communication::Website) && # On ne connecte pas les objets directs (en principe ça n'arrive pas) - !indirect_object.try(:is_direct_object?) + !indirect_object.try(:is_direct_object?) && + # On ne connecte pas des objets qui ne sont pas issus de modèles ActiveRecord (comme les composants des blocs) + indirect_object.is_a?(ActiveRecord::Base) end end \ No newline at end of file diff --git a/app/models/concerns/as_indirect_object.rb b/app/models/concerns/as_indirect_object.rb index 7e4ab7a51..58859b131 100644 --- a/app/models/concerns/as_indirect_object.rb +++ b/app/models/concerns/as_indirect_object.rb @@ -54,6 +54,8 @@ module AsIndirectObject protected def direct_sources_from_reference(reference) + # Early-return to ignore contexts without connections (ex: extranets) + return [] unless reference.respond_to?(:is_direct_object?) reference.is_direct_object? ? [reference] # Récupération de la connexion directe : reference.direct_sources_from_existing_connections # Récupération via les connexions des références end diff --git a/lib/tasks/app.rake b/lib/tasks/app.rake index e0bca1fa1..18181a021 100644 --- a/lib/tasks/app.rake +++ b/lib/tasks/app.rake @@ -10,16 +10,7 @@ namespace :app do task fix: :environment do ContentMigration.run Communication::Website.find_each do |website| - # Rebuild connections - website.pages.find_each(&:connect_dependencies) - website.posts.find_each(&:connect_dependencies) - website.categories.find_each(&:connect_dependencies) - website.menus.find_each(&:connect_dependencies) - website.connect(website.about, website) if website.about.present? - - website.destroy_obsolete_connections - website.sync_with_git - website.destroy_obsolete_git_files + MigrateWebsiteConnectionsJob.perform_later(website.id) end end -- GitLab