refactor(export): reduce repetition in export code hopefully making it more readable
This commit is contained in:
parent
c1ae9d03be
commit
6f6b3896de
4 changed files with 57 additions and 119 deletions
|
@ -4,19 +4,14 @@ module Administrateurs
|
|||
before_action :ensure_not_super_admin!
|
||||
|
||||
def download
|
||||
export = Export.find_or_create_export(export_format, all_groupe_instructeurs, **export_options)
|
||||
|
||||
if export.available? && export.old? && force_export?
|
||||
export.destroy
|
||||
export = Export.find_or_create_export(export_format, all_groupe_instructeurs, **export_options)
|
||||
end
|
||||
export = Export.find_or_create_export(export_format, all_groupe_instructeurs, force: force_export?, **export_options)
|
||||
@dossiers_count = export.count
|
||||
assign_exports
|
||||
|
||||
if export.available?
|
||||
respond_to do |format|
|
||||
format.turbo_stream do
|
||||
@dossiers_count = export.count
|
||||
assign_exports
|
||||
flash.notice = "L’export au format \"#{export_format}\" est prêt. Vous pouvez le <a href=\"#{export.file.service_url}\">télécharger</a>"
|
||||
flash.notice = export.flash_message
|
||||
end
|
||||
|
||||
format.html do
|
||||
|
@ -25,18 +20,13 @@ module Administrateurs
|
|||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
notice_message = "Nous générons cet export. Veuillez revenir dans quelques minutes pour le télécharger."
|
||||
|
||||
format.turbo_stream do
|
||||
@dossiers_count = export.count
|
||||
assign_exports
|
||||
if !params[:no_progress_notification]
|
||||
flash.notice = notice_message
|
||||
flash.notice = export.flash_message
|
||||
end
|
||||
end
|
||||
|
||||
format.html do
|
||||
redirect_to admin_procedure_archives_url(@procedure), notice: notice_message
|
||||
redirect_to admin_procedure_archives_url(@procedure), notice: export.flash_message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -158,21 +158,17 @@ module Instructeurs
|
|||
.visible_by_administration
|
||||
.exists?(groupe_instructeur_id: groupe_instructeur_ids) && !instructeur_as_manager?
|
||||
|
||||
export = Export.find_or_create_export(export_format, groupe_instructeurs, **export_options)
|
||||
export = Export.find_or_create_export(export_format, groupe_instructeurs, force: force_export?, **export_options)
|
||||
|
||||
if export.available? && export.old? && force_export?
|
||||
export.destroy
|
||||
export = Export.find_or_create_export(export_format, groupe_instructeurs, **export_options)
|
||||
end
|
||||
@procedure = procedure
|
||||
@statut = export_options[:statut]
|
||||
@dossiers_count = export.count
|
||||
assign_exports
|
||||
|
||||
if export.available?
|
||||
respond_to do |format|
|
||||
format.turbo_stream do
|
||||
@procedure = procedure
|
||||
@statut = export_options[:statut]
|
||||
@dossiers_count = export.count
|
||||
assign_exports
|
||||
flash.notice = "L’export au format \"#{export_format}\" est prêt. Vous pouvez le <a href=\"#{export.file.service_url}\">télécharger</a>"
|
||||
flash.notice = export.flash_message
|
||||
end
|
||||
|
||||
format.html do
|
||||
|
@ -181,20 +177,13 @@ module Instructeurs
|
|||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
notice_message = "Nous générons cet export. Veuillez revenir dans quelques minutes pour le télécharger."
|
||||
|
||||
format.turbo_stream do
|
||||
@procedure = procedure
|
||||
@statut = export_options[:statut]
|
||||
@dossiers_count = export.count
|
||||
assign_exports
|
||||
if !params[:no_progress_notification]
|
||||
flash.notice = notice_message
|
||||
flash.notice = export.flash_message
|
||||
end
|
||||
end
|
||||
|
||||
format.html do
|
||||
redirect_to instructeur_procedure_url(procedure), notice: notice_message
|
||||
redirect_to instructeur_procedure_url(procedure), notice: export.flash_message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -83,13 +83,23 @@ class Export < ApplicationRecord
|
|||
procedure_presentation_id.present?
|
||||
end
|
||||
|
||||
def self.find_or_create_export(format, groupe_instructeurs, time_span_type: time_span_types.fetch(:everything), statut: statuts.fetch(:tous), procedure_presentation: nil)
|
||||
create_with(groupe_instructeurs: groupe_instructeurs, procedure_presentation: procedure_presentation, procedure_presentation_snapshot: procedure_presentation&.snapshot)
|
||||
.includes(:procedure_presentation)
|
||||
.create_or_find_by(format: format,
|
||||
time_span_type: time_span_type,
|
||||
statut: statut,
|
||||
key: generate_cache_key(groupe_instructeurs.map(&:id), procedure_presentation))
|
||||
def flash_message
|
||||
if available?
|
||||
"L’export au format \"#{format}\" est prêt. Vous pouvez le <a href=\"#{file.service_url}\">télécharger</a>"
|
||||
else
|
||||
"Nous générons cet export. Veuillez revenir dans quelques minutes pour le télécharger."
|
||||
end
|
||||
end
|
||||
|
||||
def self.find_or_create_export(format, groupe_instructeurs, time_span_type: time_span_types.fetch(:everything), statut: statuts.fetch(:tous), procedure_presentation: nil, force: false)
|
||||
export = create_or_find_export(format, groupe_instructeurs, time_span_type: time_span_type, statut: statut, procedure_presentation: procedure_presentation)
|
||||
|
||||
if export.available? && export.old? && force
|
||||
export.destroy
|
||||
create_or_find_export(format, groupe_instructeurs, time_span_type: time_span_type, statut: statut, procedure_presentation: procedure_presentation)
|
||||
else
|
||||
export
|
||||
end
|
||||
end
|
||||
|
||||
def self.find_for_groupe_instructeurs(groupe_instructeurs_ids, procedure_presentation)
|
||||
|
@ -121,6 +131,15 @@ class Export < ApplicationRecord
|
|||
}
|
||||
end
|
||||
|
||||
def self.create_or_find_export(format, groupe_instructeurs, time_span_type:, statut:, procedure_presentation:)
|
||||
create_with(groupe_instructeurs: groupe_instructeurs, procedure_presentation: procedure_presentation, procedure_presentation_snapshot: procedure_presentation&.snapshot)
|
||||
.includes(:procedure_presentation)
|
||||
.create_or_find_by(format: format,
|
||||
time_span_type: time_span_type,
|
||||
statut: statut,
|
||||
key: generate_cache_key(groupe_instructeurs.map(&:id), procedure_presentation))
|
||||
end
|
||||
|
||||
def self.generate_cache_key(groupe_instructeurs_ids, procedure_presentation = nil)
|
||||
if procedure_presentation.present?
|
||||
[
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue