Class: WorkflowPermission
- Inherits:
-
WorkflowRule
- Object
- ActiveRecord::Base
- WorkflowRule
- WorkflowPermission
- Defined in:
- app/models/workflow_permission.rb
Overview
Redmine - project management software Copyright (C) 2006-2016 Jean-Philippe Lang
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.
Class Method Summary collapse
-
.replace_permissions(trackers, roles, permissions) ⇒ Object
Replaces the workflow permissions for the given trackers and roles.
-
.rules_by_status_id(trackers, roles) ⇒ Object
Returns the workflow permissions for the given trackers and roles grouped by status_id.
Methods inherited from WorkflowRule
Class Method Details
.replace_permissions(trackers, roles, permissions) ⇒ Object
Replaces the workflow permissions for the given trackers and roles
Example:
WorkflowPermission. trackers, roles, {'1' => {'start_date' => 'required', 'due_date' => 'readonly'}}
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/models/workflow_permission.rb', line 42 def self.(trackers, roles, ) trackers = Array.wrap trackers roles = Array.wrap roles transaction do .each { |status_id, rule_by_field| rule_by_field.each { |field, rule| where(:tracker_id => trackers.map(&:id), :role_id => roles.map(&:id), :old_status_id => status_id, :field_name => field).destroy_all if rule.present? trackers.each do |tracker| roles.each do |role| WorkflowPermission.create(:role_id => role.id, :tracker_id => tracker.id, :old_status_id => status_id, :field_name => field, :rule => rule) end end end } } end end |
.rules_by_status_id(trackers, roles) ⇒ Object
Returns the workflow permissions for the given trackers and roles grouped by status_id
Example:
WorkflowPermission.rules_by_status_id trackers, roles
# => {1 => {'start_date' => 'required', 'due_date' => 'readonly'}}
29 30 31 32 33 34 35 36 |
# File 'app/models/workflow_permission.rb', line 29 def self.rules_by_status_id(trackers, roles) WorkflowPermission.where(:tracker_id => trackers.map(&:id), :role_id => roles.map(&:id)).inject({}) do |h, w| h[w.old_status_id] ||= {} h[w.old_status_id][w.field_name] ||= [] h[w.old_status_id][w.field_name] << w.rule h end end |