Hi Zach,

My guess is it's the mod_python support. Looking in Django 1.4's code for
that, it assumes the existence of a "Content-Type" header in the request.
This doesn't exist in your particular case.

Looking at RBTools's code, we only set the Content-Type if the request has
a body. Your request does not. You can try setting some kind of field (say,
body_top="") in the create() call and see if that helps.

Ideally, if you could move to mod_wsgi, you'd be in better shape. Newer
versions of Django, and therefore Review Board, do not support mod_python.
WSGI has fully replaced mod_python in the world, with a more formalized
spec and better support everywhere. Of course, it's hard to justify
changing something that otherwise works, but you'll probably have to deal
with hacks in RBTools otherwise for now.

That said, we might want to change our code to always set a Content-Type to
some default if not otherwise specified. I think we'd take a patch for
that, if that ends up being the easier solution for you. (This probably is
not needed for anything but mod_python, fwiw.)

Christian


-- 
Christian Hammond
President/CEO of Beanbag <https://www.beanbaginc.com/>
Makers of Review Board <https://www.reviewboard.org/>

On Thu, Dec 1, 2016 at 12:49 PM, Zach Brown <brownzach...@gmail.com> wrote:

> Here's the server side stack trace.
>
> Traceback (most recent call last):
>
>   File "/opt/apps/reviewboard/rbinstall/usr/lib/python2.6/
> site-packages/Django-1.4.13-py2.6.egg/django/core/handlers/base.py", line
> 109, in get_response
>     response = callback(request, *callback_args, **callback_kwargs)
>
>   File "/opt/apps/reviewboard/rbinstall/usr/lib/python2.6/
> site-packages/Django-1.4.13-py2.6.egg/django/views/decorators/cache.py",
> line 89, in _wrapped_view_func
>     response = view_func(request, *args, **kwargs)
>
>   File "/opt/apps/reviewboard/rbinstall/usr/lib/python2.6/
> site-packages/Django-1.4.13-py2.6.egg/django/views/decorators/vary.py",
> line 19, in inner_func
>     response = func(*args, **kwargs)
>
>   File "/opt/apps/reviewboard/rbinstall/usr/lib/python2.6/
> site-packages/Djblets-0.7.30-py2.6.egg/djblets/webapi/resources.py", line
> 446, in __call__
>     method = request.POST.get('_method', kwargs.get('_method', method))
>
>   File "/opt/apps/reviewboard/rbinstall/usr/lib/python2.6/
> site-packages/Django-1.4.13-py2.6.egg/django/core/handlers/modpython.py",
> line 69, in _get_post
>     self._load_post_and_files()
>
>   File "/opt/apps/reviewboard/rbinstall/usr/lib/python2.6/
> site-packages/Django-1.4.13-py2.6.egg/django/http/__init__.py", line 361,
> in _load_post_and_files
>     if self.META.get('CONTENT_TYPE', '').startswith('multipart'):
>
> AttributeError: 'NoneType' object has no attribute 'startswith'
>
>
> On Thursday, December 1, 2016 at 12:23:11 PM UTC-6, David Trowbridge wrote:
>>
>> It looks like you're actually hitting a bug on the server side. Can you
>> look in the log file and see if you can find a traceback?
>>
>> -David
>>
>> On Thu, Dec 1, 2016 at 8:28 AM Zach Brown <brownz...@gmail.com> wrote:
>>
>>> I'm attempting to create review. I've done it before successfully when I
>>> was using a different server that was more up to date.
>>>
>>> Here's code that causes the issue I'm experiencing. The client object is
>>> correctly authenticated user who has access to the review in question.
>>>
>>> root = client.get_root()
>>> request = root.get_review_request(review_request_id=162910)
>>> print request.get_reviews().create()
>>>
>>>
>>> Here's the stack trace.
>>> Traceback (most recent call last):
>>>   File "/home/zbrown/pycharm-community-2016.2.2/helpers/pydev/pydevd.py",
>>> line 1580, in <module>
>>>     globals = debugger.run(setup['file'], None, None, is_module)
>>>   File "/home/zbrown/pycharm-community-2016.2.2/helpers/pydev/pydevd.py",
>>> line 964, in run
>>>     pydev_imports.execfile(file, globals, locals)  # execute the script
>>>   File "/home/zbrown/techWeek/reviewboardbots/responseagent.py", line
>>> 31, in <module>
>>>     print request.get_reviews().create()
>>>   File 
>>> "/home/zbrown/.local/lib/python2.7/site-packages/rbtools/api/resource.py",
>>> line 137, in <lambda>
>>>     meth(resource, **kwargs)))
>>>   File 
>>> "/home/zbrown/.local/lib/python2.7/site-packages/rbtools/api/decorators.py",
>>> line 27, in request_method
>>>     *args, **kwargs)
>>>   File 
>>> "/home/zbrown/.local/lib/python2.7/site-packages/rbtools/api/transport/sync.py",
>>> line 75, in execute_request_method
>>>     return self._execute_request(request)
>>>   File 
>>> "/home/zbrown/.local/lib/python2.7/site-packages/rbtools/api/transport/sync.py",
>>> line 84, in _execute_request
>>>     rsp = self.server.make_request(request)
>>>   File 
>>> "/home/zbrown/.local/lib/python2.7/site-packages/rbtools/api/request.py",
>>> line 587, in make_request
>>>     self.process_error(e.code, e.read())
>>>   File 
>>> "/home/zbrown/.local/lib/python2.7/site-packages/rbtools/api/request.py",
>>> line 563, in process_error
>>>     raise APIError(http_status, None, None, data)
>>> rbtools.api.errors.APIError: HTTP 500
>>>
>>> On Wednesday, November 30, 2016 at 6:46:36 PM UTC-6, Christian Hammond
>>> wrote:
>>>
>>>> Hi Zach,
>>>>
>>>> RBTools is supposed to work with Review Board 1.7.x. Can you show me
>>>> the problems you're hitting, along with a debug log?
>>>>
>>>> Christian
>>>>
>>>
>>>> --
>>>> Christian Hammond
>>>> President/CEO of Beanbag <https://www.beanbaginc.com/>
>>>> Makers of Review Board <https://www.reviewboard.org/>
>>>>
>>>> On Wed, Nov 30, 2016 at 3:57 PM, Zach Brown <brownz...@gmail.com>
>>>> wrote:
>>>>
>>>
>>>>> I'm working with a a Review Board v1.7.27, which is out of date I
>>>>> know, but I can't do anything about that.
>>>>> My issue is I'm trying to use RBTools and I'm running into some issues
>>>>> I suspect are compatibility issues.
>>>>> Is there documentation somewhere about which version of RBTools to use
>>>>> for a certain version of Review Board?
>>>>>
>>>>> --
>>>>> Supercharge your Review Board with Power Pack:
>>>>> https://www.reviewboard.org/powerpack/
>>>>> Want us to host Review Board for you? Check out RBCommons:
>>>>> https://rbcommons.com/
>>>>> Happy user? Let us know! https://www.reviewboard.org/users/
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "reviewboard" group.
>>>>>
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to reviewboard...@googlegroups.com.
>>>>
>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>> Supercharge your Review Board with Power Pack:
>>> https://www.reviewboard.org/powerpack/
>>> Want us to host Review Board for you? Check out RBCommons:
>>> https://rbcommons.com/
>>> Happy user? Let us know! https://www.reviewboard.org/users/
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "reviewboard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to reviewboard...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> Supercharge your Review Board with Power Pack:
> https://www.reviewboard.org/powerpack/
> Want us to host Review Board for you? Check out RBCommons:
> https://rbcommons.com/
> Happy user? Let us know! https://www.reviewboard.org/users/
> ---
> You received this message because you are subscribed to the Google Groups
> "reviewboard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to reviewboard+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Supercharge your Review Board with Power Pack: 
https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: 
https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
--- 
You received this message because you are subscribed to the Google Groups 
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reviewboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to