Modify ↓
Opened 14 years ago
Closed 14 years ago
#6999 closed defect (fixed)
[Patch] CSV export crash + fix
Reported by: | Mudrony László | Owned by: | Colin Guthrie |
---|---|---|---|
Priority: | normal | Component: | WorkLogPlugin |
Severity: | normal | Keywords: | |
Cc: | Trac Release: | 0.12 |
Description
I tried the WorkLog plugin with current trac 0.12 branch. Works fine so far, but CSV export gave me an exception on Content-Length not being set for the request. Here's a fix as patch agains the 0.11 folder. To evade unicode trouble, I've copied the way trac does CSV (but not the RSS and query stuff) - it has the additional benefit of using Python's csv module. Only tested with trac 0.12..
Index: worklog/webui.py =================================================================== --- worklog/webui.py (revision 7854) +++ worklog/webui.py (working copy) @@ -1,4 +1,7 @@ import re +from StringIO import StringIO +import codecs +import csv from util import * from time import time from datetime import tzinfo, timedelta, datetime @@ -53,19 +56,20 @@ 'summary', 'comment'] sep=',' - req.write(sep.join(fields) + CRLF) + content = StringIO() + writer = csv.writer(content, delimiter=sep, quoting=csv.QUOTE_MINIMAL) + writer.writerow([unicode(c).encode('utf-8') for c in fields]) + # Rows for row in log: - first = True + values=[] for field in fields: - if not first: - req.write(sep) - first = False - req.write(str(row[field]) - .replace(sep, '_').replace('\\', '\\\\') - .replace('\n', '\\n').replace('\r', '\\r')) - req.write(CRLF) + values.append(unicode(row[field]).encode('utf-8')) + writer.writerow(values) + + req.send_header('Content-Length', content.len) + req.write(content.getvalue()) # IRequestHandler methods def match_request(self, req):
Attachments (0)
Change History (3)
comment:1 Changed 14 years ago by
Owner: | changed from colin to Colin Guthrie |
---|
comment:2 Changed 14 years ago by
Summary: | CSV export crash + fix → [Patch] CSV export crash + fix |
---|
comment:3 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
#6998 closed as a duplicate.