From ed39a2b29f0472f3091fe3657230592e9236db7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Fri, 8 Dec 2023 13:51:05 +0100 Subject: [PATCH] kwargs --- .../communication/blocks/headings_controller.rb | 7 ++++++- .../admin/communication/blocks_controller.rb | 14 ++++++++++++-- .../admin/communication/contents_controller.rb | 7 ++++++- .../communication/extranets/contacts_controller.rb | 7 ++++++- .../communication/websites/pages_controller.rb | 7 ++++++- .../websites/permalinks_controller.rb | 7 ++++++- app/controllers/admin/users_controller.rb | 7 ++++++- app/services/polymorphic_object_finder.rb | 9 +++++++-- 8 files changed, 55 insertions(+), 10 deletions(-) diff --git a/app/controllers/admin/communication/blocks/headings_controller.rb b/app/controllers/admin/communication/blocks/headings_controller.rb index 2374f946d..d1983eb11 100644 --- a/app/controllers/admin/communication/blocks/headings_controller.rb +++ b/app/controllers/admin/communication/blocks/headings_controller.rb @@ -20,7 +20,12 @@ class Admin::Communication::Blocks::HeadingsController < Admin::Communication::B end def new - @heading.about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block::Heading.permitted_about_types) + @heading.about = PolymorphicObjectFinder.find( + params, + key: :about, + university: current_university, + only: Communication::Block::Heading.permitted_about_types + ) breadcrumb end diff --git a/app/controllers/admin/communication/blocks_controller.rb b/app/controllers/admin/communication/blocks_controller.rb index a83687a49..2e745313d 100644 --- a/app/controllers/admin/communication/blocks_controller.rb +++ b/app/controllers/admin/communication/blocks_controller.rb @@ -18,7 +18,12 @@ class Admin::Communication::BlocksController < Admin::Communication::Application end def new - @block.about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block.permitted_about_types) + @block.about = PolymorphicObjectFinder.find( + params, + key: :about, + university: current_university, + only: Communication::Block.permitted_about_types + ) breadcrumb end @@ -66,7 +71,12 @@ class Admin::Communication::BlocksController < Admin::Communication::Application end def paste - about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block.permitted_about_types) + about = PolymorphicObjectFinder.find( + params, + key: :about, + university: current_university, + only: Communication::Block.permitted_about_types + ) # On réattribue à @block pour bénéficier du calcul dans about_path @block = @block.paste(about) cookies.delete(Communication::Block::BLOCK_COPY_COOKIE, path: '/admin') diff --git a/app/controllers/admin/communication/contents_controller.rb b/app/controllers/admin/communication/contents_controller.rb index da8990934..17f13e68c 100644 --- a/app/controllers/admin/communication/contents_controller.rb +++ b/app/controllers/admin/communication/contents_controller.rb @@ -13,7 +13,12 @@ class Admin::Communication::ContentsController < Admin::Communication::Applicati protected def load_about - @about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Block.permitted_about_types) + @about = PolymorphicObjectFinder.find( + params, + key: :about, + university: current_university, + only: Communication::Block.permitted_about_types + ) raise_403_unless can?(:edit, @about) end end \ No newline at end of file diff --git a/app/controllers/admin/communication/extranets/contacts_controller.rb b/app/controllers/admin/communication/extranets/contacts_controller.rb index ef4c5facb..322316301 100644 --- a/app/controllers/admin/communication/extranets/contacts_controller.rb +++ b/app/controllers/admin/communication/extranets/contacts_controller.rb @@ -53,6 +53,11 @@ class Admin::Communication::Extranets::ContactsController < Admin::Communication protected def load_object - @object = PolymorphicObjectFinder.find(params, :object, current_university, only: Communication::Extranet::Connection.permitted_about_types) + @object = PolymorphicObjectFinder.find( + params, + key: :object, + university: current_university, + only: Communication::Extranet::Connection.permitted_about_types + ) end end diff --git a/app/controllers/admin/communication/websites/pages_controller.rb b/app/controllers/admin/communication/websites/pages_controller.rb index 62d30afac..d50f72ac0 100644 --- a/app/controllers/admin/communication/websites/pages_controller.rb +++ b/app/controllers/admin/communication/websites/pages_controller.rb @@ -134,7 +134,12 @@ class Admin::Communication::Websites::PagesController < Admin::Communication::We protected def load_object - @object = PolymorphicObjectFinder.find(params, :object, current_university, only: [@page.class.direct_connection_permitted_about_type]) + @object = PolymorphicObjectFinder.find( + params, + key: :object, + university: current_university, + only: [@page.class.direct_connection_permitted_about_type] + ) end def breadcrumb diff --git a/app/controllers/admin/communication/websites/permalinks_controller.rb b/app/controllers/admin/communication/websites/permalinks_controller.rb index 0cc701056..7ca26206d 100644 --- a/app/controllers/admin/communication/websites/permalinks_controller.rb +++ b/app/controllers/admin/communication/websites/permalinks_controller.rb @@ -2,7 +2,12 @@ class Admin::Communication::Websites::PermalinksController < Admin::Communicatio def create @path = params['communication_website_permalink']['path'] - @about = PolymorphicObjectFinder.find(params, :about, current_university, only: Communication::Website::Permalink.permitted_about_types) + @about = PolymorphicObjectFinder.find( + params, + key: :about, + university: current_university, + only: Communication::Website::Permalink.permitted_about_types + ) @permalink = @about.add_redirection(@path) end end \ No newline at end of file diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 2c5250e37..4dc7f7af9 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -21,7 +21,12 @@ class Admin::UsersController < Admin::ApplicationController def favorite operation = params[:operation] - about = PolymorphicObjectFinder.find(params, :about, current_university, only: User::Favorite.permitted_about_types) + about = PolymorphicObjectFinder.find( + params, + key: :about, + university: current_university, + only: User::Favorite.permitted_about_types + ) if operation == 'add' current_user.add_favorite(about) else diff --git a/app/services/polymorphic_object_finder.rb b/app/services/polymorphic_object_finder.rb index 51517d8d0..214cc5522 100644 --- a/app/services/polymorphic_object_finder.rb +++ b/app/services/polymorphic_object_finder.rb @@ -1,8 +1,13 @@ class PolymorphicObjectFinder - # @block.about = Polymorphic.find params, :about, current_university, only: ["Communication::Website::Page"] + # @block.about = Polymorphic.find( + # params, + # key: :about, + # university: current_university, + # only: ["Communication::Website::Page"] + # ) # Rails uses ActiveRecord::Inheritance#polymorphic_name to hydrate the about_type. # Example: A Block for a Communication::Website::Page::Home will have about_type = "Communication::Website::Page" - def self.find(params, key, university, only: []) + def self.find(params, key:, university:, only: []) key_id = "#{key}_id".to_sym key_type = "#{key}_type".to_sym model_name = only.any? ? only.detect { |item| item == params[key_type] } : params[key_type] -- GitLab