Defect #18095 ยป set_project_activity_if_needed.diff
app/models/time_entry.rb (working copy) | ||
---|---|---|
42 | 42 |
validates_length_of :comments, :maximum => 255, :allow_nil => true |
43 | 43 |
validates :spent_on, :date => true |
44 | 44 |
before_validation :set_project_if_nil |
45 |
before_validation :set_project_activity_if_needed |
|
45 | 46 |
validate :validate_time_entry |
46 | 47 | |
47 | 48 |
scope :visible, lambda {|*args| |
... | ... | |
93 | 94 |
self.project = issue.project if issue && project.nil? |
94 | 95 |
end |
95 | 96 | |
97 |
# If the activity_id corresponds to the system activity, and an equivalent project activity exists, then change the activity_id |
|
98 |
# to be that of the project instead (needed because only the system activity_id is exposed by the REST API). |
|
99 |
def set_project_activity_if_needed |
|
100 |
if self.project |
|
101 |
project_activity = TimeEntryActivity.find {|a| a['project_id'] == self.project.id && a['parent_id'] == self.activity_id } |
|
102 |
if project_activity |
|
103 |
self.activity_id = project_activity.id |
|
104 |
end |
|
105 |
end |
|
106 |
end |
|
107 |
|
|
96 | 108 |
def validate_time_entry |
97 | 109 |
errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000) |
98 | 110 |
errors.add :project_id, :invalid if project.nil? |