120: Error after adding a comment.

paolo******@gmai***** (Google Code) (Is this you? Claim this profile.)
June 22, 2007
I have added a comment to a review and now at the end of the review page I
have a stack trace.

I'm using Django and Reviewboard from today SVN trunk.

MOD_PYTHON ERROR

ProcessId:      7412
Interpreter:    XXXX

ServerName:     XXXX
DocumentRoot:   '/opt/review-board/reviewboard/reviewboard/htdocs'

URI:            '/r/7/'
Location:       '/'
Directory:      None
Filename:       '/opt/review-board/reviewboard/reviewboard/htdocs/r'
PathInfo:       '/7/'

Phase:          'PythonHandler'
Handler:        'django.core.handlers.modpython'

Traceback (most recent call last):

  File "/usr/lib/python2.4/site-packages/mod_python/importer.py", line
1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/usr/lib/python2.4/site-packages/mod_python/importer.py", line
1229, in _process_target
    result = _execute_target(config, req, object, arg)

  File "/usr/lib/python2.4/site-packages/mod_python/importer.py", line
1128, in _execute_target
    result = object(arg)

  File
"/usr/lib/python2.4/site-packages/django/core/handlers/modpython.py", line
177, in handler
    return ModPythonHandler()(req)

  File
"/usr/lib/python2.4/site-packages/django/core/handlers/modpython.py", line
168, in __call__
    for chunk in response:

  File "/usr/lib/python2.4/site-packages/django/http/__init__.py", line
240, in __iter__
    for chunk in self._container:

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
763, in iter_render
    raise

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
763, in iter_render
    raise

  File "/usr/lib/python2.4/site-packages/django/template/loader_tags.py",
line 23, in iter_render
    for chunk in self.nodelist.iter_render(context):

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
763, in iter_render
    raise

  File "/usr/lib/python2.4/site-packages/django/template/defaulttags.py",
line 144, in iter_render
    for chunk in node.iter_render(context):

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
717, in iter_render
    return (self.render(context),)

  File
"/opt/review-board/reviewboard/reviewboard/utils/templatetags/htmlutils.py",
line 27, in render
    output += self.nodelist.render(context)

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
737, in render
    return ''.join(self.iter_render(context))

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
763, in iter_render
    raise

  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
774, in iter_render

TemplateSyntaxError: Caught an exception while rendering: 'str' object has
no attribute 'iter_render'

Original Traceback (most recent call last):
  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
763, in iter_render
    raise
  File "/usr/lib/python2.4/site-packages/django/template/defaulttags.py",
line 144, in iter_render
    for chunk in node.iter_render(context):
  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
717, in iter_render
    return (self.render(context),)
  File
"/opt/review-board/reviewboard/reviewboard/diffviewer/templatetags/difftags.py",
line 32, in render
    return self.render_file(file, context)
  File
"/opt/review-board/reviewboard/reviewboard/diffviewer/templatetags/difftags.py",
line 73, in render_file
    return nodelist.render(context)
  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
737, in render
    return ''.join(self.iter_render(context))
  File "/usr/lib/python2.4/site-packages/django/template/__init__.py", line
741, in iter_render
    for chunk in node.iter_render(context):
AttributeError: 'str' object has no attribute 'iter_render'
#1 paolo******@gmai***** (Google Code) (Is this you? Claim this profile.)
I have modified the function NodeList.iter_render to print "node" in the following way:

def iter_render(self, context):
        for node in self:
            try:
                 for chunk in node.iter_render(context):
                     yield chunk
            except:
                 f = open("/tmp/rb.debug", "w")
                 f.write("************** NODE ****************")
                 f.write(node)
                 f.close()
                 raise


I got:

$ cat rb.debug
************** NODE ****************
      <tbody class="

chipx86
#2 chipx86
As discussed in person, this turned out to be a Django bug.

(I need a ThirdParty keyword at some point)
  • +Invalid
#3 paolo******@gmai***** (Google Code) (Is this you? Claim this profile.)
It was probably a Django problem.
I have updated my Django today and now it works.