What version of Djblets are you using?
1.0.2 (RB 3.0.2)
Which module(s) have the problem?
AvatarService
What steps will reproduce the problem?
- Enable my CustomAvatarService (https://github.com/misery/CustomUrlAvatar - without last commit)
- Go to http://localhost/dashboard/?view=outgoing
- Mouse hover over an entry of owner/submitter column
- RB prints following stacktrace
What is the expected output? What do you see instead?
Expected:
Show the avatar or let reviewboard print missing REQUIRED methods immediately instead of "stacktrace on random sites".https://www.reviewboard.org/docs/djblets/1.0/coderef/python/djblets.avatars.services.base/
A service that provides avatar support.
At the very least, subclasses must set the avatar_service_id and name attributes, as well as override the get_avatar_urls() method.
"get_etag_data" should be mentioned if required.
What version of Python and Django?
python 2.7.14
django 1.6.11.6Please provide any additional information below.
2018-01-18 14:00:20,421 - ERROR - None - admin - /users/admin/infobox/ - djblets.log.middleware - Exception thrown for user admin at http://localhost/users/admin/infobox/
CustomAvatarService must implement get_etag_data
Traceback (most recent call last):
File "/var/www/dist/lib/python2.7/site-packages/django/core/handlers/base.py", line 112, in get_response
response = wrapped_callback(request, callback_args, callback_kwargs)
File "/var/www/dist/lib/python2.7/site-packages/django/views/generic/base.py", line 69, in view
return self.dispatch(request, *args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/django/utils/decorators.py", line 29, in _wrapper
return bound_func(args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/reviewboard/accounts/decorators.py", line 25, in _check
return view_func(*args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in bound_func
return func(self, args2, kwargs2)
File "/var/www/dist/lib/python2.7/site-packages/reviewboard/accounts/mixins.py", line 38, in dispatch
*args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/django/utils/decorators.py", line 29, in _wrapper
return bound_func(args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/reviewboard/site/decorators.py", line 36, in _check
return view_func(request, local_site=local_site, *args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in bound_func
return func(self, args2, kwargs2)
File "/var/www/dist/lib/python2.7/site-packages/reviewboard/site/mixins.py", line 53, in dispatch
request, *args, kwargs)
File "/var/www/dist/lib/python2.7/site-packages/djblets/views/generic/etag.py", line 41, in dispatch
etag = self.get_etag_data(request, args, **kwargs)
File "/var/www/dist/lib/python2.7/site-packages/reviewboard/accounts/views.py", line 121, in get_etag_data
etag_data.extend(avatar_service.get_etag_data(user))
File "/var/www/dist/lib/python2.7/site-packages/djblets/avatars/services/base.py", line 234, in get_etag_data
'%s must implement get_etag_data' % type(self).name
NotImplementedError: CustomAvatarService must implement get_etag_data