Modify

Opened 2 years ago

Last modified 2 years ago

#10620 new defect

UndefinedError: "data" not defined when navigating to the Announcements preference panel

Reported by: rjollos Owned by: hasienda
Priority: normal Component: AnnouncerPlugin
Severity: normal Keywords: UndefinedError
Cc: Trac Release: 0.11

Description

07:07:32 PM Trac[main] ERROR: Internal Server Error: 
Traceback (most recent call last):
  File "/home/user/Workspace/th9110/trac-trunk/trac/web/main.py", line 497, in _dispatch_request
    dispatcher.dispatch(req)
  File "/home/user/Workspace/th9110/trac-trunk/trac/web/main.py", line 233, in dispatch
    content_type)
  File "/home/user/Workspace/th9110/trac-trunk/trac/web/chrome.py", line 1008, in render_template
    encoding='utf-8')
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 183, in render
    return encode(generator, method=method, encoding=encoding, out=out)
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/output.py", line 58, in encode
    for chunk in iterator:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/output.py", line 339, in __call__
    for kind, data, pos in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/output.py", line 826, in __call__
    for kind, data, pos in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/output.py", line 670, in __call__
    for kind, data, pos in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/output.py", line 771, in __call__
    for kind, data, pos in chain(stream, [(None, None, None)]):
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/output.py", line 586, in __call__
    for ev in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "/home/user/Workspace/th9110/trac-trunk/trac/web/chrome.py", line 1145, in _strip_accesskeys
    for kind, data, pos in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "/home/user/Workspace/th9110/trac-trunk/trac/web/chrome.py", line 1134, in _generate
    for kind, data, pos in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 605, in _include
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/markup.py", line 362, in _match
    content = list(content)
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 605, in _include
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/markup.py", line 316, in _strip
    event = next()
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 545, in _flatten
    for kind, data, pos in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 605, in _include
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/markup.py", line 327, in _match
    for event in stream:
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 555, in _flatten
    for event in self._flatten(value, ctxt, **vars)
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 565, in _flatten
    result = _eval_expr(data, ctxt, vars)
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/base.py", line 277, in _eval_expr
    retval = expr.evaluate(ctxt)
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/eval.py", line 178, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File "/home/user/Workspace/trac-hacks/announcerplugin/trunk/announcer/templates/prefs_announcer_watch_users.html", line 10, in <Expression u'data.announcer_watch_users'>
    <input type="text" id="announcer_watch_users" name="announcer_watch_users"
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/eval.py", line 316, in lookup_attr
    val = getattr(obj, key)
  File "/home/user/Workspace/th9110/genshi-0.6.0/genshi/template/eval.py", line 277, in _die
    raise UndefinedError(self._name, self._owner)
UndefinedError: "data" not defined

Attachments (0)

Change History (4)

comment:1 Changed 2 years ago by rjollos

The fix appears to be:

  • announcerplugin/trunk/announcer/templates/prefs_announcer_watch_users.html

     
    88     a wiki page or ticket.  <br />
    99     <label for="announcer_watch_users">Watch Users:
    1010     <input type="text" id="announcer_watch_users" name="announcer_watch_users"
    11        value="${data.announcer_watch_users}"/></label>
     11       value="${announcer_watch_users}"/></label>
    1212</span>

comment:2 Changed 2 years ago by rjollos

I'd suggest that as part of this ticket we wire up the infrastructure for functional tests, and add a functional test to cover this issue. This is at the front of my mind due to recent work on t:#10281. If you agree, you can count on me to provide a patch that adds functional tests in the coming days.

comment:3 Changed 2 years ago by hasienda

  • Keywords UndefinedError added

Oops …, I did a simplification to the call of this template, but forgot about references in the template itself, and even worse, I didn't test this templates usage before commit. So sure, if you can work-out the intro for functional tests for announcer, this would be great. I'll just go and fix this issue right-away.

comment:4 Changed 2 years ago by hasienda

(In [12356]) TracAnnouncer: Adapt the template to data dict change in [12338], refs #10620.

Obviously I failed to track all my changes in that changeset, and especially the move-and-modernize approach has fired back here - sorry, and thanks to Ryan J Ollos for spotting this as well as the right place for the fix.

I took the chance to improve template format like I'd do for others later on. That's bound to break msgid's for translation, but I'll need to do a message extraction for other recent i18n-relevant changes anyway.

Add Comment

Modify Ticket

Action
as new The owner will remain hasienda.
Author


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

 
Note: See TracTickets for help on using tickets.