Add new notify type that allows watching of new patch sets
Users can now watch the creation of new patch sets. They get notified if a new patch set is uploaded, but also if a rebase is done from the WebUI or the commit message is edited in the WebUI. Change-Id: Ieabc4c00d2b185e5b452ac43706cb0fdd9d87f77 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:

committed by
Shawn Pearce

parent
81f2be8cef
commit
1121475d1c
@@ -92,6 +92,7 @@ Types of notifications to send. If not specified, all notifications
|
|||||||
are sent.
|
are sent.
|
||||||
+
|
+
|
||||||
* `new_changes`: Only newly created changes.
|
* `new_changes`: Only newly created changes.
|
||||||
|
* `new_patchsets`: Only newly created patch sets.
|
||||||
* `all_comments`: Only comments on existing changes.
|
* `all_comments`: Only comments on existing changes.
|
||||||
* `submitted_changes`: Only changes that have been submitted.
|
* `submitted_changes`: Only changes that have been submitted.
|
||||||
* `all`: All notifications.
|
* `all`: All notifications.
|
||||||
|
@@ -96,6 +96,7 @@ public interface AccountConstants extends Constants {
|
|||||||
String watchedProjectFilter();
|
String watchedProjectFilter();
|
||||||
String watchedProjectColumnEmailNotifications();
|
String watchedProjectColumnEmailNotifications();
|
||||||
String watchedProjectColumnNewChanges();
|
String watchedProjectColumnNewChanges();
|
||||||
|
String watchedProjectColumnNewPatchSets();
|
||||||
String watchedProjectColumnAllComments();
|
String watchedProjectColumnAllComments();
|
||||||
String watchedProjectColumnSubmittedChanges();
|
String watchedProjectColumnSubmittedChanges();
|
||||||
|
|
||||||
|
@@ -95,6 +95,7 @@ watchedProjectName = Project Name
|
|||||||
watchedProjectFilter = Only If
|
watchedProjectFilter = Only If
|
||||||
watchedProjectColumnEmailNotifications = Email Notifications
|
watchedProjectColumnEmailNotifications = Email Notifications
|
||||||
watchedProjectColumnNewChanges = New Changes
|
watchedProjectColumnNewChanges = New Changes
|
||||||
|
watchedProjectColumnNewPatchSets = New Patch Sets
|
||||||
watchedProjectColumnAllComments = All Comments
|
watchedProjectColumnAllComments = All Comments
|
||||||
watchedProjectColumnSubmittedChanges = Submitted Changes
|
watchedProjectColumnSubmittedChanges = Submitted Changes
|
||||||
|
|
||||||
|
@@ -51,13 +51,15 @@ public class MyWatchesTable extends FancyFlexTable<AccountProjectWatchInfo> {
|
|||||||
fmt.setRowSpan(0, 2, 2);
|
fmt.setRowSpan(0, 2, 2);
|
||||||
DOM.setElementProperty(fmt.getElement(0, 3), "align", "center");
|
DOM.setElementProperty(fmt.getElement(0, 3), "align", "center");
|
||||||
|
|
||||||
fmt.setColSpan(0, 3, 3);
|
fmt.setColSpan(0, 3, 4);
|
||||||
table.setText(1, 0, Util.C.watchedProjectColumnNewChanges());
|
table.setText(1, 0, Util.C.watchedProjectColumnNewChanges());
|
||||||
table.setText(1, 1, Util.C.watchedProjectColumnAllComments());
|
table.setText(1, 1, Util.C.watchedProjectColumnNewPatchSets());
|
||||||
table.setText(1, 2, Util.C.watchedProjectColumnSubmittedChanges());
|
table.setText(1, 2, Util.C.watchedProjectColumnAllComments());
|
||||||
|
table.setText(1, 3, Util.C.watchedProjectColumnSubmittedChanges());
|
||||||
fmt.addStyleName(1, 0, Gerrit.RESOURCES.css().dataHeader());
|
fmt.addStyleName(1, 0, Gerrit.RESOURCES.css().dataHeader());
|
||||||
fmt.addStyleName(1, 1, Gerrit.RESOURCES.css().dataHeader());
|
fmt.addStyleName(1, 1, Gerrit.RESOURCES.css().dataHeader());
|
||||||
fmt.addStyleName(1, 2, Gerrit.RESOURCES.css().dataHeader());
|
fmt.addStyleName(1, 2, Gerrit.RESOURCES.css().dataHeader());
|
||||||
|
fmt.addStyleName(1, 3, Gerrit.RESOURCES.css().dataHeader());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteChecked() {
|
public void deleteChecked() {
|
||||||
@@ -135,8 +137,9 @@ public class MyWatchesTable extends FancyFlexTable<AccountProjectWatchInfo> {
|
|||||||
table.setWidget(row, 2, fp);
|
table.setWidget(row, 2, fp);
|
||||||
|
|
||||||
addNotifyButton(AccountProjectWatch.NotifyType.NEW_CHANGES, info, row, 3);
|
addNotifyButton(AccountProjectWatch.NotifyType.NEW_CHANGES, info, row, 3);
|
||||||
addNotifyButton(AccountProjectWatch.NotifyType.ALL_COMMENTS, info, row, 4);
|
addNotifyButton(AccountProjectWatch.NotifyType.NEW_PATCHSETS, info, row, 4);
|
||||||
addNotifyButton(AccountProjectWatch.NotifyType.SUBMITTED_CHANGES, info, row, 5);
|
addNotifyButton(AccountProjectWatch.NotifyType.ALL_COMMENTS, info, row, 5);
|
||||||
|
addNotifyButton(AccountProjectWatch.NotifyType.SUBMITTED_CHANGES, info, row, 6);
|
||||||
|
|
||||||
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
||||||
fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().iconCell());
|
fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().iconCell());
|
||||||
@@ -144,6 +147,7 @@ public class MyWatchesTable extends FancyFlexTable<AccountProjectWatchInfo> {
|
|||||||
fmt.addStyleName(row, 3, Gerrit.RESOURCES.css().dataCell());
|
fmt.addStyleName(row, 3, Gerrit.RESOURCES.css().dataCell());
|
||||||
fmt.addStyleName(row, 4, Gerrit.RESOURCES.css().dataCell());
|
fmt.addStyleName(row, 4, Gerrit.RESOURCES.css().dataCell());
|
||||||
fmt.addStyleName(row, 5, Gerrit.RESOURCES.css().dataCell());
|
fmt.addStyleName(row, 5, Gerrit.RESOURCES.css().dataCell());
|
||||||
|
fmt.addStyleName(row, 6, Gerrit.RESOURCES.css().dataCell());
|
||||||
|
|
||||||
setRowItem(row, info);
|
setRowItem(row, info);
|
||||||
}
|
}
|
||||||
|
@@ -22,7 +22,7 @@ import com.google.gwtorm.client.StringKey;
|
|||||||
public final class AccountProjectWatch {
|
public final class AccountProjectWatch {
|
||||||
|
|
||||||
public enum NotifyType {
|
public enum NotifyType {
|
||||||
NEW_CHANGES, ALL_COMMENTS, SUBMITTED_CHANGES, ALL
|
NEW_CHANGES, NEW_PATCHSETS, ALL_COMMENTS, SUBMITTED_CHANGES, ALL
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String FILTER_ALL = "*";
|
public static final String FILTER_ALL = "*";
|
||||||
@@ -109,6 +109,9 @@ public final class AccountProjectWatch {
|
|||||||
@Column(id = 4)
|
@Column(id = 4)
|
||||||
protected boolean notifySubmittedChanges;
|
protected boolean notifySubmittedChanges;
|
||||||
|
|
||||||
|
@Column(id = 5)
|
||||||
|
protected boolean notifyNewPatchSets;
|
||||||
|
|
||||||
protected AccountProjectWatch() {
|
protected AccountProjectWatch() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,6 +140,9 @@ public final class AccountProjectWatch {
|
|||||||
case NEW_CHANGES:
|
case NEW_CHANGES:
|
||||||
return notifyNewChanges;
|
return notifyNewChanges;
|
||||||
|
|
||||||
|
case NEW_PATCHSETS:
|
||||||
|
return notifyNewPatchSets;
|
||||||
|
|
||||||
case ALL_COMMENTS:
|
case ALL_COMMENTS:
|
||||||
return notifyAllComments;
|
return notifyAllComments;
|
||||||
|
|
||||||
@@ -155,6 +161,10 @@ public final class AccountProjectWatch {
|
|||||||
notifyNewChanges = v;
|
notifyNewChanges = v;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NEW_PATCHSETS:
|
||||||
|
notifyNewPatchSets = v;
|
||||||
|
break;
|
||||||
|
|
||||||
case ALL_COMMENTS:
|
case ALL_COMMENTS:
|
||||||
notifyAllComments = v;
|
notifyAllComments = v;
|
||||||
break;
|
break;
|
||||||
@@ -165,6 +175,7 @@ public final class AccountProjectWatch {
|
|||||||
|
|
||||||
case ALL:
|
case ALL:
|
||||||
notifyNewChanges = v;
|
notifyNewChanges = v;
|
||||||
|
notifyNewPatchSets = v;
|
||||||
notifyAllComments = v;
|
notifyAllComments = v;
|
||||||
notifySubmittedChanges = v;
|
notifySubmittedChanges = v;
|
||||||
break;
|
break;
|
||||||
|
@@ -70,6 +70,8 @@ public class CreateChangeSender extends NewChangeSender {
|
|||||||
// who have a lower interest in the change.
|
// who have a lower interest in the change.
|
||||||
log.warn("Cannot notify watchers for new change", err);
|
log.warn("Cannot notify watchers for new change", err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
includeWatchers(NotifyType.NEW_PATCHSETS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isOwnerOfProjectOrBranch(Account.Id user) {
|
private boolean isOwnerOfProjectOrBranch(Account.Id user) {
|
||||||
|
@@ -17,6 +17,7 @@ package com.google.gerrit.server.mail;
|
|||||||
import com.google.gerrit.common.errors.EmailException;
|
import com.google.gerrit.common.errors.EmailException;
|
||||||
import com.google.gerrit.reviewdb.client.Account;
|
import com.google.gerrit.reviewdb.client.Account;
|
||||||
import com.google.gerrit.reviewdb.client.Change;
|
import com.google.gerrit.reviewdb.client.Change;
|
||||||
|
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
|
||||||
import com.google.gerrit.server.config.AnonymousCowardName;
|
import com.google.gerrit.server.config.AnonymousCowardName;
|
||||||
import com.google.gerrit.server.ssh.SshInfo;
|
import com.google.gerrit.server.ssh.SshInfo;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
@@ -69,6 +70,7 @@ public class ReplacePatchSetSender extends ReplyToChangeSender {
|
|||||||
add(RecipientType.CC, extraCC);
|
add(RecipientType.CC, extraCC);
|
||||||
rcptToAuthors(RecipientType.CC);
|
rcptToAuthors(RecipientType.CC);
|
||||||
bccStarredBy();
|
bccStarredBy();
|
||||||
|
includeWatchers(NotifyType.NEW_PATCHSETS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -0,0 +1,25 @@
|
|||||||
|
// Copyright (C) 2013 The Android Open Source Project
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package com.google.gerrit.server.schema;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.google.inject.Provider;
|
||||||
|
|
||||||
|
public class Schema_75 extends SchemaVersion {
|
||||||
|
@Inject
|
||||||
|
Schema_75(Provider<Schema_74> prior) {
|
||||||
|
super(prior);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user