123456789101112131415161718192021222324252627282930313233 |
- from StringIO import StringIO
- from PIL import Image
- import requests
- from misago.conf import settings
- from misago.users.avatars import cache
- GRAVATAR_URL = 'http://www.gravatar.com/avatar/%s?s=%s&d=404'
- class GravatarError(RuntimeError):
- pass
- class NoGravatarAvailable(RuntimeError):
- pass
- def set_avatar(user):
- url_formats = (user.email_hash, max(settings.MISAGO_AVATARS_SIZES))
- try:
- r = requests.get(GRAVATAR_URL % url_formats, timeout=5)
- if r.status_code != 200:
- raise NoGravatarAvailable(
- 'gravatar is not available for this e-mail')
- image = Image.open(StringIO(r.content))
- cache.store_new_avatar(user, image)
- except requests.exceptions.RequestException:
- raise GravatarError('failed to connect to gravatar servers')
|