Modify

Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#6090 closed defect (fixed)

Just installed in 11.5, get error when trying to use it

Reported by: Thanatermesis Owned by: martin_s
Priority: normal Component: WatchlistPlugin
Severity: major Keywords:
Cc: martin@… Trac Release: 0.11

Description

New 11.5 install, WatchlistPlugin not looks like to work, I have the links to Watchlist but when I try to click in any of them i have that error:

Short
File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 444, in _dispatch_request
  dispatcher.dispatch(req)
File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 205, in dispatch
  resp = chosen_handler.process_request(req)
File "/home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6942-py2.4.egg/tracwatchlist/plugin.py", line 244, in process_request
  wldict['user_settings'] = self._get_user_settings(user)
File "/home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6942-py2.4.egg/tracwatchlist/plugin.py", line 115, in _get_user_settings
  (settingsstr,) = cursor.fetchone()
Long
Python Traceback
Most recent call last:

    * File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 444, in _dispatch_request
      Code fragment:
       439. try:
       440. if not env and env_error:
       441. raise HTTPInternalError(env_error)
       442. try:
       443. dispatcher = RequestDispatcher(env)
       444. dispatcher.dispatch(req)
       445. except RequestDone:
       446. pass
       447. resp = req._response or []
       448.  
       449. 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 0x7f39c18a0d50>
      e 	<exceptions.TypeError instance at 0x7f39c17c6440>
      env 	<trac.env.Environment object at 0x7f39c4b72e10>
      env_error 	None
      exc_info 	(<class exceptions.TypeError at 0x7f39c87de230>, <exceptions.TypeError ...
      filename 	'/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/ ...
      frames 	[{'function': '_dispatch_request', 'lines_before': [u' try:', u' ...
      has_admin 	True
      line 	u' dispatcher.dispatch(req)'
      lineno 	443
      message 	u'TypeError: unpack non-sequence'
      req 	<Request "GET u'/watchlist'">
      resp 	[]
      tb 	<traceback object at 0x7f39c17c6dd0>
      tb_hide 	None
      traceback 	u'Traceback (most recent call last):\n File ...
    * File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 205, in dispatch
      Code fragment:
       200. req.args.get('__FORM_TOKEN') != req.form_token:
       201. raise HTTPBadRequest('Missing or invalid form token. '
       202. 'Do you have cookies enabled?')
       203.  
       204. # Process the request and render the template
       205. resp = chosen_handler.process_request(req)
       206. if resp:
       207. if len(resp) == 2: # Clearsilver
       208. chrome.populate_hdf(req)
       209. template, content_type = \
       210. self._post_process_request(req, *resp)
      Local variables:
      Name	Value
      chosen_handler 	<tracwatchlist.plugin.WatchlinkPlugin object at 0x7f39c18a0250>
      chrome 	<trac.web.chrome.Chrome object at 0x7f39c18a0550>
      err 	(<class exceptions.TypeError at 0x7f39c87de230>, <exceptions.TypeError ...
      handler 	<tracwatchlist.plugin.WatchlinkPlugin object at 0x7f39c18a0250>
      req 	<Request "GET u'/watchlist'">
      self 	<trac.web.main.RequestDispatcher object at 0x7f39c18a0d50>
    * File "/home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6942-py2.4.egg/tracwatchlist/plugin.py", line 244, in process_request
      Code fragment:
       239. del d['action']
       240. self._save_user_settings(user, d)
       241. action = "view"
       242. wldict['user_settings'] = d
       243. else:
       244. wldict['user_settings'] = self._get_user_settings(user)
       245.  
       246. wldict['is_watching'] = is_watching
       247. if action == "view":
       248. timeline = href('timeline', precision='seconds') + "&from="
       249. def timeline_link(time):
      Local variables:
      Name	Value
      action 	'view'
      args 	{}
      cursor 	<trac.db.util.IterableCursor object at 0x7f39c1871ad0>
      db 	<trac.db.pool.PooledConnection object at 0x7f39c17630a0>
      gnotify 	False
      href 	<trac.web.href.Href object at 0x7f39c18fec50>
      is_watching 	None
      ispattern 	False
      req 	<Request "GET u'/watchlist'">
      self 	<tracwatchlist.plugin.WatchlinkPlugin object at 0x7f39c18a0250>
      ticket_perm 	True
      user 	u'thanatermesis'
      wiki_perm 	True
      wldict 	{'wiki_perm': True, 'notify': False, 'ticket_perm': True}
      wlhref 	'/watchlist'
    * File "/home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6942-py2.4.egg/tracwatchlist/plugin.py", line 115, in _get_user_settings
      Code fragment:
       110. cursor = db.cursor()
       111. cursor.execute(
       112. "SELECT settings FROM watchlist_settings WHERE wluser = %s",
       113. (user,) )
       114.  
       115. (settingsstr,) = cursor.fetchone()
       116. try:
       117. return dict([ kv.split('=') for kv in settingsstr.split("&") ])
       118. except:
       119. return dict()
       120.  
      Local variables:
      Name	Value
      cursor 	<trac.db.util.IterableCursor object at 0x7f39c1a62f90>
      db 	<trac.db.pool.PooledConnection object at 0x7f39c18b7e10>
      self 	<tracwatchlist.plugin.WatchlinkPlugin object at 0x7f39c18a0250>
      user 	u'thanatermesis'

File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 444, in _dispatch_request
  dispatcher.dispatch(req)
File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 205, in dispatch
  resp = chosen_handler.process_request(req)
File "/home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6942-py2.4.egg/tracwatchlist/plugin.py", line 244, in process_request
  wldict['user_settings'] = self._get_user_settings(user)
File "/home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6942-py2.4.egg/tracwatchlist/plugin.py", line 115, in _get_user_settings
  (settingsstr,) = cursor.fetchone()



Attachments (0)

Change History (15)

comment:1 Changed 5 years ago by martin_s

(In [6944]) Fixed error occurring if user does not has a settings entry in watchlist_settings table. See #6090.

comment:2 Changed 5 years ago by martin_s

  • Status changed from new to assigned

Should be fixed in [6944]. Please install and acknowledge that.

What database backend do you using? The default sqlite or postgres?

comment:3 Changed 5 years ago by martin_s

  • Resolution set to fixed
  • Status changed from assigned to closed

I just successfully tested it on my test trac system and the error is now gone.

Thanks also for the detailed error log - many people forget about such things - but next time please also post the error headline which shows up in the browser:

Trac detected an internal error:
TypeError: 'NoneType' object is not iterable

This helps to now what kind of error it is. Reading this information out of the detailed log is possible but a little difficult.

comment:4 Changed 5 years ago by anonymous

Ok, i will try to remember the next time :)

Not yet fixed there

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int) FROM watchlist WHERE wluser='thanatermesis' AND realm='ticket') GROUP BY id' at line 1")

The database that i use is mysql

There's the traceback (in order to not flood much there) http://debian.pastebin.com/m579cb372

comment:5 Changed 5 years ago by martin_s

(In [6948]) Changed SQL cast type from int to integer for MySQL users. See #6090.

comment:6 Changed 5 years ago by martin_s

(In [6949]) Made some SQL adjustment to better support MySQL. See #6090.

comment:7 Changed 5 years ago by martin_s

I installed now MySQL to test the plugin. The watchlist works for me as of [6949]. Please test and acknowledge.

comment:8 Changed 5 years ago by martin_s

(In [6950]) Changed SQL code to support MySQL and PostgresSQL backends better. See #6090, #4097.

comment:9 follow-up: Changed 5 years ago by anonymous

Still not working:

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int) FROM watchlist WHERE wluser='thanatermesis' AND realm='ticket') GROUP BY id' at line 1")

I dont need to run a trac-admin upgrade (again) right ? so in any case it says that my database is up to date and there's no need to upgrade

Btw, I don't think that matters, but the conf line automatically added is not like in the description but like: tracwatchlist.plugin.watchlinkplugin = enabled

comment:10 in reply to: ↑ 9 Changed 5 years ago by martin_s

Replying to anonymous:

Still not working:

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int) FROM watchlist WHERE wluser='thanatermesis' AND realm='ticket') GROUP BY id' at line 1")

You are using an old version of the watchlist plugin. Did you installed it from the SVN repository or over your OS package manager? Please install at least v0.4.6950, i.e. [6950] from the SVN repository as described at WatchlistPlugin#Installation.

I dont need to run a trac-admin upgrade (again) right ? so in any case it says that my database is up to date and there's no need to upgrade

Do not worry, if you would need to run it again it would tell you - very loudly.

Btw, I don't think that matters, but the conf line automatically added is not like in the description but like: tracwatchlist.plugin.watchlinkplugin = enabled

If you get the above error the plugin is used so this line seems to be ok. However, there was a typo in the setup file of the version you use: watchlinkplugin should be watchlistplugin. I think you have to change that when you update to a newer version of the plugin.

comment:11 Changed 5 years ago by Thanatermesis

Mmmh, that's teh option

Now i got this error:

TemplateNotFound: Template "watchlist.html" not found

Short:

Most recent call last:

File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 444, in _dispatch_request
  dispatcher.dispatch(req)
File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/main.py", line 226, in dispatch
  data, content_type)
File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/chrome.py", line 730, in render_template
  template = self.load_template(filename, method=method)
File "/home/elivedev/packages/lib/python2.4/site-packages/Trac-0.11.5-py2.4.egg/trac/web/chrome.py", line 704, in load_template
  return self.templates.load(filename, cls=cls)
File "/var/lib/python-support/python2.4/genshi/template/loader.py", line 237, in load
  raise TemplateNotFound(filename, search_path)

long: http://debian.pastebin.com/m7d88e716

Note the line:

search_path ['/home/elivedev/trac_sites/Elive/templates', ...

I have it installed on this dir: /home/elivedev/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6964-py2.4.egg

Since I dont have root on this server i need to use (this works with the rest of things installed): easy_install --prefix=$HOME/packages http://....

For a faster tests maybe you can try to enter in the #trac channel in IRC, im with nickname wald0

comment:12 Changed 5 years ago by Thanatermesis

Enabling/disabling it from the Admin menu (so, graphically, no editing the .ini file), it automatically adds this line, just looking at this:

tracwatchlist.plugin.watchlinkplugin = disabled

So I mean that this is the default value set by the Trac gui Admin tab plugins section

Nothing about tracwatchlist.* = enabled

comment:13 Changed 5 years ago by martin_s

(In [6973]) tracwatchlist/plugin.py:: Fixed typo in class names. This affects past Admin menu settings. See #6090.

comment:14 Changed 5 years ago by Thanatermesis

It looks like to work after to link the template, im not sure if is fixed or not in tracwatchlist or not for future (new) installs, that's what i have nededed to do, note my actual dir:

$ pwd 
/home/elivedev/trac_sites/Elive/templates
$ ln -s $HOME/packages/lib/python2.4/site-packages/TracWatchlistPlugin-0.4.6973-py2.4.egg/tracwatchlist/templates/watchlist.html .

Perfectly working after to do that :)

comment:15 Changed 5 years ago by martin_s

IMHO this seem be a configuration or installation issue, e.g. maybe wrong include paths. It works fine on all of mine installation and the template file is correctly placed in the installation package.

Anyway, I'm happy that it finally works for you.

Add Comment

Modify Ticket

Action
as closed The owner will remain martin_s.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.