Hi Nadir,

the problem you are experiencing is probably caused by bad interaction
with some other plugins installed.
You can verify that, and possibly fix it, by disabling all of the plugins except
for Agilo and re-enabling them one by one, checking each time if you see
this error. In this way you could be able to pinpoint the plugin which is
causing problems.

Cheers

On 26/09/11 20:20, Nadir Latif wrote:
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


--
Stefano Rago

--
Follow Agilo on Twitter: http://twitter.com/agiloforscrum
Please support us by reviewing and voting on: http://userstories.com/products/8-agilo-for-scrum http://ohloh.net/p/agilo-scrum http://freshmeat.net/projects/agiloforscrum

You have received this message because you are subscribed to
the "Agilo for Scrum" Google Group. This group is focused on
supporting Agilo for Scrum users and is moderated by
Agilo Software GmbH <http://www.agiloforscrum.com>.

To post to this group, send email to [email protected]
To unsubscribe from this group, send an email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/agilo

Reply via email to