Merge pull request #10465 from colinux/attestations-v2-prod
ETQ admin je peux activer la délivrance des attestations v2 (sous feature flag)
This commit is contained in:
commit
ccf5b255ed
42 changed files with 724 additions and 258 deletions
|
@ -20,27 +20,9 @@ module Administrateurs
|
|||
format.pdf do
|
||||
html = render_to_string('/administrateurs/attestation_template_v2s/show', layout: 'attestation', formats: [:html])
|
||||
|
||||
headers = {
|
||||
'Content-Type' => 'application/json',
|
||||
'X-Request-Id' => Current.request_id
|
||||
}
|
||||
pdf = WeasyprintService.generate_pdf(html, procedure_id: @procedure.id, path: request.path, user_id: current_user.id)
|
||||
|
||||
body = {
|
||||
html: html,
|
||||
upstream_context: {
|
||||
procedure_id: @procedure.id,
|
||||
path: request.path,
|
||||
user_id: current_user.id
|
||||
}
|
||||
}.to_json
|
||||
|
||||
response = Typhoeus.post(WEASYPRINT_URL, headers:, body:)
|
||||
|
||||
if response.success?
|
||||
send_data(response.body, filename: 'attestation.pdf', type: 'application/pdf', disposition: 'inline')
|
||||
else
|
||||
raise StandardError.new("PDF Generation failed: #{response.return_code} #{response.status_message}")
|
||||
end
|
||||
send_data(pdf, filename: 'attestation.pdf', type: 'application/pdf', disposition: 'inline')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -77,6 +59,19 @@ module Administrateurs
|
|||
|
||||
def update
|
||||
attestation_params = editor_params
|
||||
|
||||
# toggle activation
|
||||
if @attestation_template.persisted? && @attestation_template.activated? != cast_bool(attestation_params[:activated])
|
||||
@procedure.attestation_templates.v2.update_all(activated: attestation_params[:activated])
|
||||
render :update && return
|
||||
end
|
||||
|
||||
if @attestation_template.published? && should_edit_draft?
|
||||
@attestation_template = @attestation_template.dup
|
||||
@attestation_template.state = :draft
|
||||
@attestation_template.procedure = @procedure
|
||||
end
|
||||
|
||||
logo_file = attestation_params.delete(:logo)
|
||||
signature_file = attestation_params.delete(:signature)
|
||||
|
||||
|
@ -88,15 +83,40 @@ module Administrateurs
|
|||
attestation_params[:signature] = uninterlace_png(signature_file)
|
||||
end
|
||||
|
||||
if !@attestation_template.update(attestation_params)
|
||||
flash.alert = "Le modèle de l’attestation contient des erreurs et n'a pas pu être enregistré. Corriger les erreurs."
|
||||
end
|
||||
@attestation_template.assign_attributes(attestation_params)
|
||||
|
||||
render :update
|
||||
if @attestation_template.invalid?
|
||||
flash.alert = "L’attestation contient des erreurs et n'a pas pu être enregistrée. Corriger les erreurs."
|
||||
else
|
||||
# - draft just published
|
||||
if @attestation_template.published? && should_edit_draft?
|
||||
published = @procedure.attestation_templates.published
|
||||
|
||||
@attestation_template.transaction do
|
||||
were_published = published.destroy_all
|
||||
@attestation_template.save!
|
||||
flash.notice = were_published.any? ? "La nouvelle version de l’attestation a été publiée." : "L’attestation a été publiée."
|
||||
end
|
||||
|
||||
redirect_to edit_admin_procedure_attestation_template_v2_path(@procedure)
|
||||
else
|
||||
# - draft updated
|
||||
# - or, attestation already published, without need for publication (draft procedure)
|
||||
@attestation_template.save!
|
||||
render :update
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create = update
|
||||
|
||||
def reset
|
||||
@procedure.attestation_templates_v2.draft&.destroy_all
|
||||
|
||||
flash.notice = "Les modifications ont été réinitialisées."
|
||||
redirect_to edit_admin_procedure_attestation_template_v2_path(@procedure)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def ensure_feature_active
|
||||
|
@ -104,11 +124,19 @@ module Administrateurs
|
|||
end
|
||||
|
||||
def retrieve_attestation_template
|
||||
@attestation_template = @procedure.attestation_template_v2 || @procedure.build_attestation_template_v2(json_body: AttestationTemplate::TIPTAP_BODY_DEFAULT)
|
||||
v2s = @procedure.attestation_templates_v2
|
||||
@attestation_template = v2s.find(&:draft?) || v2s.find(&:published?) || build_default_attestation
|
||||
end
|
||||
|
||||
def build_default_attestation
|
||||
state = should_edit_draft? ? :draft : :published
|
||||
@procedure.build_attestation_template(version: 2, json_body: AttestationTemplate::TIPTAP_BODY_DEFAULT, activated: true, state:)
|
||||
end
|
||||
|
||||
def should_edit_draft? = !@procedure.brouillon?
|
||||
|
||||
def editor_params
|
||||
params.required(:attestation_template).permit(:official_layout, :label_logo, :label_direction, :tiptap_body, :footer, :logo, :signature, :activated)
|
||||
params.required(:attestation_template).permit(:activated, :official_layout, :label_logo, :label_direction, :tiptap_body, :footer, :logo, :signature, :activated, :state)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -112,7 +112,7 @@ module Administrateurs
|
|||
revision_types_de_champ: { type_de_champ: { piece_justificative_template_attachment: :blob } }
|
||||
},
|
||||
attestation_template_v1: [],
|
||||
attestation_template_v2: [],
|
||||
attestation_templates_v2: [],
|
||||
initiated_mail: [],
|
||||
received_mail: [],
|
||||
closed_mail: [],
|
||||
|
|
|
@ -30,9 +30,10 @@ module Instructeurs
|
|||
end
|
||||
|
||||
def apercu_attestation
|
||||
@attestation = dossier.attestation_template.render_attributes_for(dossier: dossier)
|
||||
|
||||
render 'administrateurs/attestation_templates/show', formats: [:pdf]
|
||||
send_data dossier.attestation_template.send(:build_pdf, dossier),
|
||||
filename: 'attestation.pdf',
|
||||
type: 'application/pdf',
|
||||
disposition: 'inline'
|
||||
end
|
||||
|
||||
def bilans_bdf
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue