Merge pull request #6406 from okriuchykhin/ok_SCI_9461_v2

Fix file preview generation issues in export all [SCI-9461]
This commit is contained in:
Alex Kriuchykhin 2023-10-10 15:33:26 +02:00 committed by GitHub
commit e131163f11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 19 deletions

View file

@ -187,24 +187,15 @@ class TeamZipExportJob < ZipExportJob
def prepare_preview(asset)
if asset.previewable? && !asset.list?
preview = asset.inline? ? asset.large_preview : asset.medium_preview
if preview.is_a?(ActiveStorage::Preview)
return unless preview.image.attached?
return unless preview.processed?
begin
file_name = preview.image.filename.to_s
file_data = preview.image.download
else
file_name = preview.blob.filename.to_s
file_data = nil
ActiveRecord::Base.transaction(requires_new: true) do
file_data = preview.processed.service.download(preview.key)
# handle files not processable by Vips (no preview available) or missing
rescue Vips::Error, ActiveStorage::FileNotFoundError => e
Rails.logger.error(e.message)
Rails.logger.error(e.backtrace.join("\n"))
raise ActiveRecord::Rollback
end
return nil if file_data.blank?
rescue ActiveStorage::FileNotFoundError => e
Rails.logger.error(e.message)
Rails.logger.error(e.backtrace.join("\n"))
return
end
{

View file

@ -16,6 +16,8 @@ class ZipExportJob < ApplicationJob
@zip_export.zip_file.attach(io: File.open(full_zip_name), filename: zip_name)
generate_notification!
end
rescue Errno::ENOENT => e
Rails.logger.error(e.message)
ensure
FileUtils.rm_rf([zip_input_dir, full_zip_name], secure: true)
I18n.backend.date_format = nil

View file

@ -60,7 +60,7 @@
</div>
</div>
<div class="report-element-children">
<%= render partial: 'reports/elements/my_module_protocol_element', locals: { protocol: my_module.protocol, export_all: true } %>
<%= render partial: 'reports/elements/my_module_protocol_element', locals: { protocol: my_module.protocol, export_all: export_all } %>
<% filter_steps_for_report(my_module.protocol.steps, @settings).order(:position).each do |step| %>
<%= render partial: 'reports/elements/my_module_step_element', locals: { step: step, export_all: export_all } %>
@ -85,7 +85,7 @@
<% if element.orderable_type == "ResultTable" %>
<%= render partial: 'reports/elements/my_module_result_table_element', locals: { result: result, export_all: export_all, element: element} %>
<% elsif element.orderable_type == "ResultText" %>
<%= render partial: 'reports/elements/my_module_result_text_element', locals: { result: result, export_all: true, element: element } %>
<%= render partial: 'reports/elements/my_module_result_text_element', locals: { result: result, export_all: export_all, element: element } %>
<% end %>
<% end %>
@ -110,7 +110,7 @@
<% if @settings.dig('task', 'activities') %>
<div class="report-element-children">
<%= render partial: 'reports/elements/my_module_activity_element', locals: { my_module: my_module, export_all: true } %>
<%= render partial: 'reports/elements/my_module_activity_element', locals: { my_module: my_module, export_all: export_all } %>
</div>
<% end %>
</div>

View file

@ -36,7 +36,7 @@
<% end %>
<% if @settings.dig('task', 'protocol', 'step_files') %>
<% assets.each do |asset| %>
<%= render partial: 'reports/elements/step_asset_element', locals: { asset: asset, export_all: false } %>
<%= render partial: 'reports/elements/step_asset_element', locals: { asset: asset, export_all: export_all } %>
<% end %>
<% end %>
<% if @settings.dig('task', 'protocol', 'step_comments') %>