Edgewall Software

Ticket #1198: 1198-timeline-author-filter-r7499.patch

File 1198-timeline-author-filter-r7499.patch, 2.7 KB (added by rblank, 3 years ago)

Patch against trunk adding author filtering to timeline

  • trac/timeline/templates/timeline.html

    diff --git a/trac/timeline/templates/timeline.html b/trac/timeline/templates/timeline.html
    a b  
    1818      <form id="prefs" method="get" action=""> 
    1919       <div> 
    2020        <label>View changes from <input type="text" size="10" name="from" value="${format_date(fromdate)}" /></label> <br /> 
    21         and <label><input type="text" size="3" name="daysback" value="$daysback" /> days back</label>. 
     21        and <label><input type="text" size="3" name="daysback" value="$daysback" /> days back</label><br /> 
     22        <label>done by <input type="text" size="16" name="author" value="$author" /></label> 
    2223       </div> 
    2324       <fieldset> 
    2425        <label py:for="filter in filters"> 
  • trac/timeline/web_ui.py

    diff --git a/trac/timeline/web_ui.py b/trac/timeline/web_ui.py
    a b  
    117117        daysback = max(0, daysback) 
    118118        if self.max_daysback >= 0: 
    119119            daysback = min(self.max_daysback, daysback) 
     120        author = req.args.get('author', 
     121                              req.session.get('timeline.author', '')) 
     122        author = author.strip() 
    120123 
    121124        data = {'fromdate': fromdate, 'daysback': daysback, 
     125                'author': author, 
    122126                'today': format_date(today), 
    123127                'yesterday': format_date(today - timedelta(days=1)), 
    124128                'precisedate': precisedate, 'precision': precision, 
     
    157161            try: 
    158162                for event in provider.get_timeline_events(req, start, stop, 
    159163                                                          filters): 
    160                     events.append(self._event_data(provider, event)) 
     164                    author_index = len(event) < 6 and 2 or 4    # 0.10 events 
     165                    if not author or event[author_index] == author: 
     166                        events.append(self._event_data(provider, event)) 
    161167            except Exception, e: # cope with a failure of that provider 
    162168                self._provider_failure(e, req, provider, filters, 
    163169                                       [f[0] for f in available_filters]) 
     
    182188            return 'timeline.rss', data, 'application/rss+xml' 
    183189        else: 
    184190            req.session['timeline.daysback'] = daysback 
     191            req.session['timeline.author'] = author 
    185192 
    186193        add_stylesheet(req, 'common/css/timeline.css') 
    187194        rss_href = req.href.timeline([(f, 'on') for f in filters], 
    188                                      daysback=90, max=50, format='rss') 
     195                                     daysback=90, max=50, author=author, 
     196                                     format='rss') 
    189197        add_link(req, 'alternate', rss_href, _('RSS Feed'), 
    190198                 'application/rss+xml', 'rss') 
    191199