Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
rhbz1120457 - remove admin/team coordinator email address from email …
Browse files Browse the repository at this point in the history
…template
  • Loading branch information
Patrick Huang committed Dec 11, 2014
1 parent 7f7638f commit 3d6514e
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 25 deletions.
Expand Up @@ -5,7 +5,6 @@

import org.zanata.events.LanguageTeamPermissionChangedEvent;
import org.zanata.i18n.Messages;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import com.googlecode.totallylazy.collections.PersistentMap;
import lombok.RequiredArgsConstructor;
Expand All @@ -18,6 +17,7 @@
public class LanguageTeamPermissionChangeEmailStrategy extends EmailStrategy {
private final LanguageTeamPermissionChangedEvent changedEvent;
private final Messages msgs;
private final String contactCoordinatorLink;

@Override
public String getSubject(Messages msgs) {
Expand All @@ -30,21 +30,14 @@ public String getBodyResourceName() {
return "org/zanata/email/templates/language_team_permission_changed.vm";
}

@Override
public Optional<InternetAddress[]> getReplyToAddress() {
return Optional.of(Addresses.getReplyTo(
changedEvent.getChangedByEmail(),
changedEvent.getChangedByName()));
}

@Override
public PersistentMap<String, Object> makeContext(
PersistentMap<String, Object> genericContext,
InternetAddress[] toAddresses) {
PersistentMap<String, Object> context = super.makeContext(
genericContext, toAddresses);
List<String> oldPermissions = Lists.newArrayList();
if (changedEvent.numOfGrantedOldPermissions() == 0) {
if (changedEvent.hasNoOldPermissions()) {
oldPermissions
.add(
msgs.get("jsf.email.languageteam.permission.old.notInTeam"));
Expand All @@ -54,7 +47,7 @@ public PersistentMap<String, Object> makeContext(
}

List<String> newPermissions = Lists.newArrayList();
if (changedEvent.numOfGrantedNewPermissions() == 0) {
if (changedEvent.hasNoNewPermissions()) {
newPermissions.add(msgs
.get("jsf.email.languageteam.permission.new.notInTeam"));
} else {
Expand All @@ -65,9 +58,9 @@ public PersistentMap<String, Object> makeContext(
return context
.insert("language", changedEvent.getLanguage())
.insert("changedByName", changedEvent.getChangedByName())
.insert("changedByEmail", changedEvent.getChangedByEmail())
.insert("oldPermissions", oldPermissions)
.insert("newPermissions", newPermissions)
.insert("contactCoordinatorLink", contactCoordinatorLink)
.insert("toName", toAddresses[0].getPersonal());
}

Expand All @@ -91,3 +84,6 @@ private void transformPermissionToDescription(
}
}
}



Expand Up @@ -29,7 +29,6 @@ public class LanguageTeamPermissionChangedEvent implements Serializable {
private final String name;
private final String email;
private final String changedByName;
private final String changedByEmail;
private List<Boolean> oldPermission = ImmutableList.of(false, false, false);
private List<Boolean> newPermission = ImmutableList.of(false, false, false);

Expand All @@ -39,7 +38,6 @@ public LanguageTeamPermissionChangedEvent(HPerson person, LocaleId language,
email = person.getEmail();
this.language = language;
changedByName = doneByPerson.getName();
changedByEmail = doneByPerson.getEmail();
}

public LanguageTeamPermissionChangedEvent joiningTheTeam(
Expand Down Expand Up @@ -100,12 +98,18 @@ private LanguageTeamPermissionChangedEvent newPermission(
return this;
}

public int numOfGrantedOldPermissions() {
return Iterables.frequency(oldPermission, Boolean.TRUE);
// when user has no roles assigned or was not part of the team
public boolean hasNoOldPermissions() {
return Iterables.frequency(oldPermission, Boolean.TRUE) == 0;
}

public int numOfGrantedNewPermissions() {
return Iterables.frequency(newPermission, Boolean.TRUE);
// when user has no roles assigned or is removed from the team
public boolean hasNoNewPermissions() {
return Iterables.frequency(newPermission, Boolean.TRUE) == 0;
}

public boolean hasPermissionsChanged() {
return !oldPermission.equals(newPermission);
}

public boolean translatorPermissionOf(List<Boolean> permissionList) {
Expand All @@ -125,11 +129,9 @@ private static Boolean getPermission(List<Boolean> permissionList,
return permissionList.get(permission.ordinal());
}

public boolean isPermissionChanged() {
return !oldPermission.equals(newPermission);
}

private static enum Permission {
translator, reviewer, coordinator
}
}


Expand Up @@ -29,6 +29,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.ApplicationConfiguration;
import org.zanata.email.Addresses;
import org.zanata.email.EmailBuilder;
import org.zanata.email.LanguageTeamPermissionChangeEmailStrategy;
Expand Down Expand Up @@ -58,6 +59,9 @@ public class LanguageTeamPermissionChangeJmsMessagePayloadHandler implements
@In
private Messages msgs;

@In
private ApplicationConfiguration applicationConfiguration;

@Override
public void handle(Serializable data) {
if (!(data instanceof LanguageTeamPermissionChangedEvent)) {
Expand All @@ -69,12 +73,20 @@ public void handle(Serializable data) {
LanguageTeamPermissionChangedEvent.class.cast(data);
log.debug("language team permission change data:{}", changedEvent);

if (!changedEvent.hasPermissionsChanged()) {
// permission didn't really changed
return;
}

String receivedReason =
msgs.format("jsf.email.languageteam.permission.ReceivedReason",
changedEvent.getLanguage());
String contactTeamCoordinatorLink =
applicationConfiguration.getServerPath() +
"/language/contact/" + changedEvent.getLanguage();
LanguageTeamPermissionChangeEmailStrategy emailStrategy =
new LanguageTeamPermissionChangeEmailStrategy(
changedEvent, msgs);
changedEvent, msgs, contactTeamCoordinatorLink);
InternetAddress to =
Addresses.getAddress(changedEvent.getEmail(),
changedEvent.getName());
Expand All @@ -84,3 +96,5 @@ public void handle(Serializable data) {

}



Expand Up @@ -100,7 +100,7 @@ public void joinOrUpdateRoleInLanguageTeam(String locale, Long personId,
}
localeMemberDAO.makePersistent(localeMember);
localeMemberDAO.flush();
if (Events.exists() && permissionChangedEvent.isPermissionChanged()) {
if (Events.exists()) {
Events.instance().raiseTransactionSuccessEvent(
LanguageTeamPermissionChangedEvent.LANGUAGE_TEAM_PERMISSION_CHANGED,
permissionChangedEvent);
Expand Down Expand Up @@ -141,3 +141,5 @@ public boolean isUserReviewer(Long personId) {
.isEmpty();
}
}


5 changes: 4 additions & 1 deletion zanata-war/src/main/resources/messages.properties
Expand Up @@ -1183,7 +1183,8 @@ jsf.email.group.maintainer.ReceivedReason=You are maintainer in group "{0}"
jsf.email.languageteam.permission.Subject=Your permissions in language team "{0}" have changed
jsf.email.languageteam.permission.ReceivedReason=You are a team member in the "{0}" language team
jsf.email.languageteam.permission.DearName=Dear {0},
jsf.email.languageteam.permission.Changed={0}({1}) has changed your permissions in language team "{2}".
jsf.email.languageteam.permission.howToReply=Please do not reply to this system generated email. For any questions, please <a href="{0}">contact your team coordinator</a>.
jsf.email.languageteam.permission.Changed={0} has changed your permissions in language team "{1}".
jsf.email.languageteam.permission.old.prefix=You were:
jsf.email.languageteam.permission.old.notInTeam=not a team member.
jsf.email.languageteam.permission.new.prefix=You are now:
Expand Down Expand Up @@ -1277,3 +1278,5 @@ javax.faces.validator.LongRangeValidator.TYPE=value is not of the correct type
javax.faces.validator.NOT_IN_RANGE=value must be between {0} and {1}
javax.faces.converter.STRING=value could not be converted to a string



@@ -1,6 +1,6 @@
<p>$msgs.format("jsf.email.languageteam.permission.DearName", $toName)</p>

<p>$msgs.format("jsf.email.languageteam.permission.Changed", $changedByName, $changedByEmail, $language)</p>
<p>$msgs.format("jsf.email.languageteam.permission.Changed", $changedByName, $language)</p>

<p>$msgs.get("jsf.email.languageteam.permission.old.prefix")</p>
<ul>
Expand All @@ -15,3 +15,5 @@
<li>$permission</li>
#end
</ul>

<p>$msgs.format("jsf.email.languageteam.permission.howToReply", $contactCoordinatorLink)</p>

0 comments on commit 3d6514e

Please sign in to comment.