Index: trac/ticket/api.py
===================================================================
--- trac/ticket/api.py	(revision 4458)
+++ trac/ticket/api.py	(working copy)
@@ -102,12 +102,12 @@
         field = {'name': 'owner', 'label': 'Owner'}
         if self.restrict_owner:
             field['type'] = 'select'
-            users = [''] # for clearing assignment
             perm = PermissionSystem(self.env)
-            for username, name, email in self.env.get_known_users(db):
-                if perm.get_user_permissions(username).get('TICKET_MODIFY'):
-                    users.append(username)
-            field['options'] = users
+            def valid_owner(username):
+                return perm.get_user_permissions(username).get('TICKET_MODIFY')
+            field['options'] = [username for username, name, email
+                                in self.env.get_known_users(db)
+                                if valid_owner(username)]
             field['optional'] = True
         else:
             field['type'] = 'text'
Index: trac/ticket/report.py
===================================================================
--- trac/ticket/report.py	(revision 4458)
+++ trac/ticket/report.py	(working copy)
@@ -276,12 +276,6 @@
                 header_groups.append([])
             header_group.append(header)
 
-        # Get the email addresses of all known users
-        email_map = {}
-        for username, name, email in self.env.get_known_users():
-            if email:
-                email_map[username] = email
-
         # Structure the rows and cells:
         #  - group rows according to __group__ value, if defined
         #  - group cells the same way headers are grouped
@@ -313,10 +307,7 @@
                     # Special casing based on column name
                     col = col.strip('_')
                     if col == 'reporter':
-                        if '@' in value:
-                            cell['author'] = value
-                        elif value in email_map:
-                            cell['author'] = email_map[value]
+                        cell['author'] = value
                     elif col == 'resource':
                         resource = value
                     cell_group.append(cell)
Index: trac/ticket/query.py
===================================================================
--- trac/ticket/query.py	(revision 4458)
+++ trac/ticket/query.py	(working copy)
@@ -690,9 +690,6 @@
         query.verbose = True
         db = self.env.get_db_cnx()
         results = query.execute(req, db)
-        for result in results:
-            if result['reporter'].find('@') == -1:
-                result['reporter'] = ''
         query_href = req.abs_href.query(group=query.group,
                                         groupdesc=query.groupdesc and 1 or None,
                                         verbose=query.verbose and 1 or None,
Index: trac/versioncontrol/web_ui/log.py
===================================================================
--- trac/versioncontrol/web_ui/log.py	(revision 4458)
+++ trac/versioncontrol/web_ui/log.py	(working copy)
@@ -178,14 +178,7 @@
         revs = [i['rev'] for i in info]
         changes = get_changes(repos, revs)
         extra_changes = {}
-        email_map = {}
-        if format == 'rss':
-            # Get the email addresses of all known users
-            email_map = {}
-            for username,name,email in self.env.get_known_users():
-                if email:
-                    email_map[username] = email
-        elif format == 'changelog':
+        if format == 'changelog':
             for rev in revs:
                 changeset = changes[rev]
                 cs = {}
@@ -206,7 +199,7 @@
             'mode': mode, 'verbose': verbose,
             'path_links': path_links,
             'items': info, 'changes': changes,
-            'email_map': email_map, 'extra_changes': extra_changes,
+            'extra_changes': extra_changes,
             'wiki_format_messages':
             self.config['changeset'].getbool('wiki_format_messages')
             }
Index: trac/timeline/web_ui.py
===================================================================
--- trac/timeline/web_ui.py	(revision 4458)
+++ trac/timeline/web_ui.py	(working copy)
@@ -137,12 +137,6 @@
                 break
 
         if format == 'rss':
-            # Get the email addresses of all known users
-            email_map = {}
-            for username, name, email in self.env.get_known_users():
-                if email:
-                    email_map[username] = email
-            data['email_map'] = email_map
             return 'timeline.rss', data, 'application/rss+xml'
 
         add_stylesheet(req, 'common/css/timeline.css')
Index: templates/report.rss
===================================================================
--- templates/report.rss	(revision 4458)
+++ templates/report.rss	(working copy)
@@ -17,7 +17,7 @@
         <py:with vars="col = cell.header.col.strip('_')">
           <py:choose>
             <py:when test="col == 'reporter'">
-              <author py:if="cell.author">$cell.author</author>
+              <dc:creator py:if="cell.author">$cell.author</cd:creator>
             </py:when>
             <py:when test="col in ('time', 'changetime', 'created', 'modified')">
               <!-- FIXME: we end up with multiple pubDate -->
Index: templates/revisionlog.rss
===================================================================
--- templates/revisionlog.rss	(revision 4458)
+++ templates/revisionlog.rss	(working copy)
@@ -13,7 +13,7 @@
     </image>
 
     <item py:for="item in items" py:with="change = changes[item.rev]; item_context = context('changeset', change.rev, abs_urls=True)">
-      <author py:if="change.author" py:with="a = change.author">${a and '@' in a and a or email_map.get(a)}</author>
+      <dc:creator py:if="change.author">${change.author}</dc:creator>
       <pubDate>${http_date(change.date)}</pubDate>
       <title>Revision $item.rev: ${shorten_line(change.message)}</title>
       <link>${abs_href.changeset(rev, path)}</link>
Index: templates/timeline.rss
===================================================================
--- templates/timeline.rss	(revision 4458)
+++ templates/timeline.rss	(working copy)
@@ -14,9 +14,7 @@
 
     <item py:for="event in events">
       <title>${plaintext(event.title, keeplinebreaks=False)}</title>
-      <py:with vars="author=event.author; author = author and '@' in author and author or email_map.get(author)">
-        <author py:if="author">$author</author>
-      </py:with>
+      <dc:creator py:if="event.author">${event.author}</dc:creator>
       <pubDate>${http_date(event.date)}</pubDate>
       <link>${event.abs_href}</link>
       <guid isPermaLink="false">${event.abs_href}/${event.dateuid()}</guid>
Index: templates/ticket.rss
===================================================================
--- templates/ticket.rss	(revision 4458)
+++ templates/ticket.rss	(working copy)
@@ -13,7 +13,7 @@
     <generator>Trac $trac.version</generator>
 
     <item py:for="change in changes">
-      <author py:if="change.author">$change.author</author>
+      <dc:creator py:if="change.author">$change.author</dc:creator>
       <pubDate>${http_date(change.date)}</pubDate>
       <title>$change.title</title>
       <link>${abs_href.ticket(ticket.id)}<py:if test="change.cnum">#comment:$change.cnum</py:if></link>
Index: templates/query.rss
===================================================================
--- templates/query.rss	(revision 4458)
+++ templates/query.rss	(working copy)
@@ -16,7 +16,7 @@
       <guid isPermaLink="false">$href</guid>
       <title>#$result.id: $result.summary</title>
       <pubDate py:if="result.time">${http_date(result.time)}</pubDate>
-      <author py:if="result.reporter">$result.reporter</author>
+      <dc:creator py:if="result.reporter">$result.reporter</dc:creator>
       <description>${unicode(context('ticket', result.id, abs_urls=True).wiki_to_html(result.description))}</description>
       <category>Results</category>
       <comments>$href#changelog</comments>

