Opened 15 years ago

Last modified 4 years ago

#5627 new defect

TicketModifiedFiles 1.00: a single quote in an modified SVN file name causes an error — at Initial Version

Reported by: richard.lyders@… Owned by: Emilien Klein
Priority: high Component: TicketModifiedFilesPlugin
Severity: blocker Keywords: patch modified files OperationalError quote
Cc: richard.lyders@… Trac Release: 0.11

Description

TicketModifiedFiles 1.00 reports error [OperationalError: near "s": syntax error] when one of modified SVN files for a ticket has name that contains a single quote [eg, "today's"]

The file name in SVN can be deleted/renamed, but the error still occurs since TicketModifiedFiles still encounters the old file name and thus still errors out. I don't know how to work around this. I simply have to turn off modified files, but I love this plugin, so I hope it gets fixed soon!

I'm not very familiar with Python. I'll see about fixing it myself as I have time to dig into it.

ERROR STACK:


Oops… Trac detected an internal error:

OperationalError: near "s": syntax error

If you think this should work you can reproduce the problem, you should consider reporting this to the Trac team.

Before you do that, though, please first try searching for similar issues, as it is quite likely that this problem has been reported before. For questions about installation and configuration of Trac, please try the mailing list instead of filing a ticket.

Otherwise, please ==== How to Reproduce ==== While doing a GET operation on /ticket/1351, Trac issued an internal error. (please provide additional details here) Request parameters: {'id': u'1351'} User Agent was: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) ==== System Information ====
Trac 0.12dev-r7454 Python 2.5.1 (r251, Feb 13 2008, 06:34:30)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)]
setuptools 0.6c9 SQLite 3.5.1 pysqlite 2.3.5 Genshi 0.5.1 mod_python 3.3.1 Pygments 1.0 Subversion 1.4.6 (r28521) jQuery: 1.2.6 ==== Python Traceback ==== Traceback (most recent call last): File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/main.py", line 447, in _dispatch_request dispatcher.dispatch(req) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/main.py", line 229, in dispatch content_type) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/chrome.py", line 703, in render_template stream |= self._filter_stream(req, method, filename, stream, data) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 128, in __or__ return Stream(_ensure(function(self)), serializer=self.serializer) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/chrome.py", line 790, in inner data) File "/home/rlyders/trac/python/lib/python2.5/site-packages/TicketModifiedFiles-1.00-py2.5.egg/ticketmodifiedfiles/ticketmodifiedfiles.py", line 72, in filter_stream numconflictingtickets = self.__process_ticket_request(req, True) File "/home/rlyders/trac/python/lib/python2.5/site-packages/TicketModifiedFiles-1.00-py2.5.egg/ticketmodifiedfiles/ticketmodifiedfiles.py", line 153, in __process_ticket_request cursor.execute("SELECT message FROM revision WHERE rev IN (SELECT rev FROM node_change WHERE path='%s')" % file) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/util.py", line 51, in execute return self.cursor.execute(sql) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/sqlite_backend.py", line 59, in execute args or []) File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/sqlite_backend.py", line 51, in _rollback_on_error return function(self, *args, **kwargs) OperationalError: near "s": syntax error a new ticket at the Trac project site, where you can describe the problem and explain how to reproduce it.

Python Traceback Most recent call last:

  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/main.py", line 447, in _dispatch_request Code fragment:
    1. try:
    2. if not env and env_error:
    3. raise HTTPInternalError(env_error)
    4. try:
    5. dispatcher = RequestDispatcher(env)
    6. dispatcher.dispatch(req)
    7. except RequestDone:
    8. pass
    9. resp = req._response or []
    10. except HTTPException, e:
    Local variables: Name Value after [u' except RequestDone:', u' pass', u' resp = ... before [u' try:', u' if not env and env_error:', u' raise ... dispatcher <trac.web.main.RequestDispatcher object at 0x494ee2c> e OperationalError('near "s": syntax error',) env <trac.env.Environment object at 0xe316cc> env_error None exc_info (<class 'pysqlite2.dbapi2.OperationalError'>, OperationalError('near "s": ... filename '/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-p ... frames [{'function': '_dispatch_request', 'lines_before': [u' try:', u' ... has_admin True line u' dispatcher.dispatch(req)' lineno 446 message u'OperationalError: near "s": syntax error' req <Request "GET u'/ticket/1351'"> resp [] tb <traceback object at 0x5e35cac> tb_hide None traceback 'Traceback (most recent call last):\n File ...
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/main.py", line 229, in dispatch Code fragment:
    1. pprint(data, out)
    2. req.send(out.getvalue(), 'text/plain')
    3. else:
    4. output = chrome.render_template(req, template,
    5. data,
    6. content_type)
    7. # Give the session a chance to persist changes
    8. if req.session:
    9. req.session.save()
    10. req.send(output, content_type or 'text/html')
    Local variables: Name Value chosen_handler <trac.ticket.web_ui.TicketModule object at 0x494e8cc> chrome <trac.web.chrome.Chrome object at 0x495bbcc> content_type None data {'comment': None, 'attachments': {'attach_href': ... e TypeError("'NoneType' object does not support item assignment",) err (<class 'pysqlite2.dbapi2.OperationalError'>, OperationalError('near "s": ... handler <trac.ticket.web_ui.TicketModule object at 0x494e8cc> req <Request "GET u'/ticket/1351'"> resp ('ticket.html', {'comment': None, 'attachments': {'attach_href': ... self <trac.web.main.RequestDispatcher object at 0x494ee2c> template 'ticket.html'
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/chrome.py", line 703, in render_template Code fragment:
    1. stream = template.generate(data)
    2. # Filter through ITemplateStreamFilter plugins
    3. if self.stream_filters:
    4. stream |= self._filter_stream(req, method, filename, stream, data)
    5. if fragment:
    6. return stream
    7. if method == 'text':
    Local variables: Name Value content_type 'text/html' data {'abs_url_of': <function get_abs_url at 0x7f551ec>, 'comment': None, ... filename 'ticket.html' fragment False method 'xhtml' req <Request "GET u'/ticket/1351'"> self <trac.web.chrome.Chrome object at 0x495bbcc> stream <genshi.core.Stream object at 0x3ba120c> template <MarkupTemplate "ticket.html">
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 128, in or Local variables: Name Value function <function inner at 0x7f557d4> self <genshi.core.Stream object at 0x3ba120c>
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/chrome.py", line 790, in inner Code fragment:
    1. def _filter_stream(self, req, method, filename, stream, data):
    2. def inner(stream, ctxt=None):
    3. for filter in self.stream_filters:
    4. stream = filter.filter_stream(req, method, filename, stream,
    5. data)
    6. return stream
    7. return inner
    Local variables: Name Value ctxt None data {'abs_url_of': <function get_abs_url at 0x7f551ec>, 'comment': None, ... filename 'ticket.html' filter <ticketmodifiedfiles.ticketmodifiedfiles.TicketModifiedFilesPlugin object ... method 'xhtml' req <Request "GET u'/ticket/1351'"> self <trac.web.chrome.Chrome object at 0x495bbcc> stream <genshi.core.Stream object at 0x7f5a32c>
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/TicketModifiedFiles-1.00-py2.5.egg/ticketmodifiedfiles/ticketmodifiedfiles.py", line 72, in filter_stream Local variables: Name Value data {'abs_url_of': <function get_abs_url at 0x7f551ec>, 'comment': None, ... filename 'ticket.html' method 'xhtml' req <Request "GET u'/ticket/1351'"> self <ticketmodifiedfiles.ticketmodifiedfiles.TicketModifiedFilesPlugin object ... stream <genshi.core.Stream object at 0x7f5a32c>
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/TicketModifiedFiles-1.00-py2.5.egg/ticketmodifiedfiles/ticketmodifiedfiles.py", line 153, in process_ticket_request Local variables: Name Value author u'richard.lyders' cursor <trac.db.util.IterableCursor object at 0x5e318cc> db <trac.db.pool.PooledConnection object at 0x7f5a9ac> file u"corisplus/branches/richard.lyders/trac/1351/Today's testing call.msg" files [u'corisplus/branches/richard.lyders/trac/1351', ... filestatus {} id 1351 ignored_statuses [u'closed'] justnumconflictingtickets True match <_sre.SRE_Match object at 0x7f66660> message u'#1351 moved files from #1319' node_change (u'corisplus/branches/richard.lyders/trac/1351/Todays testing call.msg', ... repos <trac.versioncontrol.cache.CachedRepository object at 0x31e4ccc> req <Request "GET u'/ticket/1351'"> rev u'3691' revisions [] self <ticketmodifiedfiles.ticketmodifiedfiles.TicketModifiedFilesPlugin object ... tempstr [u, u' remove quote'] tempticketslist [] thisticket <trac.ticket.model.Ticket object at 0x7f5a82c> ticket 1351 ticketsperfile {u'corisplus/branches/richard.lyders/trac/1351': []} time 1249506746 validrevision True
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/util.py", line 51, in execute Code fragment:
    1. # -- In case of SQL errors, uncomment the following 'print' statements
    2. # print 'execute', repr(sql)
    3. if args:
    4. # print repr(args)
    5. return self.cursor.execute(sql_escape_percent(sql), args)
    6. return self.cursor.execute(sql)
    7. def executemany(self, sql, args=None):
    8. # print 'executemany', repr(sql)
    9. if args:
    10. # print repr(args)
    Local variables: Name Value args None self <trac.db.util.IterableCursor object at 0x5e318cc> sql u"SELECT message FROM revision WHERE rev IN (SELECT rev FROM node_change ...
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/sqlite_backend.py", line 59, in execute Code fragment:
    1. raise
    2. def execute(self, sql, args=None):
    3. if args:
    4. sql = sql % (('?',) * len(args))
    5. return self._rollback_on_error(sqlite.Cursor.execute, sql,
    6. args or [])
    7. def executemany(self, sql, args=None):
    8. if args:
    9. sql = sql % (('?',) * len(args[0]))
    10. return self._rollback_on_error(sqlite.Cursor.executemany, sql,
    11. args or [])
    Local variables: Name Value args None self <trac.db.sqlite_backend.PyFormatCursor object at 0x7f6676c> sql u"SELECT message FROM revision WHERE rev IN (SELECT rev FROM node_change ...
  • File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/sqlite_backend.py", line 51, in _rollback_on_error Code fragment:
    1. sqlite_version_string = '%d.%d.%d' % (_ver[0], _ver[1], int(_ver[2]))
    2. class PyFormatCursor(sqlite.Cursor):
    3. def _rollback_on_error(self, function, *args, kwargs):
    4. try:
    5. return function(self, *args, kwargs)
    6. except sqlite.DatabaseError, e:
    7. self.cnx.rollback()
    8. raise
    9. def execute(self, sql, args=None):
    10. if args:
    Local variables: Name Value args (u"SELECT message FROM revision WHERE rev IN (SELECT rev FROM node_change ... e OperationalError('near "s": syntax error',) function <method 'execute' of 'pysqlite2.dbapi2.Cursor' objects> kwargs {} self <trac.db.sqlite_backend.PyFormatCursor object at 0x7f6676c>

File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/main.py", line 447, in _dispatch_request

dispatcher.dispatch(req)

File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/main.py", line 229, in dispatch

content_type)

File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/chrome.py", line 703, in render_template

stream |= self._filter_stream(req, method, filename, stream, data)

File "/home/rlyders/trac/python/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 128, in orFile "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/web/chrome.py", line 790, in inner

data)

File "/home/rlyders/trac/python/lib/python2.5/site-packages/TicketModifiedFiles-1.00-py2.5.egg/ticketmodifiedfiles/ticketmodifiedfiles.py", line 72, in filter_streamFile "/home/rlyders/trac/python/lib/python2.5/site-packages/TicketModifiedFiles-1.00-py2.5.egg/ticketmodifiedfiles/ticketmodifiedfiles.py", line 153, in process_ticket_requestFile "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/util.py", line 51, in execute

return self.cursor.execute(sql)

File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/sqlite_backend.py", line 59, in execute

args or [])

File "/home/rlyders/trac/python/lib/python2.5/site-packages/Trac-0.12dev_r7454-py2.5.egg/trac/db/sqlite_backend.py", line 51, in _rollback_on_error

return function(self, *args, kwargs)

System Information:

User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) Trac: 0.12dev-r7454 Python: 2.5.1 (r251, Feb 13 2008, 06:34:30) [GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] setuptools: 0.6c9 SQLite: 3.5.1 pysqlite: 2.3.5 Genshi: 0.5.1 mod_python: 3.3.1 Pygments: 1.0 Subversion: 1.4.6 (r28521) jQuery: 1.2.6

TracGuide — The Trac User and Administration Guide

Change History (0)

Note: See TracTickets for help on using tickets.