From e6e81fff38afd9c7e0b5c24fe7d3aa9b4f194e70 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 3 Dec 2025 11:03:37 +0100 Subject: [PATCH] [69517] Dereference RecurringMeeting author_id when deleting a user https://community.openproject.org/wp/69517 Also partly backport b1840ebff90 from `release/17.0` branch to try to minimize future git conflicts when that gets merged. It removes the `:author_id` references from `MeetingAgenda` and `MeetingMinutes`. They are old tables that are no longer in use since 16.0. --- modules/meeting/lib/open_project/meeting/engine.rb | 5 ++--- .../spec/services/principals/delete_job_integration_spec.rb | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/meeting/lib/open_project/meeting/engine.rb b/modules/meeting/lib/open_project/meeting/engine.rb index a78da3b3bde..377cccf1db6 100644 --- a/modules/meeting/lib/open_project/meeting/engine.rb +++ b/modules/meeting/lib/open_project/meeting/engine.rb @@ -176,11 +176,10 @@ module OpenProject::Meeting patch_with_namespace :BasicData, :SettingSeeder replace_principal_references "Meeting" => %i[author_id], - "MeetingAgenda" => %i[author_id], - "MeetingMinutes" => %i[author_id], "MeetingAgendaItem" => %i[author_id presenter_id], + "MeetingOutcome" => :author_id, "MeetingParticipant" => :user_id, - "MeetingOutcome" => :author_id + "RecurringMeeting" => :author_id extend_api_response(:v3, :work_packages, :work_package, &::OpenProject::Meeting::Patches::API::WorkPackageRepresenter.extension) diff --git a/modules/meeting/spec/services/principals/delete_job_integration_spec.rb b/modules/meeting/spec/services/principals/delete_job_integration_spec.rb index 83e2911de42..3609964d05e 100644 --- a/modules/meeting/spec/services/principals/delete_job_integration_spec.rb +++ b/modules/meeting/spec/services/principals/delete_job_integration_spec.rb @@ -44,6 +44,7 @@ RSpec.describe Principals::DeleteJob, "Meetings", type: :model do let!(:meeting) { create(:meeting, author: principal) } let!(:meeting_agenda_item) { create(:meeting_agenda_item, presenter: principal) } let!(:meeting_outcome) { create(:meeting_outcome, meeting_agenda_item:, author: principal) } + let!(:recurring_meeting) { create(:recurring_meeting, author: principal) } it "rewrites the references" do job @@ -51,6 +52,7 @@ RSpec.describe Principals::DeleteJob, "Meetings", type: :model do expect(meeting.reload.author).to eq deleted_user expect(meeting_agenda_item.reload.presenter).to eq deleted_user expect(meeting_outcome.reload.author).to eq deleted_user + expect(recurring_meeting.reload.author).to eq deleted_user end end end