Edgewall Software

Ticket #153: privacy.diff

File privacy.diff, 11.2 KB (added by Waldemar Kornewald <wkornewald>, 5 years ago)

patch against trunk (r4463)

  • trac/ticket/api.py

     
    102102        field = {'name': 'owner', 'label': 'Owner'} 
    103103        if self.restrict_owner: 
    104104            field['type'] = 'select' 
    105             users = [''] # for clearing assignment 
    106105            perm = PermissionSystem(self.env) 
    107             for username, name, email in self.env.get_known_users(db): 
    108                 if perm.get_user_permissions(username).get('TICKET_MODIFY'): 
    109                     users.append(username) 
    110             field['options'] = users 
     106            def valid_owner(username): 
     107                return perm.get_user_permissions(username).get('TICKET_MODIFY') 
     108            field['options'] = [username for username, name, email 
     109                                in self.env.get_known_users(db) 
     110                                if valid_owner(username)] 
    111111            field['optional'] = True 
    112112        else: 
    113113            field['type'] = 'text' 
  • trac/ticket/web_ui.py

     
    6969        """Enable the display of all ticket changes in the timeline 
    7070        (''since 0.9'').""") 
    7171 
     72    show_email_addresses = BoolOption('ticket', 'show_email_addresses', 'false', 
     73        """Show email addresses instead of usernames in RSS feeds 
     74        (''since 0.11'').""") 
     75 
    7276    # IContentConverter methods 
    7377 
    7478    def get_supported_conversions(self): 
     
    603607            'ticket': ticket, 
    604608            'context': Context(self.env, req, 'ticket', ticket.id, db=db), 
    605609            'changes': changes, 
     610            'show_email_addresses': self.show_email_addresses 
    606611        } 
    607612 
    608613        output = Chrome(self.env).render_template(req, 'ticket.rss', data, 
  • trac/ticket/report.py

     
    278278 
    279279        # Get the email addresses of all known users 
    280280        email_map = {} 
    281         for username, name, email in self.env.get_known_users(): 
    282             if email: 
    283                 email_map[username] = email 
     281        show_email_addresses = self.config.getbool('ticket', 'show_email_addresses') 
     282        data['show_email_addresses'] = show_email_addresses 
     283        if show_email_addresses: 
     284            for username, name, email in self.env.get_known_users(): 
     285                if email: 
     286                    email_map[username] = email 
    284287 
    285288        # Structure the rows and cells: 
    286289        #  - group rows according to __group__ value, if defined 
     
    313316                    # Special casing based on column name 
    314317                    col = col.strip('_') 
    315318                    if col == 'reporter': 
    316                         if '@' in value: 
     319                        if show_email_addresses: 
     320                            if '@' in value: 
     321                                cell['author'] = value 
     322                            elif value in email_map: 
     323                                cell['author'] = email_map[value] 
     324                        else: 
    317325                            cell['author'] = value 
    318                         elif value in email_map: 
    319                             cell['author'] = email_map[value] 
    320326                    elif col == 'resource': 
    321327                        resource = value 
    322328                    cell_group.append(cell) 
  • trac/ticket/query.py

     
    684684        query.verbose = True 
    685685        db = self.env.get_db_cnx() 
    686686        results = query.execute(req, db) 
    687         for result in results: 
    688             if result['reporter'].find('@') == -1: 
    689                 result['reporter'] = '' 
     687        show_email_addresses = self.config.getbool('ticket', 'show_email_addresses') 
     688        if show_email_addresses: 
     689            for result in results: 
     690                if result['reporter'].find('@') == -1: 
     691                    result['reporter'] = '' 
    690692        query_href = req.abs_href.query(group=query.group, 
    691693                                        groupdesc=query.groupdesc and 1 or None, 
    692694                                        verbose=query.verbose and 1 or None, 
     
    695697        data = { 
    696698            'context': Context(self.env, req), 
    697699            'results': results, 
     700            'show_email_addresses': show_email_addresses, 
    698701            'query_href': query_href 
    699702            } 
    700703        output = Chrome(self.env).render_template(req, 'query.rss', data, 
  • trac/versioncontrol/web_ui/log.py

     
    179179        changes = get_changes(repos, revs) 
    180180        extra_changes = {} 
    181181        email_map = {} 
     182        show_email_addresses = self.config.getbool('ticket', 
     183                                                   'show_email_addresses') 
    182184        if format == 'rss': 
    183185            # Get the email addresses of all known users 
    184             email_map = {} 
    185             for username,name,email in self.env.get_known_users(): 
    186                 if email: 
    187                     email_map[username] = email 
     186            if show_email_addresses: 
     187                for username,name,email in self.env.get_known_users(): 
     188                    if email: 
     189                        email_map[username] = email 
    188190        elif format == 'changelog': 
    189191            for rev in revs: 
    190192                changeset = changes[rev] 
     
    207209            'path_links': path_links, 
    208210            'items': info, 'changes': changes, 
    209211            'email_map': email_map, 'extra_changes': extra_changes, 
     212            'show_email_addresses': show_email_addresses, 
    210213            'wiki_format_messages': 
    211214            self.config['changeset'].getbool('wiki_format_messages') 
    212215            } 
  • trac/timeline/web_ui.py

     
    138138 
    139139        if format == 'rss': 
    140140            # Get the email addresses of all known users 
    141             email_map = {} 
    142             for username, name, email in self.env.get_known_users(): 
    143                 if email: 
    144                     email_map[username] = email 
    145             data['email_map'] = email_map 
     141            show_email_addresses = self.config.getbool('ticket', 'show_email_addresses') 
     142            if show_email_addresses: 
     143                email_map = {} 
     144                for username, name, email in self.env.get_known_users(): 
     145                    if email: 
     146                        email_map[username] = email 
     147                data['email_map'] = email_map 
     148            data['show_email_addresses'] = show_email_addresses 
    146149            return 'timeline.rss', data, 'application/rss+xml' 
    147150 
    148151        add_stylesheet(req, 'common/css/timeline.css') 
  • templates/report.rss

     
    1717        <py:with vars="col = cell.header.col.strip('_')"> 
    1818          <py:choose> 
    1919            <py:when test="col == 'reporter'"> 
    20               <author py:if="cell.author">$cell.author</author> 
     20              <author py:if="cell.author and show_email_addresses">$cell.author</author> 
     21              <dc:creator py:if="cell.author and not show_email_addresses">$cell.author</cd:creator> 
    2122            </py:when> 
    2223            <py:when test="col in ('time', 'changetime', 'created', 'modified')"> 
    2324              <!-- FIXME: we end up with multiple pubDate --> 
  • templates/revisionlog.rss

     
    1313    </image> 
    1414 
    1515    <item py:for="item in items" py:with="change = changes[item.rev]; item_context = context('changeset', change.rev, abs_urls=True)"> 
    16       <author py:if="change.author" py:with="a = change.author">${a and '@' in a and a or email_map.get(a)}</author> 
     16      <author py:if="change.author and show_email_addresses" py:with="a = change.author">${a and '@' in a and a or email_map.get(a)}</author> 
     17      <dc:creator py:if="change.author and not show_email_addresses">${change.author}</dc:creator> 
    1718      <pubDate>${http_date(change.date)}</pubDate> 
    1819      <title>Revision $item.rev: ${shorten_line(change.message)}</title> 
    1920      <link>${abs_href.changeset(rev, path)}</link> 
  • templates/timeline.rss

     
    1414 
    1515    <item py:for="event in events"> 
    1616      <title>${plaintext(event.title, keeplinebreaks=False)}</title> 
    17       <py:with vars="author=event.author; author = author and '@' in author and author or email_map.get(author)"> 
     17      <py:if test="show_email_addresses" py:with vars="author=event.author; author = author and '@' in author and author or email_map.get(author)"> 
    1818        <author py:if="author">$author</author> 
    19       </py:with> 
     19      </py:if> 
     20      <dc:creator py:if="event.author and not show_email_addresses">${event.author}</dc:creator> 
    2021      <pubDate>${http_date(event.date)}</pubDate> 
    2122      <link>${event.abs_href}</link> 
    2223      <guid isPermaLink="false">${event.abs_href}/${event.dateuid()}</guid> 
  • templates/ticket.rss

     
    1313    <generator>Trac $trac.version</generator> 
    1414 
    1515    <item py:for="change in changes"> 
    16       <author py:if="change.author">$change.author</author> 
     16      <author py:if="change.author and show_email_addresses">$change.author</author> 
     17      <dc:creator py:if="change.author and not show_email_addresses">$change.author</dc:creator> 
    1718      <pubDate>${http_date(change.date)}</pubDate> 
    1819      <title>$change.title</title> 
    1920      <link>${abs_href.ticket(ticket.id)}<py:if test="change.cnum">#comment:$change.cnum</py:if></link> 
  • templates/query.rss

     
    1616      <guid isPermaLink="false">$href</guid> 
    1717      <title>#$result.id: $result.summary</title> 
    1818      <pubDate py:if="result.time">${http_date(result.time)}</pubDate> 
    19       <author py:if="result.reporter">$result.reporter</author> 
     19      <author py:if="result.reporter and show_email_addresses">$result.reporter</author> 
     20      <dc:creator py:if="result.reporter and not show_email_addresses">$result.reporter</dc:creator> 
    2021      <description>${unicode(context('ticket', result.id, abs_urls=True).wiki_to_html(result.description))}</description> 
    2122      <category>Results</category> 
    2223      <comments>$href#changelog</comments>