uploadcare/pyuploadcare

Error in Django Admin - render() got an unexpected keyword argument 'renderer'

viperfx opened this issue · 9 comments

Using ImageField in a model and viewing a django model object with it.

Full stack trace

Environment:


Request Method: GET
Request URL: http://localhost:8000/admin/partner/partner/1/change/

Django Version: 2.1.2
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'crispy_forms',
 'jsoneditor',
 'pyuploadcare.dj',
 'core',
 'partner']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template PATH/lib/python3.7/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html, error at line 19
   render() got an unexpected keyword argument 'renderer'
   9 :             {% for field in line %}
   10 :                 <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
   11 :                     {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
   12 :                     {% if field.is_checkbox %}
   13 :                         {{ field.field }}{{ field.label_tag }}
   14 :                     {% else %}
   15 :                         {{ field.label_tag }}
   16 :                         {% if field.is_readonly %}
   17 :                             <div class="readonly">{{ field.contents }}</div>
   18 :                         {% else %}
   19 :                              {{ field.field }} 
   20 :                         {% endif %}
   21 :                     {% endif %}
   22 :                     {% if field.field.help_text %}
   23 :                         <div class="help">{{ field.field.help_text|safe }}</div>
   24 :                     {% endif %}
   25 :                 </div>
   26 :             {% endfor %}
   27 :         </div>
   28 :     {% endfor %}
   29 : </fieldset>


Traceback:

File "PATH/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "PATH/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  156.                 response = self.process_exception_by_middleware(e, request)

File "PATH/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  154.                 response = response.render()

File "PATH/lib/python3.7/site-packages/django/template/response.py" in render
  106.             self.content = self.rendered_content

File "PATH/lib/python3.7/site-packages/django/template/response.py" in rendered_content
  83.         content = template.render(context, self._request)

File "PATH/lib/python3.7/site-packages/django/template/backends/django.py" in render
  61.             return self.template.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  171.                     return self._render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  150.             return compiled_parent._render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  150.             return compiled_parent._render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  62.                 result = block.nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  62.                 result = block.nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  188.             return template.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  173.                 return self._render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/defaulttags.py" in render
  209.                     nodelist.append(node.render_annotated(context))

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/defaulttags.py" in render
  309.                 return nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/defaulttags.py" in render
  309.                 return nodelist.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render
  993.         return render_value_in_context(output, context)

File "PATH/lib/python3.7/site-packages/django/template/base.py" in render_value_in_context
  972.             value = str(value)

File "PATH/lib/python3.7/site-packages/django/utils/html.py" in <lambda>
  397.     klass.__str__ = lambda self: mark_safe(klass_str(self))

File "PATH/lib/python3.7/site-packages/django/forms/boundfield.py" in __str__
  33.         return self.as_widget()

File "PATH/lib/python3.7/site-packages/django/forms/boundfield.py" in as_widget
  93.             renderer=self.form.renderer,

Exception Type: TypeError at /admin/partner/partner/1/change/
Exception Value: render() got an unexpected keyword argument 'renderer'

Can you please check if existing tests fail in your environment: python 3.7 and django 2.1.2?
Thanks!

Is it possible to run the test inside my own virtualenv in current project? or do I need to clone the library and run tox?

Ideally, you have to clone the lib, update tox.ini to include your setup and run tox.
Not sure if there is an easy way to run tests against one of your dependencies in your venv.

try this

pip uninstall pyuploadcare
pip install -e git+https://github.com/uploadcare/pyuploadcare.git#egg=pyuploadcare
cd yourenv/src/pyuploadcare
# maybe
# source yourenv/bin/activate
pip install tox

# update tox.ini to include dj 2.1.2 and py 3.7
tox

I can confirm that current tests catch this error

@viperfx
Please try branch from #143 and tell me if it fixes your issue.

Hi, I also have this issue.

@jamesshaw49 please try to install lib from master branch. It's fixed there.

pip install -e git+https://github.com/uploadcare/pyuploadcare@master#egg=pyuploadcare

We'll release new version soonish.

Fix is released in version 2.6.0