Config using default Serializers to generate both CSV and XLSX files from Dossier records, problem with ODS in gem -> github issue openned

This commit is contained in:
JC 2016-11-07 17:23:58 +01:00
parent 8fe92b1465
commit fa767ad56f
6 changed files with 24 additions and 9 deletions

View file

@ -1,4 +1,5 @@
class Backoffice::DossiersController < Backoffice::DossiersListController
respond_to :html, :xlsx, :ods, :csv
def index
super
@ -20,9 +21,11 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
def download_dossiers_tps
dossiers = current_gestionnaire.dossiers.where.not(state: :draft)
response.headers['Content-Type'] = 'text/csv'
render csv: dossiers, status: 200
respond_to do |format|
format.xlsx { render xlsx: dossiers }
format.ods { render ods: dossiers }
format.csv { render csv: dossiers }
end
end
def search

View file

@ -1,4 +1,5 @@
class Dossier < ActiveRecord::Base
include SpreadsheetArchitect
enum state: {draft: 'draft',
initiated: 'initiated',
@ -297,14 +298,21 @@ class Dossier < ActiveRecord::Base
dossier_attr = DossierSerializer.new(self).attributes
unless entreprise.nil?
etablissement_attr = EtablissementCsvSerializer.new(self.etablissement).attributes.map { |k, v| ["etablissement.#{k}", v] }.to_h
entreprise_attr = EntrepriseSerializer.new(self.entreprise).attributes.map { |k, v| ["entreprise.#{k}", v] }.to_h
dossier_attr = dossier_attr.merge(etablissement_attr).merge(entreprise_attr)
etablissement_attr = EtablissementCsvSerializer.new(self.etablissement).attributes.map { |k, v| ["etablissement.#{k}".parameterize.underscore.to_sym, v] }.to_h
entreprise_attr = EntrepriseSerializer.new(self.entreprise).attributes.map { |k, v| ["entreprise.#{k}".parameterize.underscore.to_sym, v] }.to_h
else
etablissement_attr = EtablissementSerializer.new(Etablissement.new).attributes.map { |k, v| ["etablissement.#{k}".parameterize.underscore.to_sym, v] }.to_h
entreprise_attr = EntrepriseSerializer.new(Entreprise.new).attributes.map { |k, v| ["entreprise.#{k}".parameterize.underscore.to_sym, v] }.to_h
end
dossier_attr = dossier_attr.merge(etablissement_attr).merge(entreprise_attr)
dossier_attr
end
def spreadsheet_columns
self.as_csv.to_a
end
def reset!
etablissement.destroy
entreprise.destroy

View file

@ -1,4 +1,5 @@
class Entreprise < ActiveRecord::Base
belongs_to :dossier
has_one :etablissement, dependent: :destroy
has_one :rna_information, dependent: :destroy

View file

@ -1,4 +1,5 @@
class Etablissement < ActiveRecord::Base
belongs_to :dossier
belongs_to :entreprise

View file

@ -2,7 +2,8 @@
#pref_list_menu
= render partial: 'backoffice/dossiers/pref_list'
=link_to t('dynamics.backoffice.download_all_dossiers'), backoffice_download_dossiers_tps_path, {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'}
=link_to t('dynamics.backoffice.download_all_dossiers_csv'), backoffice_download_dossiers_tps_path(format: :csv), {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'}
=link_to t('dynamics.backoffice.download_all_dossiers_xlsx'), backoffice_download_dossiers_tps_path(format: :xlsx), {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'}
%h1
=t('dynamics.backoffice.title')

View file

@ -11,7 +11,8 @@ fr:
pref_list:
title: 'Gestion de colonnes affichées'
description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans votre interface de suivi des dossiers.'
download_all_dossiers: 'Tous mes dossiers en CSV'
download_all_dossiers_csv: 'Tous mes dossiers en CSV'
download_all_dossiers_xlsx: 'Tous mes dossiers en XLSX'
research:
placeholder: 'Rechercher un dossier ...'
filter_procedure:
@ -41,4 +42,4 @@ fr:
title: Dossiers
onglet_accompagnateurs:
add:
title: 'Ajouter un accompagnateur'
title: 'Ajouter un accompagnateur'