diff options
author | Ismo Haataja <ismo.haataja@digia.com> | 2013-04-30 15:14:54 +0300 |
---|---|---|
committer | Ismo Haataja <ismo.haataja@digia.com> | 2013-08-22 07:42:01 +0200 |
commit | 8a29078540e2d9afb8fe1ff381424df5979d8d81 (patch) | |
tree | aee61f2446422712ebf4e54f368fd4a2be384ec4 /gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java | |
parent | 42d1d7d1aabd0dcfd0a0439c57c4427e5790136e (diff) |
Add new change state "deferred".v2.2.1-based
Support for new change state "deferred" to be able to discern
"really dead" from "postponed" changes. This is equal to "abandoned"
for all practical purposes except presentation and filtering. State
transitions are possible between "review in progress", "abandoned"
and "deferred". And menu bar has new "All/deferred" and "My/Deferred
Changes" default filters.
Task-number: QTQAINFRA-598
Change-Id: I57b4f716fb826c5f246d02463b1ed9c75c4d04ae
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java index c9652fef87..ce9023df04 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java @@ -166,9 +166,25 @@ public class ChangeControl { && (change.getStatus() != Change.Status.INTEGRATING); } + /** Can this user defer this change? */ + public boolean canDefer() { + if (change.getTopicId() != null) return false; + boolean userCan = isOwner() // owner (aka creator) of the change can defer + || getRefControl().isOwner() // branch owner can defer + || getProjectControl().isOwner() // project owner can defer + || getCurrentUser().isAdministrator() // site administers are god + ; + + // Cannot defer changes that are already processed by the continuous + // integration system. + return userCan + && (change.getStatus() != Change.Status.INTEGRATING); + } + /** Can this user restore this change? */ public boolean canRestore() { - return canAbandon(); // Anyone who can abandon the change can restore it back + // Anyone who can abandon or defer the change can restore it back + return canAbandon() || canDefer(); } /** All value ranges of any allowed label permission. */ |