mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Allow meeting outcomes to have an author
This commit is contained in:
@@ -37,10 +37,6 @@ Rails.application.reloader.to_prepare do
|
||||
"CostEntry" => %i[logged_by_id user_id],
|
||||
"CostQuery" => :user_id,
|
||||
"::Doorkeeper::Application" => :owner_id,
|
||||
"MeetingAgenda" => :author_id,
|
||||
"MeetingAgendaItem" => %i[author_id presenter_id],
|
||||
"MeetingMinutes" => :author_id,
|
||||
"MeetingParticipant" => :user_id,
|
||||
"Message" => :author_id,
|
||||
"News" => :author_id,
|
||||
"::Notification" => :actor_id,
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
class MeetingOutcome < ApplicationRecord
|
||||
belongs_to :meeting_agenda_item
|
||||
belongs_to :work_package
|
||||
belongs_to :author, class_name: "User", optional: true
|
||||
|
||||
enum :kind, {
|
||||
information: 0,
|
||||
|
||||
@@ -30,5 +30,10 @@
|
||||
|
||||
module MeetingOutcomes
|
||||
class SetAttributesService < ::BaseServices::SetAttributes
|
||||
def set_default_attributes(_params)
|
||||
model.change_by_system do
|
||||
model.author = user
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddAuthorToOutcome < ActiveRecord::Migration[8.0]
|
||||
def change
|
||||
add_reference :meeting_outcomes,
|
||||
:author,
|
||||
type: :bigint,
|
||||
foreign_key: { to_table: :users },
|
||||
null: true,
|
||||
index: true
|
||||
end
|
||||
end
|
||||
@@ -189,6 +189,11 @@ module OpenProject::Meeting
|
||||
patches [:Project]
|
||||
patch_with_namespace :BasicData, :SettingSeeder
|
||||
|
||||
replace_principal_references "Meeting" => %i[author_id],
|
||||
"MeetingAgendaItem" => %i[author_id presenter_id],
|
||||
"MeetingParticipant" => :user_id,
|
||||
"MeetingOutcome" => :author_id
|
||||
|
||||
extend_api_response(:v3, :work_packages, :work_package,
|
||||
&::OpenProject::Meeting::Patches::API::WorkPackageRepresenter.extension)
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
#-- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
#++
|
||||
|
||||
require "spec_helper"
|
||||
|
||||
RSpec.describe Principals::DeleteJob, "Meetings", type: :model do
|
||||
subject(:job) { described_class.perform_now(principal) }
|
||||
|
||||
shared_let(:deleted_user) do
|
||||
create(:deleted_user)
|
||||
end
|
||||
let(:principal) do
|
||||
create(:user)
|
||||
end
|
||||
|
||||
context "with a meeting" 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) }
|
||||
|
||||
it "rewrites the references" do
|
||||
job
|
||||
|
||||
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
|
||||
end
|
||||
end
|
||||
end
|
||||
+6
@@ -53,6 +53,12 @@ RSpec.describe Principals::ReplaceReferencesService, "#call", type: :model do
|
||||
:presenter_id
|
||||
end
|
||||
|
||||
context "with MeetingOutcome" do
|
||||
it_behaves_like "rewritten record",
|
||||
:meeting_outcome,
|
||||
:author_id
|
||||
end
|
||||
|
||||
context "with Journal::MeetingAgendaItemJournal" do
|
||||
it_behaves_like "rewritten record",
|
||||
:journal_meeting_agenda_item_journal,
|
||||
|
||||
Reference in New Issue
Block a user