Merge pull request #6521 from betagouv/feat/6509
ETQ Administrateur, je souhaite exporter tous les groupes instructeurs d'une démarche au format CSV
This commit is contained in:
commit
cf52e4bfc2
5 changed files with 55 additions and 1 deletions
|
@ -69,3 +69,10 @@
|
|||
position: absolute !important;
|
||||
word-wrap: normal !important;
|
||||
}
|
||||
|
||||
.label-bold {
|
||||
font-size: 18px;
|
||||
margin-bottom: 16px;
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
|
|
@ -236,6 +236,24 @@ module NewAdministrateur
|
|||
end
|
||||
end
|
||||
|
||||
def export_groupe_instructeurs
|
||||
groupe_instructeurs = procedure.groupe_instructeurs
|
||||
|
||||
data = CSV.generate(headers: true) do |csv|
|
||||
column_names = ["Groupe", "Email"]
|
||||
csv << column_names
|
||||
groupe_instructeurs.each do |gi|
|
||||
gi.instructeurs.each do |instructeur|
|
||||
csv << [gi.label, instructeur.email]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.csv { send_data data, filename: "#{procedure.id}-groupe-instructeurs-#{Date.today}.csv" }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_instructeur(email)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
- groupe_instructeurs_count = procedure.groupe_instructeurs.count
|
||||
.card
|
||||
= form_for procedure,
|
||||
url: { action: :update_routing_criteria_name },
|
||||
|
@ -17,7 +18,7 @@
|
|||
Ajouter un groupe
|
||||
%p.notice Ce groupe sera un choix de la liste « #{procedure.routing_criteria_name} » .
|
||||
= f.text_field :label, placeholder: 'ex. Ville de Bordeaux', required: true
|
||||
= f.submit 'Ajouter le groupe', class: 'button primary send'
|
||||
= f.submit 'Ajouter le groupe', class: "button primary send"
|
||||
|
||||
- csv_max_size = NewAdministrateur::GroupeInstructeursController::CSV_MAX_SIZE
|
||||
= form_tag import_admin_procedure_groupe_instructeurs_path(procedure), method: :post, multipart: true, class: "mt-4 form" do
|
||||
|
@ -48,5 +49,7 @@
|
|||
= link_to reaffecter_dossiers_admin_procedure_groupe_instructeur_path(procedure, group), class: 'button', title:'Réaffecter les dossiers à un autre groupe afin de pouvoir le supprimer' do
|
||||
%span.icon.follow
|
||||
déplacer les dossiers
|
||||
- if groupe_instructeurs_count > 1
|
||||
= link_to "Exporter au format CSV", export_groupe_instructeurs_admin_procedure_groupe_instructeurs_path(procedure, format: :csv)
|
||||
|
||||
= paginate groupes_instructeurs
|
||||
|
|
|
@ -427,6 +427,7 @@ Rails.application.routes.draw do
|
|||
patch 'update_routing_enabled'
|
||||
patch 'update_instructeurs_self_management_enabled'
|
||||
post 'import'
|
||||
get 'export_groupe_instructeurs'
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -422,6 +422,31 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#export_groupe_instructeurs' do
|
||||
let(:procedure) { create(:procedure, :published) }
|
||||
let(:gi_1_2) { procedure.groupe_instructeurs.create(label: 'groupe instructeur 1 2') }
|
||||
let(:instructeur_assigned_1) { create :instructeur, email: 'instructeur_1@ministere_a.gouv.fr', administrateurs: [admin] }
|
||||
let(:instructeur_assigned_2) { create :instructeur, email: 'instructeur_2@ministere_b.gouv.fr', administrateurs: [admin] }
|
||||
|
||||
subject do
|
||||
get :export_groupe_instructeurs, params: { procedure_id: procedure.id, format: :csv }
|
||||
end
|
||||
|
||||
before do
|
||||
procedure.administrateurs << admin
|
||||
gi_1_2.instructeurs << [instructeur_assigned_1, instructeur_assigned_2]
|
||||
end
|
||||
|
||||
it 'generates a CSV file containing the instructeurs and groups' do
|
||||
expect(subject.status).to eq(200)
|
||||
expect(subject.stream.body.split("\n").size).to eq(3)
|
||||
expect(subject.stream.body).to include("groupe instructeur 1 2")
|
||||
expect(subject.stream.body).to include(instructeur_assigned_1.email)
|
||||
expect(subject.stream.body).to include(instructeur_assigned_2.email)
|
||||
expect(subject.header["Content-Disposition"]).to include("#{procedure.id}-groupe-instructeurs-#{Date.today}.csv")
|
||||
end
|
||||
end
|
||||
|
||||
describe '#update_routing_criteria_name' do
|
||||
before do
|
||||
patch :update_routing_criteria_name,
|
||||
|
|
Loading…
Add table
Reference in a new issue