Merge pull request #6498 from pengfeidong/6479_cvs_by_locales

Instructeur : localisation de l'import des groupes instructeurs par fichier CSV (#6479)
This commit is contained in:
Pierre de La Morinerie 2021-10-05 11:08:23 +02:00 committed by GitHub
commit bdb964b326
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 4 deletions

View file

@ -1,6 +1,7 @@
source 'https://rubygems.org'
gem 'aasm'
gem 'acsv'
gem 'active_link_to' # Automatically set a class on active links
gem 'active_model_serializers'
gem 'activestorage-openstack'

View file

@ -20,6 +20,7 @@ GEM
specs:
aasm (5.1.1)
concurrent-ruby (~> 1.0)
acsv (0.0.1)
actioncable (6.1.4.1)
actionpack (= 6.1.4.1)
activesupport (= 6.1.4.1)
@ -779,6 +780,7 @@ PLATFORMS
DEPENDENCIES
aasm
acsv
active_link_to
active_model_serializers
active_storage_validations

View file

@ -215,13 +215,13 @@ module NewAdministrateur
else
file = group_csv_file.read
base_encoding = CharlockHolmes::EncodingDetector.detect(file)
groupes_emails = CSV.new(file.encode("UTF-8", base_encoding[:encoding], invalid: :replace, replace: ""), headers: true, header_converters: :downcase)
groupes_emails = ACSV::CSV.new(file.encode("UTF-8", base_encoding[:encoding], invalid: :replace, replace: ""), headers: true, header_converters: :downcase)
.map { |r| r.to_h.slice('groupe', 'email') }
groupes_emails_has_keys = groupes_emails.first.has_key?("groupe") && groupes_emails.first.has_key?("email")
if groupes_emails_has_keys.blank?
flash[:alert] = "Importation impossible, veuillez importer un csv #{view_context.link_to('suivant ce modèle', "/import-groupe-test.csv")}"
flash[:alert] = "Importation impossible, veuillez importer un csv #{view_context.link_to('suivant ce modèle', "/csv/#{I18n.locale}/import-groupe-test.csv")}"
else
add_instructeurs_and_get_errors = InstructeursImportService.import(procedure, groupes_emails)

View file

@ -24,7 +24,7 @@
= label_tag "Importer par fichier CSV"
%p.notice Le fichier csv doit comporter 2 colonnes (Groupe, Email) et être séparé par des virgules. L'import n'écrase pas les groupes et les instructeurs existants.
%p.notice Le poids du fichier doit être inférieur à #{number_to_human_size(csv_max_size)}
%p.mt-2.mb-2= link_to "Télécharger l'exemple de fichier CSV", "/import-groupe-test.csv"
%p.mt-2.mb-2= link_to "Télécharger l'exemple de fichier CSV", "/csv/#{I18n.locale}/import-groupe-test.csv"
= file_field_tag :group_csv_file, required: true, accept: 'text/csv', size: "1"
= submit_tag "Importer le fichier", class: 'button primary send', data: { disable_with: "Envoi..." }

View file

@ -0,0 +1,5 @@
Email;Groupe
camilia@gouv.fr;Nord
kara@gouv.fr;Finistère
simon@gouv.fr;Isère
pauline@gouv.fr;Bouches-du-Rhône
1 Email Groupe
2 camilia@gouv.fr Nord
3 kara@gouv.fr Finistère
4 simon@gouv.fr Isère
5 pauline@gouv.fr Bouches-du-Rhône

View file

@ -418,7 +418,7 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
before { subject }
it { expect(flash.alert).to be_present }
it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv <a href=\"/import-groupe-test.csv\">suivant ce modèle</a>") }
it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv <a href=\"/csv/#{I18n.locale}/import-groupe-test.csv\">suivant ce modèle</a>") }
end
end