From 9714b607aa859baee352a0867eaac33820e7fa07 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Tue, 29 Sep 2020 15:56:38 +0200 Subject: [PATCH 1/2] 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 2/2] 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.")