diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-02-16 00:26:33 -0200 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-02-20 12:10:26 -0200 |
commit | e81061a211fedf9adaca8b053b6633988fdd5644 (patch) | |
tree | 4855440c7b31169eb2fc53ee8f80083cf21c8e26 /app/services/issues | |
parent | 48ddf9a407e0f98949301de7a2cbd7d62f8a4e47 (diff) | |
download | gitlab-ce-e81061a211fedf9adaca8b053b6633988fdd5644.tar.gz |
Marks pending tasks for an user as done when he edit an issue
Diffstat (limited to 'app/services/issues')
-rw-r--r-- | app/services/issues/update_service.rb | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb index e6afcb91652..fb9571247cc 100644 --- a/app/services/issues/update_service.rb +++ b/app/services/issues/update_service.rb @@ -4,7 +4,11 @@ module Issues update(issue) end - def handle_changes(issue) + def handle_changes(issue, options = {}) + if have_changes?(issue, options) + task_service.mark_as_done(issue, current_user) + end + if issue.previous_changes.include?('milestone_id') create_milestone_note(issue) end @@ -23,5 +27,22 @@ module Issues def close_service Issues::CloseService end + + private + + def have_changes?(issue, options = {}) + valid_attrs = [:title, :description, :assignee_id, :milestone_id] + + attrs_changed = valid_attrs.any? do |attr| + issue.previous_changes.include?(attr.to_s) + end + + old_labels = options[:old_labels] + labels_changed = old_labels && issue.labels != old_labels + + if attrs_changed || labels_changed + task_service.mark_as_done(issue, current_user) + end + end end end |