Changeset 2553

Show
Ignore:
Timestamp:
08/08/07 03:04:48 (1 year ago)
Author:
coling
Message:

WorkLogPlugin:

Refs #1898 and improves CSV export

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • worklogplugin/0.10/worklog/templates/worklog.cs

    r2552 r2553  
    3333</div> 
    3434</form> 
     35 
     36<div id="altlinks">  <h3>Download in other formats:</h3><ul><li class="first last"><a href="?format=csv" class="csv">CSV</a></li></ul></div> 
     37 
    3538<?cs include "footer.cs"?> 
  • worklogplugin/0.10/worklog/webui.py

    r2552 r2553  
    9494    def worklog_csv(self, req): 
    9595        # Headers 
    96         req.write('user,full_name,starttime,endtime,ticket,ticket_summary,work_comment') 
    97         req.write(CRLF) 
     96        sep=',' 
     97        req.write(sep.join(['user', 
     98                            'full_name', 
     99                            'starttime', 
     100                            'endtime', 
     101                            'ticket', 
     102                            'ticket_summary', 
     103                            'work_comment']) + CRLF) 
    98104 
    99105        # Rows 
    100106        db = self.env.get_db_cnx() 
    101107        cursor = db.cursor() 
    102         cursor.execute('SELECT wl.user, s.value, wl.starttime, wl.endtime, wl.ticket, wl.comment, t.summary
     108        cursor.execute('SELECT wl.user, s.value, wl.starttime, wl.endtime, wl.ticket, t.summary, wl.comment
    103109                       'FROM work_log wl ' 
    104110                       'LEFT JOIN ticket t ON wl.ticket=t.id ' 
    105111                       'LEFT JOIN session_attribute s ON wl.user=s.sid AND s.name=\'name\' ' 
    106112                       'ORDER BY wl.lastchange DESC, wl.user') 
    107         for (user,name,starttime,endtime,ticket,comment,summary) in cursor: 
    108             if not comment: 
    109                 comment = '' 
    110              
    111             req.write(user + ',') 
    112             req.write(name + ',') 
    113             req.write(str(starttime) + ',') 
    114             req.write(str(endtime) + ',') 
    115             req.write(str(ticket) + ',') 
    116             req.write(summary + ',') 
    117             req.write(comment) 
    118             req.write(CRLF) 
    119113 
     114        for row in cursor: 
     115            req.write(sep.join([str(item) 
     116                                .replace(sep, '_').replace('\\', '\\\\') 
     117                                .replace('\n', '\\n').replace('\r', '\\r') 
     118                                for item in row]) + CRLF) 
    120119 
    121120                 
     
    136135 
    137136        if req.args.has_key('format') and req.args['format'] == 'csv': 
    138             req.send_header('Content-Type', 'text/plain;charset=utf-8') 
     137            req.send_header('Content-Type', 'text/csv;charset=utf-8') 
    139138            self.worklog_csv(req) 
    140139            return None