Edgewall Software

Ticket #1198: Timeline.py.diff

File Timeline.py.diff, 3.8 KB (added by mrovner@…, 4 years ago)

svn diff for ver 1238

  • trac/Timeline.py

     
    3333    template_name = 'timeline.cs' 
    3434    template_rss_name = 'timeline_rss.cs' 
    3535 
    36     def get_info(self, req, start, stop, maxrows, filters=AVAILABLE_FILTERS): 
     36    def get_info(self, req, start, stop, maxrows, filters=AVAILABLE_FILTERS, only_user=None): 
    3737        perm_map = {'tickets': perm.TICKET_VIEW, 'changeset': perm.CHANGESET_VIEW, 
    3838                    'wiki': perm.WIKI_VIEW, 'milestone': perm.MILESTONE_VIEW} 
    3939        filters = list(filters) # copy list so we can make modifications 
     
    4343        if not filters: 
    4444            return [] 
    4545 
     46        if only_user: 
     47            param1 = (start, stop, only_user) 
     48        else: 
     49            param1 = (start, stop) 
     50 
    4651        sql, params = [], [] 
    4752        if 'changeset' in filters: 
    48             sql.append("SELECT time,rev,'','changeset',message,author" 
     53            query =   ("SELECT time,rev,'','changeset',message,author" 
    4954                       " FROM revision WHERE time>=%s AND time<=%s") 
    50             params += (start, stop) 
     55            if only_user: query += " AND author='%s'" 
     56            sql.append(query) 
     57            params += param1 
     58             
    5159        if 'ticket' in filters: 
    52             sql.append("SELECT time,id,'','newticket',summary,reporter" 
     60            query =   ("SELECT time,id,'','newticket',summary,reporter" 
    5361                       " FROM ticket WHERE time>=%s AND time<=%s") 
    54             params += (start, stop) 
    55             sql.append("SELECT time,ticket,'','reopenedticket','',author " 
     62            if only_user: query += " AND reporter='%s'" 
     63            sql.append(query) 
     64            params += param1 
     65            query =   ("SELECT time,ticket,'','reopenedticket','',author " 
    5666                       "FROM ticket_change WHERE field='status' " 
    5767                       "AND newvalue='reopened' AND time>=%s AND time<=%s") 
    58             params += (start, stop) 
    59             sql.append("SELECT t1.time,t1.ticket,t2.newvalue,'closedticket'," 
     68            if only_user: query += " AND author='%s'" 
     69            sql.append(query) 
     70            params += param1 
     71            query =   ("SELECT t1.time,t1.ticket,t2.newvalue,'closedticket'," 
    6072                       "t3.newvalue,t1.author" 
    6173                       " FROM ticket_change t1" 
    6274                       "   INNER JOIN ticket_change t2 ON t1.ticket = t2.ticket" 
     
    6678                       " WHERE t1.field = 'status' AND t1.newvalue = 'closed'" 
    6779                       "   AND t2.field = 'resolution'" 
    6880                       "   AND t1.time >= %s AND t1.time <= %s") 
    69             params += (start,stop) 
     81            if only_user: query += " AND t1.author='%s'" 
     82            sql.append(query) 
     83            params += param1 
    7084        if 'wiki' in filters: 
    71             sql.append("SELECT time,-1,name,'wiki',comment,author" 
     85            query =   ("SELECT time,-1,name,'wiki',comment,author" 
    7286                       " FROM wiki WHERE time>=%s AND time<=%s") 
    73             params += (start, stop) 
     87            if only_user: query += " AND author='%s'" 
     88            sql.append(query) 
     89            params += param1 
    7490        if 'milestone' in filters: 
    7591            sql.append("SELECT completed AS time,-1,name,'milestone','',''"  
    7692                       " FROM milestone WHERE completed>=%s AND completed<=%s") 
     
    148164        for f in filters: 
    149165            req.hdf.setValue('timeline.%s' % f, 'checked') 
    150166 
    151         info = self.get_info(req, start, stop, maxrows, filters) 
     167        user = req.args.get('user', '') 
     168        req.hdf.setValue('timeline.user', user) 
     169 
     170        info = self.get_info(req, start, stop, maxrows, filters, user) 
    152171        for item in info: 
    153172            render_func = getattr(self, '_render_%s' % item['type']) 
    154173            item = render_func(req, item)