3549: AttibuteError when opening review with just filled in Note to Reviewers

ras****@gmai***** (Google Code) (Is this you? Claim this profile.)
Sept. 4, 2014
What version are you running?
ReviewBoard 2.0.6 and Note To Reviewers 1.0

What's the URL of the page containing the problem?

What steps will reproduce the problem?
1. I had a review open, posted with rbt and filled with description on the web site.
2. I published the review.
3. I clicked on code diff to report an issue.
4. I published the review.
5. I entered additional explanation in 'Note to reviewers' field.
6. I published the review.
7. The mail of change was sent. 

What is the expected output? What do you see instead?
It should present updated review. Instead it generates a HTTP 500 error. It is impossible to open the review again since it always fails with HTTP 500.
Disabling 'Note to Reviewers' extension brought the review back to life.
Please note that I had used this extension before without such problems.

What operating system are you using? What browser?
I run Firefox 31 on Windows 7. Review Board server is hosted on a RedHatEnterpriseLinux 5.9 x86_64.

Please provide any additional information below.
When HTTP 500 is thrown, an exception is logged:
2014-09-02 15:28:54,825 - ERROR -  - Exception thrown for user user at https://server:8081/r/45/

'NoneType' object has no attribute 'strip'
Traceback (most recent call last):
  File "/path/to/reviewboard/lib/python2.7/site-packages/Django-1.6.6-py2.7.egg/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/path/to/reviewboard/lib/python2.7/site-packages/ReviewBoard-2.0.6-py2.7.egg/reviewboard/accounts/decorators.py", line 21, in _check
    return login_required(view_func)(*args, **kwargs)
  File "/path/to/reviewboard/lib/python2.7/site-packages/Django-1.6.6-py2.7.egg/django/contrib/auth/decorators.py", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/path/to/reviewboard/lib/python2.7/site-packages/ReviewBoard-2.0.6-py2.7.egg/reviewboard/site/decorators.py", line 35, in _check
    return view_func(request, local_site=local_site, *args, **kwargs)
  File "/path/to/reviewboard/lib/python2.7/site-packages/ReviewBoard-2.0.6-py2.7.egg/reviewboard/reviews/views.py", line 660, in review_detail
  File "/path/to/reviewboard/lib/python2.7/site-packages/ReviewBoard-2.0.6-py2.7.egg/reviewboard/reviews/fields.py", line 159, in get_change_entry_sections_h
    'rendered_html': mark_safe(self.render_change_entry_html(info)),
  File "/path/to/reviewboard/lib/python2.7/site-packages/ReviewBoard-2.0.6-py2.7.egg/reviewboard/reviews/fields.py", line 484, in render_change_entry_html
    old_value = render_markdown(old_value)
  File "/path/to/reviewboard/lib/python2.7/site-packages/ReviewBoard-2.0.6-py2.7.egg/reviewboard/reviews/markdown_utils.py", line 209, in render_markdown
    return markdown(text, **MARKDOWN_KWARGS)
  File "/path/to/reviewboard/lib/python2.7/site-packages/Markdown-2.4.1-py2.7.egg/markdown/__init__.py", line 411, in markdown
    return md.convert(text)
  File "/path/to/reviewboard/lib/python2.7/site-packages/Markdown-2.4.1-py2.7.egg/markdown/__init__.py", line 275, in convert
    if not source.strip():
AttributeError: 'NoneType' object has no attribute 'strip'
#1 chipx86
This will require a fix in Review Board.
  • +Confirmed
  • +Milestone-Release2.0.x
#2 chipx86
  • -Confirmed
  • +chipx86
#3 chipx86
Worked around this in rbnotefield. Version 1.0.1 is now out: https://www.reviewboard.org/store/products/rbnotefield/

Fixed in rbnotefield master (b99daa6).

Also fixed in review Board release-2.0.x (877aadb)
  • -PendingReview