From 48a6a645026fd1c042c7837f750270d5e63f9ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Zrim=C5=A1ek?= Date: Sun, 14 Oct 2018 22:52:54 +0200 Subject: [PATCH] Move PDF generation and export logic of export all PDF to the model --- app/controllers/reports_controller.rb | 38 ----------------------- app/models/project.rb | 43 +++++++++++++++++++++++++++ app/views/reports/new.html.erb | 12 ++++---- 3 files changed, 49 insertions(+), 44 deletions(-) diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 75df19a78..5d3a537bd 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -11,7 +11,6 @@ class ReportsController < ApplicationController edit update generate - export_whole_project_pdf save_modal project_contents_modal experiment_contents_modal @@ -181,43 +180,6 @@ class ReportsController < ApplicationController end end - def export_whole_project_pdf(project) - @project = project - @report = Report.generate_whole_project_report( - @project, current_user, current_team - ) - - page_html_string = render_to_string 'reports/new.html.erb', - locals: { export_all: true } - parsed_page_html = Nokogiri::HTML(page_html_string) - parsed_pdf_html = parsed_page_html.at_css('#report-content') - @report.destroy - - filename = "#{@project.name}_Report.pdf" - parsed_pdf = render_to_string( - pdf: filename, - header: { right: '[page] of [topage]' }, - locals: { content: parsed_pdf_html.to_s }, - template: 'reports/report.pdf.erb', - disable_javascript: true, - disable_internal_links: false - ) - - # Dirty workaround to convert absolute links back to relative ones, since - # WickedPdf does the opposite, based on the path where the file parsing is - # done - parsed_pdf_with_relative_links = - parsed_pdf.gsub('/URI (file:////tmp/', '/URI (') - - zip = ZipExport.create(user: current_user) - zip.generate_exportable_zip( - current_user, - parsed_pdf_with_relative_links, - :team, - filename: filename - ) - end - def save_pdf_to_inventory_item save_pdf_to_inventory_item = ReportActions::SavePdfToInventoryItem.new( current_user, current_team, save_PDF_params diff --git a/app/models/project.rb b/app/models/project.rb index 355aefdda..68c2abc0c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -221,4 +221,47 @@ class Project < ApplicationRecord end res end + + def export_report(user, team) + ActionController::Renderer::RACK_KEY_TRANSLATION['warden'] ||= 'warden' + proxy = Warden::Proxy.new({}, Warden::Manager.new({})) + renderer = ApplicationController.renderer.new(warden: proxy) + + report = Report.generate_whole_project_report( + self, user, team + ) + + page_html_string = renderer.render 'reports/new.html.erb', + locals: { export_all: true }, + assigns: { project: self, + report: report } + parsed_page_html = Nokogiri::HTML(page_html_string) + parsed_pdf_html = parsed_page_html.at_css('#report-content') + report.destroy + + filename = "#{name}_Report.pdf" + parsed_pdf = ApplicationController.render( + pdf: filename, + header: { right: '[page] of [topage]' }, + locals: { content: parsed_pdf_html.to_s }, + template: 'reports/report.pdf.erb', + disable_javascript: true, + disable_internal_links: false, + current_user: user, + current_team: team + ) + # Dirty workaround to convert absolute links back to relative ones, since + # WickedPdf does the opposite, based on the path where the file parsing is + # done + parsed_pdf_with_relative_links = + parsed_pdf.gsub('/URI (file:////tmp/', '/URI (') + + zip = ZipExport.create(user: user) + zip.generate_exportable_zip( + user, + parsed_pdf_with_relative_links, + :team, + filename: filename + ) + end end diff --git a/app/views/reports/new.html.erb b/app/views/reports/new.html.erb index 4215ff81b..aeee310ad 100644 --- a/app/views/reports/new.html.erb +++ b/app/views/reports/new.html.erb @@ -14,15 +14,15 @@ id="data-holder" class="hidden" data-project-modal-title="<%=t "projects.reports.elements.modals.project_contents.head_title" %>" - data-add-project-contents-url="<%= project_contents_modal_project_reports_url %>" - data-add-experiment-contents-url="<%= experiment_contents_modal_project_reports_url %>" - data-add-module-contents-url="<%= module_contents_modal_project_reports_url %>" - data-add-step-contents-url="<%= step_contents_modal_project_reports_url %>" - data-add-result-contents-url="<%= result_contents_modal_project_reports_url %>" + data-add-project-contents-url="<%= project_contents_modal_project_reports_url(@project) %>" + data-add-experiment-contents-url="<%= experiment_contents_modal_project_reports_url(@project) %>" + data-add-module-contents-url="<%= module_contents_modal_project_reports_url(@project) %>" + data-add-step-contents-url="<%= step_contents_modal_project_reports_url(@project) %>" + data-add-result-contents-url="<%= result_contents_modal_project_reports_url(@project) %>" data-stylesheet-url="<%= stylesheet_path "application" %>" data-print-title="<%=t "projects.reports.print_title", project: @project.name %>" data-project-id="<%= @project.id %>" - data-save-report-url="<%= save_modal_project_reports_url %>" + data-save-report-url="<%= save_modal_project_reports_url(@project) %>" data-report-id="<%= @report.present? ? @report.id : "" %>" data-unsaved-work-text="<%=t "projects.reports.new.unsaved_work" %>" data-global-sort-text="<%=t "projects.reports.new.global_sort" %>">