From 2d0985c58ec3b2a57cd5f9fd4d2ee043719bf713 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Oct 2021 13:33:02 +0000 Subject: [PATCH 1/4] build(deps): bump url-parse from 1.5.1 to 1.5.3 Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2405e6532..04145cfd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12817,15 +12817,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" - integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url-parse@^1.5.3: +url-parse@^1.4.3, url-parse@^1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== From 13883393eb4647bd02fc9dda14689bdac342f727 Mon Sep 17 00:00:00 2001 From: kara Diaby Date: Wed, 6 Oct 2021 16:41:08 +0200 Subject: [PATCH 2/4] modify layout --- .../new_administrateur/groupe_instructeurs/_edit.html.haml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/new_administrateur/groupe_instructeurs/_edit.html.haml b/app/views/new_administrateur/groupe_instructeurs/_edit.html.haml index 98892fd39..02017ede1 100644 --- a/app/views/new_administrateur/groupe_instructeurs/_edit.html.haml +++ b/app/views/new_administrateur/groupe_instructeurs/_edit.html.haml @@ -33,6 +33,9 @@ %thead %tr %th{ colspan: 2 }= t(".existing_groupe", count: groupes_instructeurs.total_count) + %th + - if groupe_instructeurs_count > 1 + = link_to "Exporter au format CSV", export_groupe_instructeurs_admin_procedure_groupe_instructeurs_path(procedure, format: :csv) %tbody - groupes_instructeurs.each do |group| %tr @@ -49,7 +52,6 @@ = link_to reaffecter_dossiers_admin_procedure_groupe_instructeur_path(procedure, group), class: 'button', title:'Réaffecter les dossiers à un autre groupe afin de pouvoir le supprimer' do %span.icon.follow déplacer les dossiers - - if groupe_instructeurs_count > 1 - = link_to "Exporter au format CSV", export_groupe_instructeurs_admin_procedure_groupe_instructeurs_path(procedure, format: :csv) + = paginate groupes_instructeurs From 9d5c5447c29c424c6de2a25bf3604be389fec755 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Wed, 6 Oct 2021 13:16:25 +0200 Subject: [PATCH 3/4] fix(dossier): do not attempt to destroy transfers when a dossier is destroyed we had a dependent option on both sides of a relationship which created race conditions --- app/models/dossier.rb | 2 +- spec/factories/dossier_transfer.rb | 5 +++++ spec/models/dossier_spec.rb | 6 +++++- spec/models/dossier_transfer_spec.rb | 11 +++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 spec/factories/dossier_transfer.rb diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 3956c14f9..0e8aee571 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -124,7 +124,7 @@ class Dossier < ApplicationRecord has_many :types_de_champ, through: :revision has_many :types_de_champ_private, through: :revision - belongs_to :transfer, class_name: 'DossierTransfer', foreign_key: 'dossier_transfer_id', optional: true, inverse_of: :dossiers, dependent: :destroy + belongs_to :transfer, class_name: 'DossierTransfer', foreign_key: 'dossier_transfer_id', optional: true, inverse_of: :dossiers has_many :transfer_logs, class_name: 'DossierTransferLog', dependent: :destroy accepts_nested_attributes_for :champs diff --git a/spec/factories/dossier_transfer.rb b/spec/factories/dossier_transfer.rb new file mode 100644 index 000000000..fef311665 --- /dev/null +++ b/spec/factories/dossier_transfer.rb @@ -0,0 +1,5 @@ +FactoryBot.define do + factory :dossier_transfer do + email { generate(:user_email) } + end +end diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 8886cc206..df75ca854 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -1439,14 +1439,18 @@ describe Dossier do end describe "#destroy" do - let(:dossier) { create(:dossier) } + let(:transfer) { create(:dossier_transfer) } + let(:dossier) { create(:dossier, transfer: transfer) } + before do + create(:dossier, transfer: transfer) create(:attestation, dossier: dossier) create(:attestation, dossier: dossier) end it "can destroy dossier with two attestations" do expect(dossier.destroy).to be_truthy + expect(transfer.reload).not_to be_nil end end diff --git a/spec/models/dossier_transfer_spec.rb b/spec/models/dossier_transfer_spec.rb index 161b03b11..a834b6a26 100644 --- a/spec/models/dossier_transfer_spec.rb +++ b/spec/models/dossier_transfer_spec.rb @@ -46,5 +46,16 @@ RSpec.describe DossierTransfer, type: :model do it { expect(DossierTransfer.with_dossiers.count).to eq(0) } end end + + describe 'dossier relationship' do + let(:transfer) { create(:dossier_transfer) } + let(:dossier) { create(:dossier, user: user, transfer: transfer) } + + it 'nullify transfer relationship on dossier' do + expect(dossier.transfer).to eq(transfer) + transfer.destroy + expect(dossier.reload.transfer).to be_nil + end + end end end From 70c33afcfed6c07ed96bfc69f2d3fb86c0e4e541 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Wed, 6 Oct 2021 17:48:07 +0200 Subject: [PATCH 4/4] fix(avis): remove avis without dossier --- .../20211006154552_remove_orphaned_avis.rake | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lib/tasks/deployment/20211006154552_remove_orphaned_avis.rake diff --git a/lib/tasks/deployment/20211006154552_remove_orphaned_avis.rake b/lib/tasks/deployment/20211006154552_remove_orphaned_avis.rake new file mode 100644 index 000000000..f782cf6b1 --- /dev/null +++ b/lib/tasks/deployment/20211006154552_remove_orphaned_avis.rake @@ -0,0 +1,22 @@ +namespace :after_party do + desc 'Deployment task: remove_orphaned_avis' + task remove_orphaned_avis: :environment do + puts "Running deploy task 'remove_orphaned_avis'" + + avis = Avis.unscope(:joins) + .joins('LEFT JOIN dossiers ON dossiers.id = avis.dossier_id') + .where(dossiers: { id: nil }) + progress = ProgressReport.new(avis.count) + + avis.find_each do |avis| + avis.destroy + 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