Rafał Pitoń 11 лет назад
Родитель
Сommit
545a346c1d
2 измененных файлов с 32 добавлено и 2 удалено
  1. 3 2
      misago/users/templatetags/misago_avatars.py
  2. 29 0
      misago/users/views/avatarserver.py

+ 3 - 2
misago/users/templatetags/misago_avatars.py

@@ -1,6 +1,7 @@
 import hashlib
 
 from django import template
+from django.core.urlresolvers import reverse
 
 
 register = template.Library()
@@ -8,5 +9,5 @@ register = template.Library()
 
 @register.filter(name='avatar')
 def avatar(user, size=200):
-    gravatar_hex = hashlib.md5(user.email).hexdigest()
-    return '//www.gravatar.com/avatar/%s?s=%s' % (gravatar_hex, size)
+    return reverse('misago:user_avatar',
+                   kwargs={'user_id': user.pk, 'size': size})

+ 29 - 0
misago/users/views/avatarserver.py

@@ -0,0 +1,29 @@
+from django.conf import settings
+from django.contrib.auth import get_user_model
+
+from misago.core.fileserver import send_file
+
+from misago.users.avatars import set_default_avatar
+
+
+def serve_avatar(request, user_id, size):
+    avatar_file = get_avatar_file(user_id, size)
+    avatar_path = '%s/%s.png' % (settings.MISAGO_AVATAR_CACHE, avatar_file)
+
+    return send_file(avatar_path, 'image/png')
+
+
+def get_avatar_file(user_id, size):
+    if not size in settings.MISAGO_AVATARS_SIZES:
+        for valid_size in sorted(settings.MISAGO_AVATARS_SIZES, reverse=True):
+            if valid_size > size:
+                size = valid_size
+
+    User = get_user_model()
+    try:
+        user = User.objects.get(id=user_id)
+        file_formats = (user.joined_on.strftime('%y%m'), user.pk, size)
+        return '%s/%s_%s' % file_formats
+    except User.DoesNotExist:
+        return 'guest_%s' % size
+