From da422b9a378e592deac73e67da3a0e1af4047d85 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com>
Date: Mon, 25 Apr 2022 12:24:22 +0200
Subject: [PATCH] #248

---
 app/models/communication/block/template.rb               | 5 -----
 .../communication/block/template/call_to_action.rb       | 2 +-
 app/models/communication/block/template/gallery.rb       | 2 +-
 app/models/communication/block/template/partner.rb       | 5 ++++-
 app/models/communication/block/template/testimonial.rb   | 2 +-
 app/models/communication/website.rb                      | 1 +
 app/models/communication/website/with_dependencies.rb    | 8 ++++++++
 app/models/university/organization.rb                    | 9 +++++++++
 8 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/app/models/communication/block/template.rb b/app/models/communication/block/template.rb
index b759d8326..dc9b01436 100644
--- a/app/models/communication/block/template.rb
+++ b/app/models/communication/block/template.rb
@@ -7,17 +7,12 @@ class Communication::Block::Template
 
   def git_dependencies
     unless @git_dependencies
-      @git_dependencies = active_storage_blobs
       build_git_dependencies
       @git_dependencies.uniq!
     end
     @git_dependencies
   end
 
-  def active_storage_blobs
-    []
-  end
-
   protected
 
   def build_git_dependencies
diff --git a/app/models/communication/block/template/call_to_action.rb b/app/models/communication/block/template/call_to_action.rb
index 8123bb6b9..c2592194b 100644
--- a/app/models/communication/block/template/call_to_action.rb
+++ b/app/models/communication/block/template/call_to_action.rb
@@ -1,6 +1,6 @@
 class Communication::Block::Template::CallToAction < Communication::Block::Template
   def build_git_dependencies
-    # image Ơ dƩclarer
+    add_dependency image&.blob
   end
 
   def text
diff --git a/app/models/communication/block/template/gallery.rb b/app/models/communication/block/template/gallery.rb
index da9c83d52..834169a4d 100644
--- a/app/models/communication/block/template/gallery.rb
+++ b/app/models/communication/block/template/gallery.rb
@@ -1,6 +1,6 @@
 class Communication::Block::Template::Gallery < Communication::Block::Template
   def build_git_dependencies
-    # Blobs already added in Communication::Block::Template#git_dependencies
+    add_dependency active_storage_blobs
   end
 
   def images_with_alt
diff --git a/app/models/communication/block/template/partner.rb b/app/models/communication/block/template/partner.rb
index 2bc364e06..930e858e9 100644
--- a/app/models/communication/block/template/partner.rb
+++ b/app/models/communication/block/template/partner.rb
@@ -1,7 +1,10 @@
 class Communication::Block::Template::Partner < Communication::Block::Template
   def build_git_dependencies
-    # Blobs already added in Communication::Block::Template#git_dependencies
+    add_dependency active_storage_blobs
     add_dependency organizations
+    organizations.each do |organization|
+      add_dependency organization.active_storage_blobs
+    end
   end
 
   def partners
diff --git a/app/models/communication/block/template/testimonial.rb b/app/models/communication/block/template/testimonial.rb
index b72a81aa6..85a231cdd 100644
--- a/app/models/communication/block/template/testimonial.rb
+++ b/app/models/communication/block/template/testimonial.rb
@@ -1,6 +1,6 @@
 class Communication::Block::Template::Testimonial < Communication::Block::Template
   def build_git_dependencies
-    # Blobs already added in Communication::Block::Template#git_dependencies
+    add_dependency active_storage_blobs
   end
 
   def testimonials
diff --git a/app/models/communication/website.rb b/app/models/communication/website.rb
index 266ba4915..339043d19 100644
--- a/app/models/communication/website.rb
+++ b/app/models/communication/website.rb
@@ -62,6 +62,7 @@ class Communication::Website < ApplicationRecord
     dependencies += pages + pages.map(&:active_storage_blobs).flatten
     dependencies += posts + posts.map(&:active_storage_blobs).flatten if has_communication_posts?
     dependencies += people_with_facets + people.map(&:active_storage_blobs).flatten if has_persons?
+    dependencies += organizations_in_blocks + organizations_in_blocks.map(&:active_storage_blobs).flatten if has_organizations_in_blocks?
     dependencies += [categories] if has_communication_categories?
     dependencies += about.git_dependencies(website) if about.present?
     dependencies
diff --git a/app/models/communication/website/with_dependencies.rb b/app/models/communication/website/with_dependencies.rb
index 2ee6c344a..151b447cd 100644
--- a/app/models/communication/website/with_dependencies.rb
+++ b/app/models/communication/website/with_dependencies.rb
@@ -61,6 +61,10 @@ module Communication::Website::WithDependencies
     blocks_dependencies.reject { |dependency| !dependency.is_a? University::Person }
   end
 
+  def organizations_in_blocks
+    blocks_dependencies.reject { |dependency| !dependency.is_a? University::Organization }
+  end
+
   def people_with_facets_in_blocks
     blocks_dependencies.reject { |dependency| !dependency.class.to_s.start_with?('University::Person') }
   end
@@ -122,6 +126,10 @@ module Communication::Website::WithDependencies
     people_in_blocks.compact.any?
   end
 
+  def has_organizations_in_blocks?
+    organizations_in_blocks.compact.any?
+  end
+
   def has_persons?
     has_authors? || has_administrators? || has_researchers? || has_teachers? || has_people_in_blocks?
   end
diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb
index 7dd420162..f29dbcb81 100644
--- a/app/models/university/organization.rb
+++ b/app/models/university/organization.rb
@@ -54,6 +54,15 @@ class University::Organization < ApplicationRecord
     government: 30
   }
 
+  def git_dependencies(website)
+    dependencies = website.menus.to_a
+    if for_website?(website)
+      dependencies << self
+      dependencies.concat active_storage_blobs
+    end
+    dependencies
+  end
+
   def websites
     university.communication_websites
   end
-- 
GitLab