Example #1
0
    def render(self, context):
        # If size is not an int, then it's a Variable, so try to resolve it.
        if not isinstance(self.size, int):
            self.size = int(self.size.resolve(context))

        if not self.size in AVATAR_SIZES:
            return ''

        try:
            user = self.user.resolve(context)
            avatar = Avatar.objects.get(user=user, valid=True).image
            if hasattr(settings, "AWS_SECRET_ACCESS_KEY"):
                avatar_path = avatar.name
            else:
                avatar_path = avatar.path

            if not storage.exists(avatar_path):
                raise
            base, filename = os.path.split(avatar_path)
            name, extension = os.path.splitext(filename)
            filename = os.path.join(base, "%s.%s%s" % (name, self.size, extension))
            url_tuple = urlparse.urlparse(avatar.url)
            url = urlparse.urljoin(urllib.unquote(urlparse.urlunparse(url_tuple)), "%s.%s%s" % (name, self.size, extension))

            if not storage.exists(filename):
                thumb = Image.open(ContentFile(avatar.read()))
                thumb.thumbnail((self.size, self.size), Image.ANTIALIAS)
                f = StringIO()
                thumb.save(f, "JPEG")
                f.seek(0)
                storage.save(filename, ContentFile(f.read()))

        except:
            avatar_path = DEFAULT_AVATAR
            base, filename = os.path.split(avatar_path)
            generic, extension = os.path.splitext(filename)
            filename = os.path.join(base, "%s.%s%s" % (generic, self.size, extension))
            # Fallback to Gravatar if enabled
            if gravatar and user:
                url = gravatar_for_user(user, self.size)
            else:
                url = filename.replace(settings.MEDIA_ROOT, settings.MEDIA_URL)
                url = os.path.normpath(url)

        return url
Example #2
0
def get_user_image(user, size=80):
    url = gravatar_for_user(user, size)
    return '<img src="%s" alt="%s" height="%s" width="%s" />' % (
        url, user.username, size, size)