avatarserver.py 890 B

1234567891011121314151617181920212223242526272829
  1. from django.conf import settings
  2. from django.contrib.auth import get_user_model
  3. from misago.core.fileserver import send_file
  4. from misago.users.avatars import set_default_avatar
  5. def serve_avatar(request, user_id, size):
  6. avatar_file = get_avatar_file(user_id, size)
  7. avatar_path = '%s/%s.png' % (settings.MISAGO_AVATAR_CACHE, avatar_file)
  8. return send_file(avatar_path, 'image/png')
  9. def get_avatar_file(user_id, size):
  10. if not size in settings.MISAGO_AVATARS_SIZES:
  11. for valid_size in sorted(settings.MISAGO_AVATARS_SIZES, reverse=True):
  12. if valid_size > size:
  13. size = valid_size
  14. User = get_user_model()
  15. try:
  16. user = User.objects.get(id=user_id)
  17. file_formats = (user.joined_on.strftime('%y%m'), user.pk, size)
  18. return '%s/%s_%s' % file_formats
  19. except User.DoesNotExist:
  20. return 'guest_%s' % size