From 6f5f187707bde1fe483de12a46dd9700768405ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Fri, 17 Apr 2020 10:33:40 +0200 Subject: [PATCH] [32858] Ensure bim seeders run only in bim mode Roles and settings were still seeded even in classic mode, causing roles to break. https://community.openproject.com/wp/32858 [ci skip] --- .../app/seeders/bim/basic_data/role_seeder.rb | 58 +++++++++++++++++++ .../seeders/bim/basic_data/setting_seeder.rb} | 24 ++++---- .../bim/app/seeders/bim/basic_data_seeder.rb | 4 +- modules/bim/lib/open_project/bim/engine.rb | 2 - .../bim/patches/role_seeder_patch.rb | 35 ----------- .../work_package_board_seeder_patch.rb | 2 +- 6 files changed, 71 insertions(+), 54 deletions(-) create mode 100644 modules/bim/app/seeders/bim/basic_data/role_seeder.rb rename modules/bim/{lib/open_project/bim/patches/setting_seeder_patch.rb => app/seeders/bim/basic_data/setting_seeder.rb} (78%) delete mode 100644 modules/bim/lib/open_project/bim/patches/role_seeder_patch.rb diff --git a/modules/bim/app/seeders/bim/basic_data/role_seeder.rb b/modules/bim/app/seeders/bim/basic_data/role_seeder.rb new file mode 100644 index 0000000000..07fea9071c --- /dev/null +++ b/modules/bim/app/seeders/bim/basic_data/role_seeder.rb @@ -0,0 +1,58 @@ +#-- encoding: UTF-8 +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2020 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-2017 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 docs/COPYRIGHT.rdoc for more details. +#++ +module Bim + module BasicData + class RoleSeeder < ::BasicData::RoleSeeder + + def member + super.tap do |role_data| + role_data[:permissions] += %i[view_linked_issues manage_bcf delete_work_packages] + end + end + + def reader + super.tap do |role_data| + role_data[:permissions] += %i[view_linked_issues] + end + end + + def non_member + super.tap do |role_data| + role_data[:permissions] += %i[view_linked_issues] + end + end + + def anonymous + super.tap do |role_data| + role_data[:permissions] += %i[view_linked_issues] + end + end + end + end +end diff --git a/modules/bim/lib/open_project/bim/patches/setting_seeder_patch.rb b/modules/bim/app/seeders/bim/basic_data/setting_seeder.rb similarity index 78% rename from modules/bim/lib/open_project/bim/patches/setting_seeder_patch.rb rename to modules/bim/app/seeders/bim/basic_data/setting_seeder.rb index 3432f73753..535af17b84 100644 --- a/modules/bim/lib/open_project/bim/patches/setting_seeder_patch.rb +++ b/modules/bim/app/seeders/bim/basic_data/setting_seeder.rb @@ -1,3 +1,4 @@ +#-- encoding: UTF-8 #-- copyright # OpenProject is an open source project management software. # Copyright (C) 2012-2020 the OpenProject GmbH @@ -25,21 +26,16 @@ # # See docs/COPYRIGHT.rdoc for more details. #++ - -module OpenProject::Bim::Patches::SettingSeederPatch - def self.included(base) # :nodoc: - base.prepend InstanceMethods - end - - module InstanceMethods - def data - original_data = super - - unless original_data['default_projects_modules'].include? 'bim' - original_data['default_projects_modules'] << 'bim' +module Bim + module BasicData + class SettingSeeder < ::BasicData::SettingSeeder + def data + super.tap do |original_data| + unless original_data['default_projects_modules'].include? 'bim' + original_data['default_projects_modules'] << 'bim' + end + end end - - original_data end end end diff --git a/modules/bim/app/seeders/bim/basic_data_seeder.rb b/modules/bim/app/seeders/bim/basic_data_seeder.rb index feef0aae97..7cafc22f93 100644 --- a/modules/bim/app/seeders/bim/basic_data_seeder.rb +++ b/modules/bim/app/seeders/bim/basic_data_seeder.rb @@ -32,14 +32,14 @@ module Bim def data_seeder_classes [ ::BasicData::BuiltinRolesSeeder, - ::BasicData::RoleSeeder, + ::Bim::BasicData::RoleSeeder, ::Bim::BasicData::ActivitySeeder, ::BasicData::ColorSeeder, ::BasicData::ColorSchemeSeeder, ::Bim::BasicData::CustomStyleSeeder, ::Bim::BasicData::WorkflowSeeder, ::Bim::BasicData::PrioritySeeder, - ::BasicData::SettingSeeder + ::Bim::BasicData::SettingSeeder ] end end diff --git a/modules/bim/lib/open_project/bim/engine.rb b/modules/bim/lib/open_project/bim/engine.rb index 911dcbf1c3..aa54886448 100644 --- a/modules/bim/lib/open_project/bim/engine.rb +++ b/modules/bim/lib/open_project/bim/engine.rb @@ -91,8 +91,6 @@ module OpenProject::Bim patches %i[WorkPackage Type Journal RootSeeder Project] patch_with_namespace :OpenProject, :CustomStyles, :Design - patch_with_namespace :BasicData, :SettingSeeder - patch_with_namespace :BasicData, :RoleSeeder patch_with_namespace :API, :V3, :Activities, :ActivityRepresenter patch_with_namespace :Journal, :AggregatedJournal patch_with_namespace :API, :V3, :Activities, :ActivitiesSharedHelpers diff --git a/modules/bim/lib/open_project/bim/patches/role_seeder_patch.rb b/modules/bim/lib/open_project/bim/patches/role_seeder_patch.rb deleted file mode 100644 index 5278e964af..0000000000 --- a/modules/bim/lib/open_project/bim/patches/role_seeder_patch.rb +++ /dev/null @@ -1,35 +0,0 @@ -module OpenProject::Bim::Patches::RoleSeederPatch - def self.included(base) # :nodoc: - base.prepend InstanceMethods - end - - module InstanceMethods - def member - role_attributes = super - role_attributes[:permissions] = role_attributes[:permissions] + %i[view_linked_issues manage_bcf] - - role_attributes - end - - def reader - role_attributes = super - role_attributes[:permissions] = role_attributes[:permissions] + %i[view_linked_issues] - - role_attributes - end - - def non_member - role_attributes = super - role_attributes[:permissions] = role_attributes[:permissions] + %i[view_linked_issues] - - role_attributes - end - - def anonymous - role_attributes = super - role_attributes[:permissions] = role_attributes[:permissions] + %i[view_linked_issues] - - role_attributes - end - end -end diff --git a/modules/bim/lib/open_project/bim/patches/work_package_board_seeder_patch.rb b/modules/bim/lib/open_project/bim/patches/work_package_board_seeder_patch.rb index 59bbc12057..537d458256 100644 --- a/modules/bim/lib/open_project/bim/patches/work_package_board_seeder_patch.rb +++ b/modules/bim/lib/open_project/bim/patches/work_package_board_seeder_patch.rb @@ -7,7 +7,7 @@ module OpenProject::Bim::Patches::WorkPackageBoardSeederPatch def seed_data! super - if project_has_data_for?(key, 'boards.bcf') + if OpenProject::Configuration.bim? && project_has_data_for?(key, 'boards.bcf') print ' ↳ Creating demo BCF board' seed_bcf_board puts