Index: app/models/time_entry.rb =================================================================== --- app/models/time_entry.rb (revision 13434) +++ app/models/time_entry.rb (working copy) @@ -42,6 +42,7 @@ validates_length_of :comments, :maximum => 255, :allow_nil => true validates :spent_on, :date => true before_validation :set_project_if_nil + before_validation :set_project_activity_if_needed validate :validate_time_entry scope :visible, lambda {|*args| @@ -93,6 +94,17 @@ self.project = issue.project if issue && project.nil? end + # If the activity_id corresponds to the system activity, and an equivalent project activity exists, then change the activity_id + # to be that of the project instead (needed because only the system activity_id is exposed by the REST API). + def set_project_activity_if_needed + if self.project + project_activity = TimeEntryActivity.find {|a| a['project_id'] == self.project.id && a['parent_id'] == self.activity_id } + if project_activity + self.activity_id = project_activity.id + end + end + end + def validate_time_entry errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000) errors.add :project_id, :invalid if project.nil?