feat(instructeurs import): can import instructeurs even if procedure not published
This commit is contained in:
parent
59fe8b64c4
commit
af1fd34256
4 changed files with 32 additions and 42 deletions
|
@ -322,44 +322,42 @@ module Administrateurs
|
|||
end
|
||||
|
||||
def import
|
||||
if procedure.publiee_or_close?
|
||||
if !CSV_ACCEPTED_CONTENT_TYPES.include?(csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type)
|
||||
flash[:alert] = "Importation impossible : veuillez importer un fichier CSV"
|
||||
if !CSV_ACCEPTED_CONTENT_TYPES.include?(csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type)
|
||||
flash[:alert] = "Importation impossible : veuillez importer un fichier CSV"
|
||||
|
||||
elsif csv_file.size > CSV_MAX_SIZE
|
||||
flash[:alert] = "Importation impossible : le poids du fichier est supérieur à #{number_to_human_size(CSV_MAX_SIZE)}"
|
||||
elsif csv_file.size > CSV_MAX_SIZE
|
||||
flash[:alert] = "Importation impossible : le poids du fichier est supérieur à #{number_to_human_size(CSV_MAX_SIZE)}"
|
||||
|
||||
else
|
||||
file = csv_file.read
|
||||
base_encoding = CharlockHolmes::EncodingDetector.detect(file)
|
||||
else
|
||||
file = csv_file.read
|
||||
base_encoding = CharlockHolmes::EncodingDetector.detect(file)
|
||||
|
||||
csv_content = ACSV::CSV.new_for_ruby3(file.encode("UTF-8", base_encoding[:encoding], invalid: :replace, replace: ""), headers: true, header_converters: :downcase).map(&:to_h)
|
||||
csv_content = ACSV::CSV.new_for_ruby3(file.encode("UTF-8", base_encoding[:encoding], invalid: :replace, replace: ""), headers: true, header_converters: :downcase).map(&:to_h)
|
||||
|
||||
if csv_content.first.has_key?("groupe") && csv_content.first.has_key?("email")
|
||||
groupes_emails = csv_content.map { |r| r.to_h.slice('groupe', 'email') }
|
||||
if csv_content.first.has_key?("groupe") && csv_content.first.has_key?("email")
|
||||
groupes_emails = csv_content.map { |r| r.to_h.slice('groupe', 'email') }
|
||||
|
||||
added_instructeurs_by_group, invalid_emails = InstructeursImportService.import_groupes(procedure, groupes_emails)
|
||||
added_instructeurs_by_group, invalid_emails = InstructeursImportService.import_groupes(procedure, groupes_emails)
|
||||
|
||||
added_instructeurs_by_group.each do |groupe, added_instructeurs|
|
||||
if added_instructeurs.present?
|
||||
notify_instructeurs(groupe, added_instructeurs)
|
||||
end
|
||||
flash_message_for_import(invalid_emails)
|
||||
end
|
||||
|
||||
elsif csv_content.first.has_key?("email") && !csv_content.map(&:to_h).first.keys.many? && procedure.groupe_instructeurs.one?
|
||||
instructors_emails = csv_content.map(&:to_h)
|
||||
|
||||
added_instructeurs, invalid_emails = InstructeursImportService.import_instructeurs(procedure, instructors_emails)
|
||||
added_instructeurs_by_group.each do |groupe, added_instructeurs|
|
||||
if added_instructeurs.present?
|
||||
notify_instructeurs(groupe_instructeur, added_instructeurs)
|
||||
notify_instructeurs(groupe, added_instructeurs)
|
||||
end
|
||||
flash_message_for_import(invalid_emails)
|
||||
else
|
||||
flash_message_for_invalid_csv
|
||||
end
|
||||
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
|
||||
|
||||
elsif csv_content.first.has_key?("email") && !csv_content.map(&:to_h).first.keys.many? && procedure.groupe_instructeurs.one?
|
||||
instructors_emails = csv_content.map(&:to_h)
|
||||
|
||||
added_instructeurs, invalid_emails = InstructeursImportService.import_instructeurs(procedure, instructors_emails)
|
||||
if added_instructeurs.present?
|
||||
notify_instructeurs(groupe_instructeur, added_instructeurs)
|
||||
end
|
||||
flash_message_for_import(invalid_emails)
|
||||
else
|
||||
flash_message_for_invalid_csv
|
||||
end
|
||||
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -5,19 +5,13 @@
|
|||
= t(".csv_import.#{key}.title")
|
||||
.fr-collapse#accordion-106
|
||||
- csv_max_size = Administrateurs::GroupeInstructeursController::CSV_MAX_SIZE
|
||||
- if procedure.publiee_or_close?
|
||||
%p.notice
|
||||
= t(".csv_import.#{key}.notice_1_html", csv_max_size: number_to_human_size(csv_max_size))
|
||||
%p.notice
|
||||
= t(".csv_import.#{key}.notice_2")
|
||||
= form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form flex justify-between align-center" do
|
||||
= file_field_tag :csv_file, required: true, accept: 'text/csv', size: "1"
|
||||
= submit_tag t('.csv_import.import_file'), class: 'fr-btn fr-btn--secondary', data: { disable_with: "Envoi...", confirm: t('.csv_import.import_file_alert') }
|
||||
- else
|
||||
%p.mt-4.form.font-weight-bold.mb-2.text-lg
|
||||
= t(".csv_import.#{key}.title")
|
||||
%p.notice
|
||||
= t('.csv_import.import_file_procedure_not_published')
|
||||
%p.notice
|
||||
= t(".csv_import.#{key}.notice_1_html", csv_max_size: number_to_human_size(csv_max_size))
|
||||
%p.notice
|
||||
= t(".csv_import.#{key}.notice_2")
|
||||
= form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form flex justify-between align-center" do
|
||||
= file_field_tag :csv_file, required: true, accept: 'text/csv', size: "1"
|
||||
= submit_tag t('.csv_import.import_file'), class: 'fr-btn fr-btn--secondary', data: { disable_with: "Envoi...", confirm: t('.csv_import.import_file_alert') }
|
||||
- if procedure.groupe_instructeurs.many?
|
||||
.flex.justify-between.align-center.mt-4
|
||||
%div
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue