Merge pull request #8605 from colinux/admin-import-instructeurs-csv

feat(admin): permet l'import de groupes instructeurs en CSV quand la démarche est close
This commit is contained in:
Colin Darie 2023-02-09 11:29:17 +01:00 committed by GitHub
commit 4da276bbd5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 2 deletions

View file

@ -192,7 +192,7 @@ module Administrateurs
end end
def import def import
if procedure.publiee? if procedure.publiee_or_close?
if !CSV_ACCEPTED_CONTENT_TYPES.include?(group_csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type) if !CSV_ACCEPTED_CONTENT_TYPES.include?(group_csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type)
flash[:alert] = "Importation impossible : veuillez importer un fichier CSV" flash[:alert] = "Importation impossible : veuillez importer un fichier CSV"

View file

@ -823,6 +823,10 @@ class Procedure < ApplicationRecord
published_at || created_at published_at || created_at
end end
def publiee_or_close?
publiee? || close?
end
def self.tags def self.tags
unnest = Arel::Nodes::NamedFunction.new('UNNEST', [self.arel_table[:tags]]) unnest = Arel::Nodes::NamedFunction.new('UNNEST', [self.arel_table[:tags]])
query = self.select(unnest.as('tags')).publiees.distinct.order('tags') query = self.select(unnest.as('tags')).publiees.distinct.order('tags')

View file

@ -24,7 +24,7 @@
= f.submit t('.button.add_group'), class: "button primary send" = f.submit t('.button.add_group'), class: "button primary send"
- csv_max_size = Administrateurs::GroupeInstructeursController::CSV_MAX_SIZE - csv_max_size = Administrateurs::GroupeInstructeursController::CSV_MAX_SIZE
- if procedure.publiee? - if procedure.publiee_or_close?
= form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form" do = form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form" do
= label_tag t('.csv_import.title') = label_tag t('.csv_import.title')
%p.notice %p.notice

View file

@ -431,6 +431,16 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it { expect(flash.alert).to be_present } it { expect(flash.alert).to be_present }
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>") } 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
context 'when procedure is closed' do
let(:procedure) { create(:procedure, :closed, administrateurs: [admin]) }
let(:csv_file) { fixture_file_upload('spec/fixtures/files/groupe-instructeur.csv', 'text/csv') }
before { subject }
it { expect(procedure.groupe_instructeurs.first.label).to eq("Afrique") }
it { expect(flash.alert).to eq("Import terminé. Cependant les emails suivants ne sont pas pris en compte: kara") }
end
end end
describe '#export_groupe_instructeurs' do describe '#export_groupe_instructeurs' do