From 70f0535dbd8757b65269bbd0f2b4491a2dcf1e7a Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Thu, 27 May 2021 16:31:41 +0200 Subject: [PATCH] Fix deletion of old reports [SCI-5751] --- app/helpers/reports_helper.rb | 8 ++++---- app/models/report.rb | 7 ++----- app/models/report_element.rb | 6 ++---- app/services/reports/docx/draw_experiment.rb | 2 +- app/services/reports/docx/draw_my_module.rb | 2 +- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb index 523c0c5ba..e2c357ff1 100644 --- a/app/helpers/reports_helper.rb +++ b/app/helpers/reports_helper.rb @@ -26,9 +26,9 @@ module ReportsHelper # Render no children elsif element.result? # Special handling for result comments - if element.has_children? + if element.children.active.present? children_html.safe_concat render_new_element(true) - element.children.each do |child| + element.children.active.each do |child| children_html .safe_concat render_report_element(child, provided_locals) end @@ -36,8 +36,8 @@ module ReportsHelper children_html.safe_concat render_new_element(false) end else - if element.has_children? - element.children.each do |child| + if element.children.active.present? + element.children.active.each do |child| children_html.safe_concat render_new_element(false) children_html .safe_concat render_report_element(child, provided_locals) diff --git a/app/models/report.rb b/app/models/report.rb index 3ec07e657..5d08e38e5 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -31,10 +31,7 @@ class Report < ApplicationRecord # Report either has many report elements (if grouped by timestamp), # or many module elements (if grouped by module) - has_many :report_elements, - -> { where(type_of: ReportExtends::ACTIVE_REPORT_ELEMENTS) }, - inverse_of: :report, - dependent: :delete_all + has_many :report_elements, inverse_of: :report, dependent: :delete_all DEFAULT_SETTINGS = { all_tasks: true, @@ -93,7 +90,7 @@ class Report < ApplicationRecord end def root_elements - report_elements.order(:position).select { |el| el.parent.blank? } + report_elements.active.where(parent: nil).order(:position) end # Clean report elements from report diff --git a/app/models/report_element.rb b/app/models/report_element.rb index 04908e002..94b296f73 100644 --- a/app/models/report_element.rb +++ b/app/models/report_element.rb @@ -18,7 +18,7 @@ class ReportElement < ApplicationRecord # Hierarchical structure representation has_many :children, - -> { where(type_of: ReportExtends::ACTIVE_REPORT_ELEMENTS).order(:position) }, + -> { order(:position) }, class_name: 'ReportElement', foreign_key: 'parent_id', dependent: :destroy @@ -36,9 +36,7 @@ class ReportElement < ApplicationRecord belongs_to :repository, inverse_of: :report_elements, optional: true, foreign_key: :repository_id, class_name: 'RepositoryBase' - def has_children? - children.length > 0 - end + scope :active, -> { where(type_of: ReportExtends::ACTIVE_REPORT_ELEMENTS) } def result? result_asset? or result_table? or result_text? diff --git a/app/services/reports/docx/draw_experiment.rb b/app/services/reports/docx/draw_experiment.rb index 2a9717394..de91d5c3a 100644 --- a/app/services/reports/docx/draw_experiment.rb +++ b/app/services/reports/docx/draw_experiment.rb @@ -25,7 +25,7 @@ module Reports::Docx::DrawExperiment Reports::HtmlToWordConverter.new(@docx, { scinote_url: scinote_url, link_style: link_style }).html_to_word_converter(html) @docx.p - subject.children.each do |child| + subject.children.active.each do |child| public_send("draw_#{child.type_of}", child) end end diff --git a/app/services/reports/docx/draw_my_module.rb b/app/services/reports/docx/draw_my_module.rb index b44331694..af3f24382 100644 --- a/app/services/reports/docx/draw_my_module.rb +++ b/app/services/reports/docx/draw_my_module.rb @@ -89,7 +89,7 @@ module Reports::Docx::DrawMyModule end @docx.p - subject.children.each do |child| + subject.children.active.each do |child| public_send("draw_#{child.type_of}", child) end