From 7598b0a513c73598808c2a78d22dcf26f4859b14 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 12 Jun 2023 22:00:41 +0200 Subject: [PATCH 1/4] remove previous routing sytem code --- .../groupe_instructeurs_controller.rb | 13 ------- app/controllers/users/dossiers_controller.rb | 34 ------------------- app/models/dossier.rb | 8 ----- app/models/procedure.rb | 1 - app/models/routing_engine.rb | 1 - app/views/shared/dossiers/_champs.html.haml | 14 -------- app/views/shared/dossiers/_edit.html.haml | 9 ----- config/initializers/flipper.rb | 1 - config/locales/models/procedure/en.yml | 1 - config/locales/models/procedure/fr.yml | 1 - config/routes.rb | 1 - .../groupe_instructeurs_controller_spec.rb | 12 ------- spec/models/routing_engine_spec.rb | 2 -- .../routing/rules_full_scenario_spec.rb | 1 - 14 files changed, 99 deletions(-) diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index bc7f1c977..0f43c833a 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -282,15 +282,6 @@ module Administrateurs end end - def update_routing_criteria_name - if procedure.update(routing_criteria_name: routing_criteria_name) - flash[:notice] = "Le libellé est maintenant « #{procedure.routing_criteria_name} »." - else - flash[:alert] = "Le libellé du routage doit être rempli." - end - redirect_to admin_procedure_groupe_instructeurs_path(procedure) - end - def update_instructeurs_self_management_enabled procedure.update!(instructeurs_self_management_enabled_params) @@ -415,10 +406,6 @@ module Administrateurs .order(:email) end - def routing_criteria_name - params[:procedure][:routing_criteria_name] - end - def available_instructeur_emails all = current_administrateur.instructeurs.map(&:email) assigned = groupe_instructeur.instructeurs.map(&:email) diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 31a504023..ae6ca9e07 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -487,32 +487,6 @@ module Users redirect_to dossier_path(dossier) end - def should_change_groupe_instructeur? - if params[:dossier].key?(:groupe_instructeur_id) - groupe_instructeur_id = params[:dossier][:groupe_instructeur_id] - if groupe_instructeur_id.nil? - @dossier.groupe_instructeur_id.present? - else - @dossier.groupe_instructeur_id != groupe_instructeur_id.to_i - end - end - end - - def groupe_instructeur_from_params - groupe_instructeur_id = params[:dossier][:groupe_instructeur_id] - if groupe_instructeur_id.present? - @dossier.procedure.groupe_instructeurs.find(groupe_instructeur_id) - end - end - - def should_fill_groupe_instructeur? - !@dossier.procedure.routing_enabled? && @dossier.groupe_instructeur_id.nil? - end - - def defaut_groupe_instructeur - @dossier.procedure.defaut_groupe_instructeur - end - def update_dossier_and_compute_errors errors = [] @dossier.assign_attributes(champs_public_params) @@ -523,10 +497,6 @@ module Users errors += format_errors(errors: @dossier.errors) end - if should_change_groupe_instructeur? - @dossier.assign_to_groupe_instructeur(groupe_instructeur_from_params) - end - errors end @@ -537,10 +507,6 @@ module Users errors += format_errors(errors: @dossier.errors) errors += format_errors(errors: @dossier.check_mandatory_and_visible_champs) - if should_fill_groupe_instructeur? - @dossier.assign_to_groupe_instructeur(defaut_groupe_instructeur) - end - RoutingEngine.compute(@dossier) errors diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 5337e9215..d582d2924 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -664,14 +664,6 @@ class Dossier < ApplicationRecord procedure.discarded? || (brouillon? && !procedure.dossier_can_transition_to_en_construction?) end - def show_groupe_instructeur_details? - procedure.routing_enabled? && groupe_instructeur.present? && (!procedure.feature_enabled?(:procedure_routage_api) || !defaut_groupe_instructeur?) && !procedure.feature_enabled?(:routing_rules) - end - - def show_groupe_instructeur_selector? - procedure.routing_enabled? && !procedure.feature_enabled?(:procedure_routage_api) && !procedure.feature_enabled?(:routing_rules) - end - def assign_to_groupe_instructeur(groupe_instructeur, author = nil) return if groupe_instructeur.present? && groupe_instructeur.procedure != procedure return if self.groupe_instructeur == groupe_instructeur diff --git a/app/models/procedure.rb b/app/models/procedure.rb index bb007e4c5..f031f05b6 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -356,7 +356,6 @@ class Procedure < ApplicationRecord validates :api_entreprise_token, jwt_token: true, allow_blank: true validates :api_particulier_token, format: { with: /\A[A-Za-z0-9\-_=.]{15,}\z/ }, allow_blank: true validate :validate_auto_archive_on_in_the_future, if: :will_save_change_to_auto_archive_on? - validates :routing_criteria_name, presence: true, allow_blank: false before_save :update_juridique_required after_initialize :ensure_path_exists diff --git a/app/models/routing_engine.rb b/app/models/routing_engine.rb index 385acda3b..2fa1a9032 100644 --- a/app/models/routing_engine.rb +++ b/app/models/routing_engine.rb @@ -1,6 +1,5 @@ module RoutingEngine def self.compute(dossier) - return if !dossier.procedure.feature_enabled?(:routing_rules) return if dossier.forced_groupe_instructeur matching_groupe = dossier.procedure.groupe_instructeurs.active.reject(&:routing_to_configure?).find do |gi| diff --git a/app/views/shared/dossiers/_champs.html.haml b/app/views/shared/dossiers/_champs.html.haml index cfc503473..80f2cebed 100644 --- a/app/views/shared/dossiers/_champs.html.haml +++ b/app/views/shared/dossiers/_champs.html.haml @@ -1,15 +1 @@ -- if dossier.show_groupe_instructeur_details? - .fr-my-4v.fr-px-4v - .flex - - %p.champ-label.flex-grow= dossier.procedure.routing_criteria_name - %p.fr-mb-0.fr-text--xs - - if demande_seen_at && dossier.groupe_instructeur_updated_at && demande_seen_at < dossier.groupe_instructeur_updated_at - %span.fr-badge.fr-badge--sm{ class: badge_class_if_unseen(demande_seen_at, dossier.groupe_instructeur_updated_at) } - = t(:updated_at, scope: [:views, :shared, :dossiers, :form], datetime: try_format_datetime(dossier.groupe_instructeur_updated_at)) - - .champ-content{ class: highlight_if_unseen_class(demande_seen_at, dossier.groupe_instructeur_updated_at) } - %p= dossier.groupe_instructeur.label - - = render ViewableChamp::SectionComponent.new(champs: champs, demande_seen_at: demande_seen_at, profile: profile) diff --git a/app/views/shared/dossiers/_edit.html.haml b/app/views/shared/dossiers/_edit.html.haml index 682a79d3a..3607a123d 100644 --- a/app/views/shared/dossiers/_edit.html.haml +++ b/app/views/shared/dossiers/_edit.html.haml @@ -19,15 +19,6 @@ - if dossier.procedure.notice.attached? = render Dsfr::DownloadComponent.new(attachment: dossier.procedure.notice , url: notice_url(dossier.procedure), name: t("views.shared.dossiers.edit.notice"), ephemeral_link: administrateur_signed_in?) - - if dossier.show_groupe_instructeur_selector? - %span{ data: { controller: 'autosave' } } - = f.label :groupe_instructeur_id do - = dossier.procedure.routing_criteria_name - %span.mandatory * - = f.select :groupe_instructeur_id, - dossier.procedure.groupe_instructeurs.active.map { |gi| [gi.label, gi.id] }, - { include_blank: dossier.brouillon? } - = render EditableChamp::SectionComponent.new(champs: dossier_for_editing.champs_public) - if dossier.pending_correction? diff --git a/config/initializers/flipper.rb b/config/initializers/flipper.rb index 3df08aafe..c0aec97b9 100644 --- a/config/initializers/flipper.rb +++ b/config/initializers/flipper.rb @@ -17,7 +17,6 @@ features = [ :dossier_pdf_vide, :hide_instructeur_email, :procedure_routage_api, - :routing_rules, :groupe_instructeur_api_hack, :rerouting ] diff --git a/config/locales/models/procedure/en.yml b/config/locales/models/procedure/en.yml index fabfef04c..6437d9905 100644 --- a/config/locales/models/procedure/en.yml +++ b/config/locales/models/procedure/en.yml @@ -31,7 +31,6 @@ en: declarative_with_state/en_instruction: Instruction declarative_with_state/accepte: Accepted api_particulier_token: Token API Particulier - routing_criteria_name: Routing criteria name initiated_mail: File sorted for processing notification email received_mail: File submitted notification email closed_mail: File sorted as accepted notification email diff --git a/config/locales/models/procedure/fr.yml b/config/locales/models/procedure/fr.yml index 6f6b49cd9..0de138530 100644 --- a/config/locales/models/procedure/fr.yml +++ b/config/locales/models/procedure/fr.yml @@ -37,7 +37,6 @@ fr: declarative_with_state/en_instruction: En instruction declarative_with_state/accepte: Accepté api_particulier_token: Jeton API Particulier - routing_criteria_name: Nomination du routage initiated_mail: L’email de notification de passage de dossier en instruction received_mail: L’email de notification de dépôt de dossier closed_mail: L’email de notification d’acceptation de dossier diff --git a/config/routes.rb b/config/routes.rb index ab883f5fc..1ff48ea0b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -542,7 +542,6 @@ Rails.application.routes.draw do get 'simple_routing' post 'create_simple_routing' delete 'destroy_all_groups_but_defaut' - patch 'update_routing_criteria_name' patch 'update_instructeurs_self_management_enabled' post 'import' get 'export_groupe_instructeurs' diff --git a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb index a2318f14e..55c14964e 100644 --- a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb @@ -692,18 +692,6 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do end end - describe '#update_routing_criteria_name' do - before do - patch :update_routing_criteria_name, - params: { - procedure_id: procedure.id, - procedure: { routing_criteria_name: 'new name !' } - } - end - - it { expect(procedure.reload.routing_criteria_name).to eq('new name !') } - end - describe '#create_simple_routing' do let!(:procedure3) do create(:procedure, diff --git a/spec/models/routing_engine_spec.rb b/spec/models/routing_engine_spec.rb index cf90dddc8..ef70eb589 100644 --- a/spec/models/routing_engine_spec.rb +++ b/spec/models/routing_engine_spec.rb @@ -1,8 +1,6 @@ describe RoutingEngine, type: :model do include Logic - before { Flipper.enable(:routing_rules, procedure) } - describe '.compute' do let(:procedure) do create(:procedure, diff --git a/spec/system/routing/rules_full_scenario_spec.rb b/spec/system/routing/rules_full_scenario_spec.rb index 94a1b9082..514d9c3d4 100644 --- a/spec/system/routing/rules_full_scenario_spec.rb +++ b/spec/system/routing/rules_full_scenario_spec.rb @@ -20,7 +20,6 @@ describe 'The routing with rules', js: true do let(:artistique_user) { create(:user, password: password) } before do - Flipper.enable(:routing_rules, procedure) procedure.defaut_groupe_instructeur.instructeurs << administrateur.instructeur end From a7babb2d3d51b8247ccf1aa5de08b970aafefa73 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Tue, 20 Jun 2023 14:56:51 +0200 Subject: [PATCH 2/4] remove unsused translations --- .../groupe_instructeurs/fr.yml | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/config/locales/views/administrateurs/groupe_instructeurs/fr.yml b/config/locales/views/administrateurs/groupe_instructeurs/fr.yml index 0a2011b68..0edc903fe 100644 --- a/config/locales/views/administrateurs/groupe_instructeurs/fr.yml +++ b/config/locales/views/administrateurs/groupe_instructeurs/fr.yml @@ -58,37 +58,3 @@ fr: procedures: Démarches simple_routing: procedures: Démarches - edit: - routing: - title: Libellé de la liste de groupes - group_management: - title: Gestion des Groupes - delete: supprimer le groupe - delete_confirmation: Êtes-vous sûr de vouloir supprimer le groupe "%{group_name}" - move_files: - zero: déplacer les dossiers en brouillon - one: déplacer un dossier - other: déplacer les %{count} dossiers - move_files_confirmation: Réaffecter les dossiers à un autre groupe afin de pouvoir le supprimer - add_a_group: - title: Ajouter un nom de groupe - notice: Ce groupe sera un choix de la liste "%{routing_criteria_name}" - csv_import: - link_text: exemple de fichier - instructeurs_file_path: /csv/import-instructeurs-test.csv - groupes_file_path: /csv/fr/import-groupe-test.csv - view: voir - set_up: paramétrer - button: - add_group: Ajouter le groupe - rename: Renommer - existing_groupe: - one: "%{count} groupe existe" - other: "%{count} groupes existent" - routing: - title: Routage - notice_html: | - Le routage permet d’acheminer les dossiers vers différents groupes d’instructeurs. Il s’active automatiquement dès qu’une démarche compte au moins deux groupes actifs. - button: - self_managment_toggle: Activer l’autogestion des instructeurs - add_group: Ajouter le groupe From 7fe4ec67c3e112abe4d719d44770fad3ff402763 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Tue, 20 Jun 2023 15:46:12 +0200 Subject: [PATCH 3/4] update previous routing system tests --- spec/models/instructeur_spec.rb | 2 +- .../shared/dossiers/_champs.html.haml_spec.rb | 9 +------- .../shared/dossiers/_edit.html.haml_spec.rb | 23 +++++++++++-------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/spec/models/instructeur_spec.rb b/spec/models/instructeur_spec.rb index c15045aff..5a526587a 100644 --- a/spec/models/instructeur_spec.rb +++ b/spec/models/instructeur_spec.rb @@ -242,7 +242,7 @@ describe Instructeur, type: :model do end describe '#notifications_for_groupe_instructeurs' do - # a procedure, one group, 2 instructeurs + # a procedure, two groups, 2 instructeurs let(:procedure) { create(:simple_procedure, :routee, :with_type_de_champ_private, :for_individual) } let(:gi_p1) { procedure.groupe_instructeurs.last } let!(:dossier) { create(:dossier, :en_construction, :with_individual, :followed, procedure: procedure, groupe_instructeur: gi_p1) } diff --git a/spec/views/shared/dossiers/_champs.html.haml_spec.rb b/spec/views/shared/dossiers/_champs.html.haml_spec.rb index a76bfb578..9216b52ee 100644 --- a/spec/views/shared/dossiers/_champs.html.haml_spec.rb +++ b/spec/views/shared/dossiers/_champs.html.haml_spec.rb @@ -59,18 +59,11 @@ describe 'shared/dossiers/champs', type: :view do context "with a routed procedure" do let(:procedure) do - create(:procedure, - :routee, - routing_criteria_name: 'departement') + create(:procedure, :routee) end let(:dossier) { create(:dossier, :en_construction, procedure: procedure) } let(:champs) { [] } - it "renders the routing criteria name and its value" do - expect(subject).to include(procedure.routing_criteria_name) - expect(subject).to include(dossier.groupe_instructeur.label) - end - context "with seen_at" do let(:dossier) { create(:dossier) } let(:nouveau_groupe_instructeur) { create(:groupe_instructeur, procedure: dossier.procedure) } diff --git a/spec/views/shared/dossiers/_edit.html.haml_spec.rb b/spec/views/shared/dossiers/_edit.html.haml_spec.rb index ae5108669..9987ad34c 100644 --- a/spec/views/shared/dossiers/_edit.html.haml_spec.rb +++ b/spec/views/shared/dossiers/_edit.html.haml_spec.rb @@ -132,16 +132,19 @@ describe 'shared/dossiers/edit', type: :view do end context 'with a routed procedure' do - let(:procedure) do - create(:procedure, - :routee, - routing_criteria_name: 'departement') + let(:procedure_routee) do + create(:procedure, :routee) end - let(:dossier) { create(:dossier, procedure: procedure) } - let(:champs) { [] } + let!(:drop_down_tdc) { create(:type_de_champ_drop_down_list, procedure: procedure_routee, drop_down_options: options) } + let(:options) { procedure_routee.groupe_instructeurs.pluck(:label) } + let(:dossier) { create(:dossier, procedure: procedure_routee) } + let(:champs) { [champ_drop_down] } + let(:champ_drop_down) { create(:champ_drop_down_list, dossier: dossier, type_de_champ: drop_down_tdc, value: options.first) } - it 'renders the routing criteria name and its value' do - expect(subject).to have_field(procedure.routing_criteria_name) + before { dossier.champs_public << champs } + + it 'renders the libelle of the type de champ used for routing' do + expect(subject).to include(champ_drop_down.libelle) end context 'when groupe instructeur is selected' do @@ -149,8 +152,8 @@ describe 'shared/dossiers/edit', type: :view do dossier.groupe_instructeur = dossier.procedure.defaut_groupe_instructeur end - it 'renders the routing criteria name and its value' do - expect(subject).to have_field(procedure.routing_criteria_name) + it 'renders the routing libelle and its value' do + expect(subject).to include(champ_drop_down.libelle) expect(subject).to include(dossier.groupe_instructeur.label) end end From c82727120c81348a94348c259ccdc37ab6e8245a Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 3 Jul 2023 14:33:36 +0200 Subject: [PATCH 4/4] feat(DB): ignore migrated_champ_routage_columns --- app/models/dossier.rb | 2 ++ app/models/procedure.rb | 9 ++++++++- app/models/procedure_revision.rb | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index d582d2924..9bc76d08d 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -56,6 +56,8 @@ class Dossier < ApplicationRecord include DossierSearchableConcern include DossierSectionsConcern + self.ignored_columns += [:migrated_champ_routage] + enum state: { brouillon: 'brouillon', en_construction: 'en_construction', diff --git a/app/models/procedure.rb b/app/models/procedure.rb index f031f05b6..488d3465d 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -69,7 +69,14 @@ class Procedure < ApplicationRecord include Discard::Model self.discard_column = :hidden_at - self.ignored_columns += [:direction, :durees_conservation_required, :cerfa_flag, :test_started_at, :lien_demarche] + self.ignored_columns += [ + :direction, + :durees_conservation_required, + :cerfa_flag, + :test_started_at, + :lien_demarche, + :migrated_champ_routage + ] default_scope -> { kept } diff --git a/app/models/procedure_revision.rb b/app/models/procedure_revision.rb index 0de68a045..20decec4c 100644 --- a/app/models/procedure_revision.rb +++ b/app/models/procedure_revision.rb @@ -13,6 +13,7 @@ # class ProcedureRevision < ApplicationRecord self.implicit_order_column = :created_at + self.ignored_columns += [:migrated_champ_routage] belongs_to :procedure, -> { with_discarded }, inverse_of: :revisions, optional: false belongs_to :dossier_submitted_message, inverse_of: :revisions, optional: true, dependent: :destroy