From 5fd41bbfd93010f9fab25496cdcb949ca3d643c0 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Tue, 29 Sep 2020 16:27:40 +0200 Subject: [PATCH 01/11] disable dependabot --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6d3c8e191..8832f85e1 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,6 +5,7 @@ version: 2 updates: - package-ecosystem: "bundler" directory: "/" # Location of package manifests + open-pull-requests-limit: 0 # disabled for now schedule: interval: "daily" From a55be55c6ac5e7abccab79965dcf94750b123ea4 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Tue, 29 Sep 2020 13:30:05 +0200 Subject: [PATCH 02/11] Add mandatory * to secondary value --- .../editable_champs/_linked_drop_down_list.html.haml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/shared/dossiers/editable_champs/_linked_drop_down_list.html.haml b/app/views/shared/dossiers/editable_champs/_linked_drop_down_list.html.haml index 569f03a85..8f1a154e4 100644 --- a/app/views/shared/dossiers/editable_champs/_linked_drop_down_list.html.haml +++ b/app/views/shared/dossiers/editable_champs/_linked_drop_down_list.html.haml @@ -4,7 +4,10 @@ { required: champ.mandatory? }, { data: { secondary_options: champ.secondary_options } } %span - = form.label :secondary_value, "Valeur secondaire dépendant de la première", class: 'hidden' + = form.label :secondary_value, class: 'hidden' do + Valeur secondaire dépendant de la première + - if champ.mandatory? + %span.mandatory * = form.select :secondary_value, champ.secondary_options[champ.primary_value], { required: champ.mandatory? }, From 9714b607aa859baee352a0867eaac33820e7fa07 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Tue, 29 Sep 2020 15:56:38 +0200 Subject: [PATCH 03/11] ensure valid excel worksheet names --- app/services/procedure_export_service.rb | 8 +++++--- spec/services/procedure_export_service_spec.rb | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/services/procedure_export_service.rb b/app/services/procedure_export_service.rb index 5aa7a67de..b39c713e7 100644 --- a/app/services/procedure_export_service.rb +++ b/app/services/procedure_export_service.rb @@ -73,10 +73,12 @@ class ProcedureExportService { instances: table.last, sheet_name: table.first } end.merge(DEFAULT_STYLES) - # transliterate: convert to ASCII characteres + # transliterate: convert to ASCII characters # to ensure truncate respects 30 bytes - options[:sheet_name] = I18n.transliterate(options[:sheet_name], '') - .truncate(30, omission: '') + # /\*?[] are invalid Excel worksheet characters + options[:sheet_name] = I18n.transliterate( + ActiveStorage::Filename.new(options[:sheet_name].delete('[]*?')).sanitized, '', locale: :en + ).truncate(30, omission: '') options end diff --git a/spec/services/procedure_export_service_spec.rb b/spec/services/procedure_export_service_spec.rb index 930021394..3ab64fca4 100644 --- a/spec/services/procedure_export_service_spec.rb +++ b/spec/services/procedure_export_service_spec.rb @@ -359,7 +359,7 @@ describe ProcedureExportService do context 'with long libelle composed of utf8 characteres' do before do procedure.types_de_champ.each do |c| - c.update!(libelle: "#{c.id} - éééé ééé ééé ééééééé ééééééé ééééééé éééééééé. ééé éé éééééééé éé ééé. ééééé éééééééé ééé ééé.") + c.update!(libelle: "#{c.id} - éééé ééé ééé ééééééé ???? ééééééé éééééééé. ééé éé éééééééé éé ééé. ééééé éééééééé ééé ééé.") end champ_repetition.champs.each do |c| c.type_de_champ.update!(libelle: "#{c.id} - Quam rem nam maiores numquam dolorem nesciunt. Cum et possimus et aut. Fugit voluptas qui qui.") From 3fa628235eb2e001687ac4cb44de082d05570c90 Mon Sep 17 00:00:00 2001 From: Keirua Date: Tue, 29 Sep 2020 17:29:36 +0200 Subject: [PATCH 04/11] Nettoyage de I18n.transliterate pour les noms de feuilles d'exports Co-authored-by: LeSim --- app/services/procedure_export_service.rb | 6 +++--- spec/services/procedure_export_service_spec.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/procedure_export_service.rb b/app/services/procedure_export_service.rb index b39c713e7..ff4ecb179 100644 --- a/app/services/procedure_export_service.rb +++ b/app/services/procedure_export_service.rb @@ -76,9 +76,9 @@ class ProcedureExportService # transliterate: convert to ASCII characters # to ensure truncate respects 30 bytes # /\*?[] are invalid Excel worksheet characters - options[:sheet_name] = I18n.transliterate( - ActiveStorage::Filename.new(options[:sheet_name].delete('[]*?')).sanitized, '', locale: :en - ).truncate(30, omission: '') + options[:sheet_name] = I18n.transliterate(options[:sheet_name], '', locale: :en) + .delete('/\*?[]') + .truncate(30, omission: '') options end diff --git a/spec/services/procedure_export_service_spec.rb b/spec/services/procedure_export_service_spec.rb index 3ab64fca4..eadd53f61 100644 --- a/spec/services/procedure_export_service_spec.rb +++ b/spec/services/procedure_export_service_spec.rb @@ -359,7 +359,7 @@ describe ProcedureExportService do context 'with long libelle composed of utf8 characteres' do before do procedure.types_de_champ.each do |c| - c.update!(libelle: "#{c.id} - éééé ééé ééé ééééééé ???? ééééééé éééééééé. ééé éé éééééééé éé ééé. ééééé éééééééé ééé ééé.") + c.update!(libelle: "#{c.id} - ?/[] ééé ééé ééééééé ééééééé éééééééé. ééé éé éééééééé éé ééé. ééééé éééééééé ééé ééé.") end champ_repetition.champs.each do |c| c.type_de_champ.update!(libelle: "#{c.id} - Quam rem nam maiores numquam dolorem nesciunt. Cum et possimus et aut. Fugit voluptas qui qui.") From 2a69e2fbebe0445a8aa69fafd2806eefd808ad2d Mon Sep 17 00:00:00 2001 From: kara Diaby Date: Thu, 24 Sep 2020 14:36:22 +0200 Subject: [PATCH 05/11] fix services choice into a procedure --- app/controllers/new_administrateur/procedures_controller.rb | 1 + app/views/new_administrateur/procedures/show.html.haml | 4 ++-- .../new_administrateur/procedures/show.html.haml_spec.rb | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/new_administrateur/procedures_controller.rb b/app/controllers/new_administrateur/procedures_controller.rb index 9715e8832..ac9c15f99 100644 --- a/app/controllers/new_administrateur/procedures_controller.rb +++ b/app/controllers/new_administrateur/procedures_controller.rb @@ -54,6 +54,7 @@ module NewAdministrateur def show @procedure = current_administrateur.procedures.find(params[:id]) + @current_administrateur = current_administrateur if @procedure.brouillon? @procedure_lien = commencer_test_url(path: @procedure.path) else diff --git a/app/views/new_administrateur/procedures/show.html.haml b/app/views/new_administrateur/procedures/show.html.haml index 455adae5f..af87662ef 100644 --- a/app/views/new_administrateur/procedures/show.html.haml +++ b/app/views/new_administrateur/procedures/show.html.haml @@ -76,8 +76,8 @@ - else Choix du service administratif .card-admin-action - - if @procedure.service_id.present? - = link_to 'Modifier', edit_admin_service_path(@procedure.service, procedure_id: @procedure.id), class: 'button' + - if @procedure.service_id.blank? && current_administrateur.services.present? + = link_to 'Modifier', admin_services_path(procedure_id: @procedure.id), class: 'button' - else = link_to 'Remplir', new_admin_service_path(procedure_id: @procedure.id), class: 'button' diff --git a/spec/views/new_administrateur/procedures/show.html.haml_spec.rb b/spec/views/new_administrateur/procedures/show.html.haml_spec.rb index d5477a021..f321f6e3b 100644 --- a/spec/views/new_administrateur/procedures/show.html.haml_spec.rb +++ b/spec/views/new_administrateur/procedures/show.html.haml_spec.rb @@ -5,6 +5,7 @@ describe 'new_administrateur/procedures/show.html.haml', type: :view do before do assign(:procedure, procedure) assign(:procedure_lien, commencer_url(path: procedure.path)) + allow(view).to receive(:current_administrateur).and_return(procedure.administrateurs.first) end describe 'procedure is draft' do From dd7840cdc4d0fc1878a03801f27114606b935336 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Fri, 25 Sep 2020 10:59:46 +0200 Subject: [PATCH 06/11] Notify new draft after dossier commit --- app/models/dossier.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index f3546e7cb..6b2c0dd58 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -308,7 +308,7 @@ class Dossier < ApplicationRecord after_save :send_dossier_received after_save :send_web_hook - after_create :send_draft_notification_email + after_save_commit :send_draft_notification_email validates :user, presence: true validates :individual, presence: true, if: -> { revision.procedure.for_individual? } From d23b1136adddec5875e62daab949afcd95a44e3d Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Fri, 25 Sep 2020 11:10:12 +0200 Subject: [PATCH 07/11] send invite notifications using a hook --- app/controllers/invites_controller.rb | 7 +------ app/models/invite.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index a09f0db97..564443977 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -15,12 +15,7 @@ class InvitesController < ApplicationController ) if invite.valid? - if invite.user.present? - InviteMailer.invite_user(invite).deliver_later - else - InviteMailer.invite_guest(invite).deliver_later - end - + # The notification is sent through an after commit hook in order to avoir concurrency issues flash.notice = "Une invitation a été envoyée à #{invite.email}." else flash.alert = invite.errors.full_messages diff --git a/app/models/invite.rb b/app/models/invite.rb index 8c51c6e7e..62e9968fd 100644 --- a/app/models/invite.rb +++ b/app/models/invite.rb @@ -19,6 +19,8 @@ class Invite < ApplicationRecord before_validation -> { sanitize_email(:email) } + after_save_commit :send_notification + validates :email, presence: true validates :email, uniqueness: { scope: :dossier_id } @@ -32,4 +34,12 @@ class Invite < ApplicationRecord scope :kept, -> { joins(:dossier).merge(Dossier.kept) } default_scope { kept } + + def send_notification + if self.user.present? + InviteMailer.invite_user(self).deliver_later + else + InviteMailer.invite_guest(self).deliver_later + end + end end From 4fc038fe1b45e03da51e45eba2f407b22d490ef4 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Mon, 28 Sep 2020 17:38:49 +0200 Subject: [PATCH 08/11] use after_create instead of after_save --- app/models/dossier.rb | 2 +- app/models/invite.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 6b2c0dd58..5001e0c5f 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -308,7 +308,7 @@ class Dossier < ApplicationRecord after_save :send_dossier_received after_save :send_web_hook - after_save_commit :send_draft_notification_email + after_create_commit :send_draft_notification_email validates :user, presence: true validates :individual, presence: true, if: -> { revision.procedure.for_individual? } diff --git a/app/models/invite.rb b/app/models/invite.rb index 62e9968fd..5c4d4c1f5 100644 --- a/app/models/invite.rb +++ b/app/models/invite.rb @@ -19,7 +19,7 @@ class Invite < ApplicationRecord before_validation -> { sanitize_email(:email) } - after_save_commit :send_notification + after_create_commit :send_notification validates :email, presence: true validates :email, uniqueness: { scope: :dossier_id } From 52d9f08e4edc1db9cebae127ba853398640dbd4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Sep 2020 05:02:13 +0000 Subject: [PATCH 09/11] Bump flipper from 0.18.0 to 0.19.0 Bumps [flipper](https://github.com/jnunemaker/flipper) from 0.18.0 to 0.19.0. - [Release notes](https://github.com/jnunemaker/flipper/releases) - [Changelog](https://github.com/jnunemaker/flipper/blob/master/Changelog.md) - [Commits](https://github.com/jnunemaker/flipper/compare/v0.18.0...v0.19.0) Signed-off-by: dependabot[bot] --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1c5ffbb5c..310189bf9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -237,13 +237,13 @@ GEM ffi (1.13.1) ffi-geos (2.1.0) ffi (>= 1.0.0) - flipper (0.18.0) - flipper-active_record (0.18.0) + flipper (0.19.0) + flipper-active_record (0.19.0) activerecord (>= 5.0, < 7) - flipper (~> 0.18.0) - flipper-ui (0.18.0) + flipper (~> 0.19.0) + flipper-ui (0.19.0) erubi (>= 1.0.0, < 2.0.0) - flipper (~> 0.18.0) + flipper (~> 0.19.0) rack (>= 1.4, < 3) rack-protection (>= 1.5.3, < 2.1.0) fog-core (2.2.0) From 717318d90dce37722f535b3897c65982e057623c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 05:02:36 +0000 Subject: [PATCH 10/11] Bump gon from 6.3.2 to 6.4.0 Bumps [gon](https://github.com/gazay/gon) from 6.3.2 to 6.4.0. - [Release notes](https://github.com/gazay/gon/releases) - [Changelog](https://github.com/gazay/gon/blob/master/CHANGELOG.md) - [Commits](https://github.com/gazay/gon/commits) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 310189bf9..b6f77174c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -268,7 +268,7 @@ GEM geocoder (1.6.3) globalid (0.4.2) activesupport (>= 4.2.0) - gon (6.3.2) + gon (6.4.0) actionpack (>= 3.0.20) i18n (>= 0.7) multi_json From 796f95cb6139b0924260d6ea649e992ea789aed5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Sep 2020 07:20:14 +0000 Subject: [PATCH 11/11] Bump webpacker from 5.1.1 to 5.2.1 Bumps [webpacker](https://github.com/rails/webpacker) from 5.1.1 to 5.2.1. - [Release notes](https://github.com/rails/webpacker/releases) - [Changelog](https://github.com/rails/webpacker/blob/master/CHANGELOG.md) - [Commits](https://github.com/rails/webpacker/compare/v5.1.1...v5.2.1) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b6f77174c..d15812e37 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -739,7 +739,7 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webpacker (5.1.1) + webpacker (5.2.1) activesupport (>= 5.2) rack-proxy (>= 0.6.1) railties (>= 5.2)