4665: size is not int in get_avatar_urls

Misery

What version are you running?

3.0.3

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

Any with an avatar

What steps will reproduce the problem?

  1. Use a high-res screen
  2. Click a reviewboard site with an avatar
  3. See that it generates multiple imgset entries for 1x, 2x, 3x
  4. See that it generate "484848" for size parameter for custom avatar service or gravatar
  5. See that it make "size * resolution" for STRINGS instead of int.

What is the expected output? What do you see instead?

Calls to get_avatar_urls should be int. The following stacktrace if used to show the origin of provided size as STRING.

What operating system are you using? What browser?

macOS 10.13, Safari

Please provide any additional information below.

Traceback (most recent call last):
File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/reviews/detail.py", line 954, in render_to_string
return render_to_string(self.template_name, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/loader.py", line 164, in render_to_string
return t.render(Context(dictionary))
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 140, in render
return self._render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 854, in render_node
return node.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/loader_tags.py", line 123, in render
return compiled_parent._render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 134, in _render
return self.nodelist.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 854, in render_node
return node.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/defaulttags.py", line 305, in render
return nodelist.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 854, in render_node
return node.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/defaulttags.py", line 305, in render
return nodelist.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 854, in render_node
return node.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 854, in render_node
return node.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/defaulttags.py", line 305, in render
return nodelist.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 840, in render
bit = self.render_node(node, context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 854, in render_node
return node.render(context)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/django/template/base.py", line 1125, in render
return func(resolved_args, *resolved_kwargs)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/reviewboard/avatars/templatetags/avatars.py", line 51, in avatar
return service.render(request=context['request'], user=user, size=size)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/djblets/avatars/services/base.py", line 198, in render
'urls': self.get_avatar_urls(request, user, size),
File "/opt/reviewboard/dist/lib/python2.7/site-packages/custom_url_avatar/extension.py", line 43, in get_avatar_urls
return self.get_avatar_urls_uncached(user, size)
File "/opt/reviewboard/dist/lib/python2.7/site-packages/custom_url_avatar/extension.py", line 47, in get_avatar_urls_uncached
raise Exception('size parameter is not int')

chipx86
#1 chipx86

I'm a bit confused about this. This looks to be an issue in an extension, and not in Review Board. Is custom_url_avatar yours?

  • -New
    +NeedInfo
brennie
#2 brennie

We are not passing size as a string anywhere to any of the avatar templatetags in Review Board:

$ git grep '{% avatar' reviewboard/templates/
reviewboard/templates/accounts/user_infobox.html:7:  <div class="infobox-pic" class="logo">{% avatar infobox_user 128 %}</div>
reviewboard/templates/base.html:122:            32: {% avatar_urls request.user 32 %}
reviewboard/templates/base/_mobile_navbar.html:6: {% avatar user 32 %}
reviewboard/templates/base/_nav_support_menu.html:18:  {% avatar user 32 %}
reviewboard/templates/datagrids/sidebar_user_info.html:6:  {% avatar profile_user 175 %}
reviewboard/templates/reviews/review_issue_summary_table.html:66:       {% avatar comment.review_obj.user 24 %}
reviewboard/templates/reviews/review_reply.html:10:    {% avatar reply_user 32 %}
reviewboard/templates/reviews/review_request_infobox.html:21:   <div class="infobox-pic">{% avatar review_request_details.submitter 24 %}</div>
reviewboard/templates/search/_user.html:6: {% avatar result.user 48 %}
Misery
#3 Misery

Yeah, custom_url_avatar is my "pip install rbCustomUrlAvatar" extension.
I fixed it in my extension with that: https://github.com/misery/CustomUrlAvatar/commit/e3d5d1f8c3b34ffe72aad0a285a1067b5a669c24

Maybe you need to fix it in your gravatar extension, too.

david
#4 david
  • -NeedInfo
    +Fixed