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:
parent
8fe92b1465
commit
fa767ad56f
6 changed files with 24 additions and 9 deletions
|
@ -1,4 +1,5 @@
|
||||||
class Backoffice::DossiersController < Backoffice::DossiersListController
|
class Backoffice::DossiersController < Backoffice::DossiersListController
|
||||||
|
respond_to :html, :xlsx, :ods, :csv
|
||||||
|
|
||||||
def index
|
def index
|
||||||
super
|
super
|
||||||
|
@ -20,9 +21,11 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
|
||||||
def download_dossiers_tps
|
def download_dossiers_tps
|
||||||
dossiers = current_gestionnaire.dossiers.where.not(state: :draft)
|
dossiers = current_gestionnaire.dossiers.where.not(state: :draft)
|
||||||
|
|
||||||
response.headers['Content-Type'] = 'text/csv'
|
respond_to do |format|
|
||||||
|
format.xlsx { render xlsx: dossiers }
|
||||||
render csv: dossiers, status: 200
|
format.ods { render ods: dossiers }
|
||||||
|
format.csv { render csv: dossiers }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def search
|
def search
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
class Dossier < ActiveRecord::Base
|
class Dossier < ActiveRecord::Base
|
||||||
|
include SpreadsheetArchitect
|
||||||
|
|
||||||
enum state: {draft: 'draft',
|
enum state: {draft: 'draft',
|
||||||
initiated: 'initiated',
|
initiated: 'initiated',
|
||||||
|
@ -297,14 +298,21 @@ class Dossier < ActiveRecord::Base
|
||||||
dossier_attr = DossierSerializer.new(self).attributes
|
dossier_attr = DossierSerializer.new(self).attributes
|
||||||
|
|
||||||
unless entreprise.nil?
|
unless entreprise.nil?
|
||||||
etablissement_attr = EtablissementCsvSerializer.new(self.etablissement).attributes.map { |k, v| ["etablissement.#{k}", v] }.to_h
|
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}", v] }.to_h
|
entreprise_attr = EntrepriseSerializer.new(self.entreprise).attributes.map { |k, v| ["entreprise.#{k}".parameterize.underscore.to_sym, v] }.to_h
|
||||||
dossier_attr = dossier_attr.merge(etablissement_attr).merge(entreprise_attr)
|
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
|
end
|
||||||
|
dossier_attr = dossier_attr.merge(etablissement_attr).merge(entreprise_attr)
|
||||||
|
|
||||||
dossier_attr
|
dossier_attr
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def spreadsheet_columns
|
||||||
|
self.as_csv.to_a
|
||||||
|
end
|
||||||
|
|
||||||
def reset!
|
def reset!
|
||||||
etablissement.destroy
|
etablissement.destroy
|
||||||
entreprise.destroy
|
entreprise.destroy
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
class Entreprise < ActiveRecord::Base
|
class Entreprise < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :dossier
|
belongs_to :dossier
|
||||||
has_one :etablissement, dependent: :destroy
|
has_one :etablissement, dependent: :destroy
|
||||||
has_one :rna_information, dependent: :destroy
|
has_one :rna_information, dependent: :destroy
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
class Etablissement < ActiveRecord::Base
|
class Etablissement < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :dossier
|
belongs_to :dossier
|
||||||
belongs_to :entreprise
|
belongs_to :entreprise
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
#pref_list_menu
|
#pref_list_menu
|
||||||
= render partial: 'backoffice/dossiers/pref_list'
|
= 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
|
%h1
|
||||||
=t('dynamics.backoffice.title')
|
=t('dynamics.backoffice.title')
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,8 @@ fr:
|
||||||
pref_list:
|
pref_list:
|
||||||
title: 'Gestion de colonnes affichées'
|
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.'
|
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:
|
research:
|
||||||
placeholder: 'Rechercher un dossier ...'
|
placeholder: 'Rechercher un dossier ...'
|
||||||
filter_procedure:
|
filter_procedure:
|
||||||
|
|
Loading…
Add table
Reference in a new issue