#5432 closed defect (fixed)
Timeline raises exception in 0.11dev (r5608)
| Reported by: | anonymous | Owned by: | Christian Boos |
|---|---|---|---|
| Priority: | normal | Milestone: | 0.11 |
| Component: | roadmap | Version: | devel |
| Severity: | minor | Keywords: | |
| Cc: | djc@… | Branch: | |
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: | |||
Description
Recently I have been experiencing errors trying to use my Timeline.
For some reason the interactive traceback is not appearing in the error template. So here is the traceback from trac.log:
2007-06-06 12:40:55,975 Trac[web_ui] ERROR: Timeline event provider MilestoneModule failed
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/Trac-0.11dev_r5605-py2.3.egg/trac/timeline/web_ui.py", line 148, in process_request
filters):
File "/usr/lib/python2.3/site-packages/Trac-0.11dev_r5605-py2.3.egg/trac/ticket/roadmap.py", line 405, in get_timeline_events
for event in AttachmentModule(self.env) \
File "/usr/lib/python2.3/site-packages/Trac-0.11dev_r5605-py2.3.egg/trac/attachment.py", line 460, in get_timeline_events
for change, realm, id, filename, time, descr, author in \
File "/usr/lib/python2.3/site-packages/Trac-0.11dev_r5605-py2.3.egg/trac/attachment.py", line 449, in get_history
" AND type = %s", (start, stop, realm))
File "/usr/lib/python2.3/site-packages/Trac-0.11dev_r5605-py2.3.egg/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/lib/python2.3/site-packages/sqlite/main.py", line 255, in execute
self.rs = self.con.db.execute(SQL % parms)
DatabaseError: near "(": syntax error
After investigation I discovered that the wrong types of timestamp were being passed into the attachment module from the roadmap module. I applied the following change and the problem went away:
Index: trac/ticket/roadmap.py
===================================================================
--- trac/ticket/roadmap.py (revision 5608)
+++ trac/ticket/roadmap.py (working copy)
@@ -386,12 +386,13 @@
def get_timeline_events(self, req, start, stop, filters):
if 'milestone' in filters:
+ start, stop = to_timestamp(start), to_timestamp(stop)
context = Context(self.env, req)
cursor = context.db.cursor()
# TODO: creation and (later) modifications should also be reported
cursor.execute("SELECT completed,name,description FROM milestone "
"WHERE completed>=%s AND completed<=%s",
- (to_timestamp(start), to_timestamp(stop)))
+ (start, stop))
for ts, name, description in cursor:
completed = datetime.fromtimestamp(ts, utc)
title = tag('Milestone ', tag.em(name), ' completed')
Attachments (1)
Change History (8)
comment:1 by , 19 years ago
| Cc: | added |
|---|
comment:2 by , 19 years ago
| Owner: | changed from to |
|---|---|
| Severity: | normal → minor |
| Status: | new → assigned |
Yes, you're right.
by , 19 years ago
| Attachment: | attachment_datetime-r5609.diff added |
|---|
Alternative fix, with the attachment API making use of datetime objects
follow-up: 4 comment:3 by , 19 years ago
Can you please try out the alternative fix, attachment_datetime-r5609.diff?
comment:4 by , 19 years ago
Replying to cboos:
Can you please try out the alternative fix, attachment_datetime-r5609.diff?
That one also does the trick, and is clearly superior.
comment:5 by , 19 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Patch applied in r5613, thanks for testing it!
comment:6 by , 19 years ago
Thanks for acting on the patch so quickly.
By way of contrast, I have submitted a similarly teeny patch to http://sourceforge.net/projects/pypgsql/ almost eight months ago and there is no evidence that they have even looked at it.
So here is a new FAQ:
Why should I use Trac?
Because the Trac developers are close to 1000 times more responsive than the pyPgSQL developers.
comment:7 by , 19 years ago
He, thanks, but to be honest, there's a lot of dusty tickets here as well, including some with good patches. In the present case, a quick fix was in order because this fixed a problem that I introduced a few days ago…



Forgot to enter my email address.