summaryrefslogtreecommitdiffstats
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorMarius Mathiesen <marius.mathiesen@gmail.com>2009-05-19 13:07:03 +0200
committerMarius Mathiesen <marius.mathiesen@gmail.com>2009-05-19 14:15:44 +0200
commitbfe0ec74ef90200849f142b2aef61270183eec12 (patch)
tree456ef0f887c8b63a93d0686690b6d64450c437e4 /app/models/merge_request.rb
parent70889ced393f76bf94e5c5416fa4b8c8cf236000 (diff)
downloadgitorious-mainline-outdated-bfe0ec74ef90200849f142b2aef61270183eec12.zip
gitorious-mainline-outdated-bfe0ec74ef90200849f142b2aef61270183eec12.tar.gz
gitorious-mainline-outdated-bfe0ec74ef90200849f142b2aef61270183eec12.tar.bz2
Adding support for re-opening merge requests.
This is an explicit action, wrapped inside a separate method in MergeRequest which passes along the user who wants to re-open. - Also added a new Action and rendering of the events
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index dab8dad..bc6a16b 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -68,6 +68,10 @@ class MergeRequest < ActiveRecord::Base
event :merge do
transition [:open, :verifying] => :merged
end
+
+ event :reopen do
+ transition [:merged, :rejected] => :open
+ end
end
named_scope :open, :conditions => ['status in (?)', [STATUS_OPEN, STATUS_VERIFYING]]
@@ -75,6 +79,16 @@ class MergeRequest < ActiveRecord::Base
named_scope :merged, :conditions => ["status = ?", [STATUS_MERGED]]
named_scope :rejected, :conditions => ["status = ?", [STATUS_REJECTED]]
+ def reopen_with_user(a_user)
+ if can_be_reopened_by?(a_user)
+ return reopen
+ end
+ end
+
+ def can_be_reopened_by?(a_user)
+ return can_reopen? && resolvable_by?(a_user)
+ end
+
def self.human_name
I18n.t("activerecord.models.merge_request")
end