Hi Stefano...i cleared the trac cache and the message stopped showing.
however now we are getting this error when we try to update a ticket:
Trac detected an internal error:
AttributeError: 'Ticket' object has no attribute 'is_writeable_field'
Python Traceback
Most recent call last:
* File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-
py2.6.egg/trac/web/main.py", line 511, in _dispatch_request
Code fragment:
Line
506 try:
507 if not env and env_error:
508 raise HTTPInternalError(env_error)
509 try:
510 dispatcher = RequestDispatcher(env)
511 dispatcher.dispatch(req)
512 except RequestDone:
513 pass
514 resp = req._response or []
515
516 except HTTPException, e:
Local variables:
Name Value
dispatcher <trac.web.main.RequestDispatcher object at
0xb9630e6c>
e AttributeError("'Ticket' object has no attribute
'is_writeable_field'",)
env <trac.env.Environment object at 0xb8e00f8c>
env_error None
req <Request "POST '/worklog'">
resp []
* File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-
py2.6.egg/trac/web/main.py", line 237, in dispatch
Code fragment:
Line
232 msg = _('Do you have cookies enabled?')
233 raise HTTPBadRequest(_('Missing or invalid form token.'
234 ' %(msg)s', msg=msg))
235
236 # Process the request and render the template
237 resp = chosen_handler.process_request(req)
238 if resp:
239 if len(resp) == 2: # Clearsilver
240 chrome.populate_hdf(req)
241 template, content_type = \
242 self._post_process_request(req, *resp)
Local variables:
Name Value
chosen_handler <worklog.webui.WorkLogPage object at 0xb963002c>
chrome <trac.web.chrome.Chrome object at 0xb9630a6c>
ctype 'application/x-www-form-urlencoded'
err (<type 'exceptions.AttributeError'>,
AttributeError("'Ticket' object has ...
handler <worklog.webui.WorkLogPage object at 0xb963002c>
options {}
req <Request "POST '/worklog'">
self <trac.web.main.RequestDispatcher object at 0xb9630e6c>
* File "/usr/local/lib/python2.6/dist-packages/worklog-0.2-
py2.6.egg/worklog/webui.py", line 147, in process_request
Code fragment:
Line
142
143 comment = ''
144 if req.args.has_key('comment'):
145 comment = req.args['comment']
146
147 if not mgr.stop_work(stoptime, comment):
148 addMessage(mgr.get_explanation())
149 else:
150 addMessage('You have stopped working.')
151
152 req.redirect(req.args['source_url'])
Local variables:
Name Value
addMessage <function addMessage at 0xb968cf7c>
comment u''
match None
messages []
mgr <worklog.manager.WorkLogManager instance at 0xb962bb4c>
req <Request "POST '/worklog'">
self <worklog.webui.WorkLogPage object at 0xb963002c>
stoptime None
* File "/usr/local/lib/python2.6/dist-packages/worklog-0.2-
py2.6.egg/worklog/manager.py", line 218, in stop_work
Code fragment:
Line
213
214 tckt = Ticket(self.env, active['ticket'])
215
216 if plugtne:
217 tckt['hours'] = hours
218 self.save_ticket(tckt, message)
219 message = ''
220
221 if message:
222 tckt = Ticket(self.env, active['ticket'])
223 self.save_ticket(tckt, message)
Local variables:
Name Value
active {'comment': '', 'summary': u'install agilo for trac
plugin', 'lastchange': ...
comment u''
delta 1
do_log None
hours '0.01'
message 'Hours recorded automatically by the worklog plugin.'
plughrs False
plugtne u'text'
round_delta 1.0
self <worklog.manager.WorkLogManager instance at 0xb962bb4c>
stoptime 1317060667.0
tckt <trac.ticket.model.Ticket object at 0xb96a1f6c>
* File "/usr/local/lib/python2.6/dist-packages/worklog-0.2-
py2.6.egg/worklog/manager.py", line 77, in save_ticket
Code fragment:
Line
72 for change in tm.grouped_changelog_entries(tckt, None):
73 if change['permanent']:
74 cnum += 1
75 nowdt = self.now
76 nowdt = to_datetime(nowdt)
77 tckt.save_changes(self.authname, msg, nowdt, None, cnum+1)
78 ## Often the time overlaps and causes a db error,
79 ## especially when the trac integration post-commit hook is
used.
80 ## NOTE TO SELF. I DON'T THINK THIS IS NECESSARY RIGHT NOW...
81 #count = 0
82 #while count< 10:
Local variables:
Name Value
change {'comment': u'Hours recorded automatically by the
worklog plugin.', ...
cnum 3
msg 'Hours recorded automatically by the worklog plugin.'
nowdt datetime.datetime(2011, 9, 26, 18, 11, 8,
tzinfo=<LocalTimezone "UTC" ...
self <worklog.manager.WorkLogManager instance at 0xb962bb4c>
tckt <trac.ticket.model.Ticket object at 0xb96a1f6c>
tm <trac.ticket.web_ui.TicketModule object at 0xb9630aac>
* File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-
py2.6.egg/trac/ticket/model.py", line 360, in save_changes
Code fragment:
Line
355 old_values = self._old
356 self._old = {}
357 self.values['changetime'] = when
358
359 for listener in TicketSystem(self.env).change_listeners:
360 listener.ticket_changed(self, comment, author, old_values)
361 return True
362
363 def get_changelog(self, when=None, db=None):
364 """Return the changelog as a list of tuples of the form
365 (time, author, field, oldvalue, newvalue, permanent).
Local variables:
Name Value
author u'admin'
cnum 4
comment 'Hours recorded automatically by the worklog plugin.'
db None
do_save None
listener
<agilo.scrum.burndown.changelistener.BurndownDataChangeListener object
at ...
old_values {'hours': u'0.0'}
self <trac.ticket.model.Ticket object at 0xb96a1f6c>
when datetime.datetime(2011, 9, 26, 18, 11, 8,
tzinfo=<LocalTimezone "UTC" ...
when_ts 1317060668000000L
* File "/usr/local/lib/python2.6/dist-packages/agilo-0.9.4-
py2.6.egg/agilo/scrum/burndown/changelistener.py", line 69, in
ticket_changed
Code fragment:
Line
64 # TICKET CHANGE
65 #
-------------------------------------------------------------------------
66
67 # ITicketChangeListener method
68 def ticket_changed(self, ticket, comment, author,
old_values):
69 current_sprint_name = self._current_sprint_name(ticket)
70 previous_sprint_name = self._previous_sprint_name(ticket,
old_values, current_sprint_name)
71 current_remaining_time = self._current_remaining_time(ticket)
72 previous_remaining_time =
self._previous_remaining_time(ticket, old_values,
current_remaining_time)
73 current_component = self._current_component(ticket)
74 previous_component = self._previous_component(ticket,
old_values, current_component)
Local variables:
Name Value
author u'admin'
comment 'Hours recorded automatically by the worklog plugin.'
old_values {'hours': u'0.0'}
self
<agilo.scrum.burndown.changelistener.BurndownDataChangeListener object
at ...
ticket <trac.ticket.model.Ticket object at 0xb96a1f6c>
* File "/usr/local/lib/python2.6/dist-packages/agilo-0.9.4-
py2.6.egg/agilo/scrum/burndown/changelistener.py", line 119, in
_current_sprint_name
Code fragment:
Line
114 BurndownDataChange.create_aggregation_skip_marker(self.env,
sprint_name).save()
115
116 def _current_sprint_name(self, ticket):
117 # Sprint name cannot be empty, because that would not be a
valid primary key
118 # and we prevent that in the sprint creation GUI
119 return self._current_value(Key.SPRINT, ticket) or None
120
121 def _current_remaining_time(self, ticket):
122 return float(self._current_value(Key.REMAINING_TIME, ticket)
or 0)
123
124 def _current_component(self, ticket):
Local variables:
Name Value
self
<agilo.scrum.burndown.changelistener.BurndownDataChangeListener object
at ...
ticket <trac.ticket.model.Ticket object at 0xb96a1f6c>
* File "/usr/local/lib/python2.6/dist-packages/agilo-0.9.4-
py2.6.egg/agilo/scrum/burndown/changelistener.py", line 128, in
_current_value
Code fragment:
Line
123
124 def _current_component(self, ticket):
125 return self._current_value(Key.COMPONENT, ticket)
126
127 def _current_value(self, fieldname, ticket):
128 if not ticket.is_writeable_field(fieldname) or not
ticket[fieldname]:
129 return None
130 return ticket[fieldname]
131
132 def _previous_sprint_name(self, ticket, old_values,
current_sprint_name):
133 # empty sprint_name is verboten
Local variables:
Name Value
fieldname 'sprint'
self
<agilo.scrum.burndown.changelistener.BurndownDataChangeListener object
at ...
ticket <trac.ticket.model.Ticket object at 0xb96a1f6c>
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/web/main.py", line 511, in _dispatch_request
dispatcher.dispatch(req)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/web/main.py", line 237, in dispatch
resp = chosen_handler.process_request(req)
File "/usr/local/lib/python2.6/dist-packages/worklog-0.2-py2.6.egg/
worklog/webui.py", line 147, in process_request
if not mgr.stop_work(stoptime, comment):
File "/usr/local/lib/python2.6/dist-packages/worklog-0.2-py2.6.egg/
worklog/manager.py", line 218, in stop_work
self.save_ticket(tckt, message)
File "/usr/local/lib/python2.6/dist-packages/worklog-0.2-py2.6.egg/
worklog/manager.py", line 77, in save_ticket
tckt.save_changes(self.authname, msg, nowdt, None, cnum+1)
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.2-py2.6.egg/
trac/ticket/model.py", line 360, in save_changes
listener.ticket_changed(self, comment, author, old_values)
File "/usr/local/lib/python2.6/dist-packages/agilo-0.9.4-py2.6.egg/
agilo/scrum/burndown/changelistener.py", line 69, in ticket_changed
current_sprint_name = self._current_sprint_name(ticket)
File "/usr/local/lib/python2.6/dist-packages/agilo-0.9.4-py2.6.egg/
agilo/scrum/burndown/changelistener.py", line 119, in
_current_sprint_name
return self._current_value(Key.SPRINT, ticket) or None
File "/usr/local/lib/python2.6/dist-packages/agilo-0.9.4-py2.6.egg/
agilo/scrum/burndown/changelistener.py", line 128, in _current_value
if not ticket.is_writeable_field(fieldname) or not
ticket[fieldname]:
information about our trac setup:
System Information:
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:
1.9.2.22) Gecko/20110902 Firefox/3.6.22 ( .NET CLR 3.5.30729)
Trac 0.12.2
Agilo 0.9.4
Genshi 0.6
GIT 1.7.0.4
mod_wsgi 3.3 (WSGIProcessGroup WSGIApplicationGroup exergoit.se|/ecis/
exergo/external_tools/trac/ecis)
MySQL server: "5.1.41-3ubuntu12.10-log", client: "5.1.41", thread-
safe: 1
MySQLdb 1.2.3
Python 2.6.5 (r265:79063, Apr 16 2010, 13:28:26) [GCC 4.4.3]
RPC 1.1.2
setuptools 0.6
jQuery 1.4.2
Enabled Plugins:
agilo 0.9.4 /usr/local/lib/python2.6/dist-packages/agilo-0.9.4-
py2.6.egg
graphviz 0.6.11 /usr/local/lib/python2.6/dist-packages/
graphviz-0.6.11-py2.6.egg
GridModify 0.1.5 /usr/local/lib/python2.6/dist-packages/
GridModify-0.1.5-py2.6.egg
HudsonTrac 0.4 /usr/local/lib/python2.6/dist-packages/HudsonTrac-0.4-
py2.6.egg
IniAdmin 0.2 /usr/local/lib/python2.6/dist-packages/IniAdmin-0.2-
py2.6.egg
timingandestimationplugin 1.1.4 /usr/local/lib/python2.6/dist-
packages/timingandestimationplugin-1.1.4-py2.6.egg
TracAccountManager 0.3.1 /usr/local/lib/python2.6/dist-packages/
TracAccountManager-0.3.1-py2.6.egg
TracGit 0.12.0.5dev /usr/local/lib/python2.6/dist-packages/
TracGit-0.12.0.5dev-py2.6.egg
TracMasterTickets 3.0.2 /usr/local/lib/python2.6/dist-packages/
TracMasterTickets-3.0.2-py2.6.egg
TracXMLRPC 1.1.2 /mnt/public_html/process/httpdocs/external_tools/
trac/ecis/plugins/TracXMLRPC-1.1.2-py2.6.egg
worklog 0.2 /usr/local/lib/python2.6/dist-packages/worklog-0.2-
py2.6.egg
On Sep 9, 9:20 am, Stefano Rago<[email protected]>
wrote:
Hi Nadir,
On 06/09/11 05:02, Nadir Latif wrote:
Hello...after installing the open source agilo for scrum plugin, when
i try to edit a ticket i get an error saying "Warning: The action
"view" is not available.". also when i try to update a ticket's
remaining hours value, i get an error "Warning: The action "leave" is
not available.".
Did you install Agilo on a fresh Trac instance? Do you have other third
party
plugins installed?
Cheers
--
Stefano Rago