From 967f0d0d2a2600f73346593459dba86ac01d2605 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Mon, 3 Aug 2015 20:53:07 +0100 Subject: [PATCH] Made avatar images local again --- spa/management/commands/get_avatars.py | 17 +++++++++++++++-- spa/models/userprofile.py | 14 ++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/spa/management/commands/get_avatars.py b/spa/management/commands/get_avatars.py index eccda8d..66ed4e9 100755 --- a/spa/management/commands/get_avatars.py +++ b/spa/management/commands/get_avatars.py @@ -1,14 +1,26 @@ +import urllib2 + from allauth.socialaccount.models import SocialAccount from azure.storage import BlobService -from django.core.files.base import ContentFile +from django.core.files.base import File +from django.core.files.temp import NamedTemporaryFile from django.core.management.base import NoArgsCommand from requests import request, ConnectionError -from dss import storagesettings +from dss import storagesettings from spa.models.userprofile import UserProfile def save_image(profile, url): + + img = NamedTemporaryFile(delete=True) + img.write(urllib2.urlopen(url).read()) + + img.flush() + profile.avatar_image.save(str(profile.id), File(img)) + + +def save_image_to_azure(profile, url): try: response = request('GET', url) response.raise_for_status() @@ -40,6 +52,7 @@ class Command(NoArgsCommand): if provider_account: avatar_url = provider_account.get_avatar_url() save_image(user, avatar_url) + user.save() except Exception, ex: print ex.message else: diff --git a/spa/models/userprofile.py b/spa/models/userprofile.py index 5898e01..f3f2aa5 100755 --- a/spa/models/userprofile.py +++ b/spa/models/userprofile.py @@ -168,7 +168,6 @@ class UserProfile(BaseModel): return self.display_name or self.first_name + ' ' + self.last_name def get_sized_avatar_image(self, width, height): - return self.get_avatar_image() try: image = self.get_avatar_image() sized = thumbnail.get_thumbnail(image, "%sx%s" % (width, height), crop="center") @@ -179,7 +178,18 @@ class UserProfile(BaseModel): return UserProfile.get_default_avatar_image() def get_avatar_image(self): - return (settings.CDN_URL + 'avatars/{0}').format(self.id) + avatar_type = self.avatar_type + if avatar_type == 'gravatar': + gravatar_exists = has_gravatar(self.email) + if gravatar_exists: + return get_gravatar_url(self.email) + else: + if os.path.exists(self.avatar_image.file.name): + return self.avatar_image + else: + return self.get_default_avatar_image() + + return UserProfile.get_default_avatar_image() def get_profile_url(self): return '/user/%s' % (self.slug)