mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Change replacement_patterns_defined to require an attribute name
This ensures that the method is only used in contexts where we know for which attribute we expect a replacement pattern to be defined. This change makes errors less likely where one would expect that all replacement patterns are defined for subjects (which is the status quo as implemented, but not as designed). Also all code that I've seen so far that calls this method, needed to validate the subject attribute separately afterwards. This change should make such code shorter.
This commit is contained in:
+2
-4
@@ -104,10 +104,8 @@ class Type < ApplicationRecord
|
||||
object.types.include?(self)
|
||||
end
|
||||
|
||||
def replacement_patterns_defined?
|
||||
return false if patterns.blank?
|
||||
|
||||
enabled_patterns.any?
|
||||
def replacement_pattern_defined_for?(attribute)
|
||||
enabled_patterns.key?(attribute)
|
||||
end
|
||||
|
||||
def enabled_patterns
|
||||
|
||||
@@ -73,8 +73,7 @@ class WorkPackages::CreateService < BaseServices::BaseCallable
|
||||
end
|
||||
|
||||
def set_templated_subject(work_package)
|
||||
return true unless work_package.type&.replacement_patterns_defined?
|
||||
return true unless work_package.type.enabled_patterns[:subject]
|
||||
return true unless work_package.type&.replacement_pattern_defined_for?(:subject)
|
||||
|
||||
work_package.subject = work_package.type.enabled_patterns[:subject].resolve(work_package)
|
||||
work_package.save
|
||||
|
||||
@@ -49,9 +49,7 @@ class WorkPackages::SetAttributesService < BaseServices::SetAttributes
|
||||
end
|
||||
|
||||
def mark_templated_subject
|
||||
return true unless work_package.type&.replacement_patterns_defined?
|
||||
|
||||
if work_package.type.patterns.all_enabled[:subject]
|
||||
if work_package.type&.replacement_pattern_defined_for?(:subject)
|
||||
work_package.subject = "Templated by #{work_package.type.name}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -42,9 +42,7 @@ class WorkPackages::UpdateService < BaseServices::Update
|
||||
private
|
||||
|
||||
def set_templated_attributes
|
||||
return unless model.type.replacement_patterns_defined?
|
||||
|
||||
model.type.patterns.all_enabled.each do |key, pattern|
|
||||
model.type.enabled_patterns.each do |key, pattern|
|
||||
model.public_send(:"#{key}=", pattern.resolve(model))
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user