diff --git a/app/models/concerns/with_git.rb b/app/models/concerns/with_git.rb index 0b6845c2e1381f48f5c50a4c527cc665a2e28ce0..2da1884f0aa962081594b1faf6f41e69ea5e68d6 100644 --- a/app/models/concerns/with_git.rb +++ b/app/models/concerns/with_git.rb @@ -84,6 +84,13 @@ module WithGit end end + def dependencies_through_blocks(website) + # We select all blocks having this object as dependency + blocks = website.blocks.select { |block| in? block.git_dependencies } + # We map them to their parent object (program, page, etc.) + blocks.map(&:about).uniq.compact + end + def websites_for_self if is_a? Communication::Website [self] diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb index 9e8a37796ceef160aa30e9facdeeee163b6bdd10..bfc568b5f51d4c7a3fa330c8e555011699db9087 100644 --- a/app/models/university/organization.rb +++ b/app/models/university/organization.rb @@ -79,6 +79,7 @@ class University::Organization < ApplicationRecord dependencies.concat active_storage_blobs end dependencies += website.menus.to_a + dependencies += dependencies_through_blocks(website) if in_block_dependencies?(website) dependencies end diff --git a/app/models/university/person.rb b/app/models/university/person.rb index 6e497a1bf0a4bddec8d4bf6faf999f4961a78f5b..ae8ee83c2424ef43a6aa8c436c82234a5a56cc68 100644 --- a/app/models/university/person.rb +++ b/app/models/university/person.rb @@ -172,6 +172,7 @@ class University::Person < ApplicationRecord dependencies << researcher if researcher.for_website?(website) dependencies << teacher if teacher.for_website?(website) dependencies += website.menus.to_a + dependencies += dependencies_through_blocks(website) if in_block_dependencies?(website) dependencies end