From 479345a76f5c613337075dcc3d72dfaf0f4280ba Mon Sep 17 00:00:00 2001 From: Jukka Jokiniva Date: Mon, 14 Jan 2019 09:51:31 +0200 Subject: Add QtStage permission QtStage permission controls stage and unstage functionality. Change-Id: Iea161ee5c2f86c48421c50ee8c6b87d8094d3c68 (cherry picked from commit 3bf45d6f5b4fb0419c5a82a049b00a70d74883de) Reviewed-by: Jukka Jokiniva --- java/com/google/gerrit/common/data/Permission.java | 2 ++ java/com/google/gerrit/server/permissions/ChangeControl.java | 2 ++ java/com/google/gerrit/server/permissions/ChangePermission.java | 3 ++- .../google/gerrit/server/permissions/DefaultPermissionMappings.java | 1 + java/com/google/gerrit/server/query/change/InternalChangeQuery.java | 2 +- .../app/behaviors/gr-access-behavior/gr-access-behavior.html | 4 ++++ 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/java/com/google/gerrit/common/data/Permission.java b/java/com/google/gerrit/common/data/Permission.java index 3ba0ba75d1..f91df4b6dc 100644 --- a/java/com/google/gerrit/common/data/Permission.java +++ b/java/com/google/gerrit/common/data/Permission.java @@ -48,6 +48,7 @@ public class Permission implements Comparable { public static final String SUBMIT_AS = "submitAs"; public static final String TOGGLE_WORK_IN_PROGRESS_STATE = "toggleWipState"; public static final String VIEW_PRIVATE_CHANGES = "viewPrivateChanges"; + public static final String QT_STAGE = "stage"; private static final List NAMES_LC; private static final int LABEL_INDEX; @@ -81,6 +82,7 @@ public class Permission implements Comparable { NAMES_LC.add(SUBMIT_AS.toLowerCase()); NAMES_LC.add(TOGGLE_WORK_IN_PROGRESS_STATE.toLowerCase()); NAMES_LC.add(VIEW_PRIVATE_CHANGES.toLowerCase()); + NAMES_LC.add(QT_STAGE.toLowerCase()); LABEL_INDEX = NAMES_LC.indexOf(Permission.LABEL); LABEL_AS_INDEX = NAMES_LC.indexOf(Permission.LABEL_AS.toLowerCase()); diff --git a/java/com/google/gerrit/server/permissions/ChangeControl.java b/java/com/google/gerrit/server/permissions/ChangeControl.java index 07cb50d34b..07760671e9 100644 --- a/java/com/google/gerrit/server/permissions/ChangeControl.java +++ b/java/com/google/gerrit/server/permissions/ChangeControl.java @@ -312,6 +312,8 @@ class ChangeControl { case REMOVE_REVIEWER: case SUBMIT_AS: return refControl.canPerform(changePermissionName(perm)); + case QT_STAGE: + return refControl.canPerform(Permission.QT_STAGE); } } catch (StorageException e) { throw new PermissionBackendException("unavailable", e); diff --git a/java/com/google/gerrit/server/permissions/ChangePermission.java b/java/com/google/gerrit/server/permissions/ChangePermission.java index 2fba4ef039..458c01f63d 100644 --- a/java/com/google/gerrit/server/permissions/ChangePermission.java +++ b/java/com/google/gerrit/server/permissions/ChangePermission.java @@ -56,7 +56,8 @@ public enum ChangePermission implements ChangePermissionOrLabel { REBASE, SUBMIT, SUBMIT_AS("submit on behalf of other users"), - TOGGLE_WORK_IN_PROGRESS_STATE; + TOGGLE_WORK_IN_PROGRESS_STATE, + QT_STAGE("stage change for CI"); private final String description; diff --git a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java index 82150831d3..f17cc05912 100644 --- a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java +++ b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java @@ -101,6 +101,7 @@ public class DefaultPermissionMappings { .put( ChangePermission.TOGGLE_WORK_IN_PROGRESS_STATE, Permission.TOGGLE_WORK_IN_PROGRESS_STATE) + .put(ChangePermission.QT_STAGE, Permission.QT_STAGE) .build(); private static > void checkMapContainsAllEnumValues( diff --git a/java/com/google/gerrit/server/query/change/InternalChangeQuery.java b/java/com/google/gerrit/server/query/change/InternalChangeQuery.java index 720896b0d4..6c3d003131 100644 --- a/java/com/google/gerrit/server/query/change/InternalChangeQuery.java +++ b/java/com/google/gerrit/server/query/change/InternalChangeQuery.java @@ -152,7 +152,7 @@ public class InternalChangeQuery extends InternalQuery byBranchStatus(BranchNameKey branch, Change.Status status) throws OrmException { + public List byBranchStatus(BranchNameKey branch, Change.Status status) { return query(and(ref(branch), project(branch.project()), status(status))); } diff --git a/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.html b/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.html index 0c75c44887..8161024f42 100644 --- a/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.html +++ b/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.html @@ -112,6 +112,10 @@ limitations under the License. id: 'removeReviewer', name: 'Remove Reviewer', }, + stage: { + id: 'stage', + name: 'QtStage', + }, submit: { id: 'submit', name: 'Submit', -- cgit v1.2.3