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