From 6388f6de23e0015542d49e942fbda7ce0e818720 Mon Sep 17 00:00:00 2001
From: Henrik Levkowetz <henrik@levkowetz.com>
Date: Sun, 18 Oct 2015 13:19:54 +0000
Subject: [PATCH] Merged in [10219] from rjsparks@nostrum.com:

    Recognize and remove duplicate addresses while gathering. Fixes bug #1815.
 - Legacy-Id: 10232
Note: SVN reference [10219] has been migrated to Git commit 13d81dc50974e64ff82ce768aace4c7c21e7f1f3
---
 ietf/mailtrigger/models.py | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py
index 6a6b1d17e..ac4ecc36c 100644
--- a/ietf/mailtrigger/models.py
+++ b/ietf/mailtrigger/models.py
@@ -3,8 +3,22 @@
 from django.db import models
 from django.template import Template, Context
 
+from email.utils import parseaddr
+
 from ietf.group.models import Role
 
+def clean_duplicates(addrlist):
+    retval = set()
+    for a in addrlist:
+        (name,addr) = parseaddr(a)
+        if (name,addr)==('',''):
+            retval.add(a)
+        elif name:
+            retval.add('"%s" <%s>'%(name,addr))
+        else:
+            retval.add(addr)
+    return list(retval) 
+
 class MailTrigger(models.Model):
     slug = models.CharField(max_length=32, primary_key=True)
     desc = models.TextField(blank=True)
@@ -37,8 +51,7 @@ class Recipient(models.Model):
             if rendering:
                 retval.extend([x.strip() for x in rendering.split(',')])
 
-        retval = list(set(retval))
-        return retval
+        return clean_duplicates(retval)
 
     def gather_doc_group_chairs(self, **kwargs):
         addrs = []