Merge pull request #7438 from tchak/fix-parent-revision-id

fix(procedure): fix wrong parents
This commit is contained in:
Paul Chavard 2022-06-01 10:42:26 +02:00 committed by GitHub
commit 1c940c700d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 7 deletions

View file

@ -509,9 +509,11 @@ class Procedure < ApplicationRecord
procedure.service = self.service.clone_and_assign_to_administrateur(admin)
end
procedure.save
transaction do
procedure.save
move_new_children_to_new_parent_coordinate(procedure.draft_revision)
move_new_children_to_new_parent_coordinate(procedure.draft_revision)
end
if is_different_admin || from_library
procedure.draft_types_de_champ.each { |tdc| tdc.options&.delete(:old_pj) }
@ -728,13 +730,15 @@ class Procedure < ApplicationRecord
end
def create_new_revision
new_draft = draft_revision
.deep_clone(include: [:revision_types_de_champ])
.tap(&:save!)
transaction do
new_draft = draft_revision
.deep_clone(include: [:revision_types_de_champ])
.tap(&:save!)
move_new_children_to_new_parent_coordinate(new_draft)
move_new_children_to_new_parent_coordinate(new_draft)
new_draft
new_draft
end
end
def average_dossier_weight

View file

@ -0,0 +1,26 @@
namespace :after_party do
desc 'Deployment task: move_new_children_to_new_parent_coordinate'
task move_new_children_to_new_parent_coordinate: :environment do
puts "Running deploy task 'move_new_children_to_new_parent_coordinate'"
children = ProcedureRevisionTypeDeChamp
.includes(parent: :type_de_champ)
.where.not(parent_id: nil)
.filter { |child| child.revision_id != child.parent.revision_id }
progress = ProgressReport.new(children.size)
children.each do |child|
new_parent = child.revision.revision_types_de_champ.joins(:type_de_champ).find_by!(type_de_champ: { stable_id: child.parent.stable_id })
child.update!(parent: new_parent)
progress.inc
end
progress.finish
# Update task as completed. If you remove the line below, the task will
# run with every deploy (or every time you call after_party:run).
AfterParty::TaskRecord
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
end
end