More Python 3 fixes.

This commit is contained in:
Jannis Leidel 2013-08-01 14:32:03 +02:00
parent 05ef51078f
commit 7a32e3bd47
4 changed files with 15 additions and 19 deletions

View file

@ -7,7 +7,7 @@ from django.db import models
from django.core.files.base import ContentFile
from django.core.files.storage import get_storage_class
from django.utils.translation import ugettext as _
from django.utils.encoding import smart_str
from django.utils.encoding import force_bytes
from django.utils import six
from django.db.models import signals
@ -55,7 +55,7 @@ def avatar_file_path(instance=None, filename=None, size=None, ext=None):
# File doesn't exist yet
if AVATAR_HASH_FILENAMES:
(root, ext) = os.path.splitext(filename)
filename = hashlib.md5(smart_str(filename)).hexdigest()
filename = hashlib.md5(force_bytes(filename)).hexdigest()
filename = filename + ext
if size:
tmppath.extend(['resized', str(size)])
@ -106,18 +106,18 @@ class Avatar(models.Model):
orig = self.avatar.storage.open(self.avatar.name, 'rb')
image = Image.open(orig)
quality = quality or AVATAR_THUMB_QUALITY
(w, h) = image.size
w, h = image.size
if w != size or h != size:
if w > h:
diff = (w - h) / 2
diff = int((w - h) / 2)
image = image.crop((diff, 0, w - diff, h))
else:
diff = (h - w) / 2
diff = int((h - w) / 2)
image = image.crop((0, diff, w, h - diff))
if image.mode != "RGB":
image = image.convert("RGB")
image = image.resize((int(size), int(size)), AVATAR_RESIZE_METHOD)
thumb = six.StringIO()
image = image.resize((size, size), AVATAR_RESIZE_METHOD)
thumb = six.BytesIO()
image.save(thumb, AVATAR_THUMB_FORMAT, quality=quality)
thumb_file = ContentFile(thumb.getvalue())
else:

View file

@ -1,10 +1,5 @@
from django.conf import settings
try:
from PIL import Image
dir(Image) # Placate PyFlakes
except ImportError:
import Image
from PIL import Image
AVATAR_DEFAULT_SIZE = getattr(settings, 'AVATAR_DEFAULT_SIZE', 80)
AUTO_GENERATE_AVATAR_SIZES = getattr(settings, 'AUTO_GENERATE_AVATAR_SIZES', (AVATAR_DEFAULT_SIZE,))

View file

@ -1,15 +1,16 @@
import urllib
import hashlib
try:
from urllib.parse import urljoin
from urllib.parse import urljoin, urlencode
except ImportError:
from urlparse import urljoin
from urllib import urlencode
from django import template
from django.core.urlresolvers import reverse
from django.template.loader import render_to_string
from django.utils import six
from django.utils.encoding import force_bytes
from django.utils.translation import ugettext as _
from avatar.settings import (AVATAR_GRAVATAR_BACKUP, AVATAR_GRAVATAR_DEFAULT,
@ -32,8 +33,8 @@ def avatar_url(user, size=AVATAR_DEFAULT_SIZE):
params = {'s': str(size)}
if AVATAR_GRAVATAR_DEFAULT:
params['d'] = AVATAR_GRAVATAR_DEFAULT
path = "%s/?%s" % (hashlib.md5(user.email).hexdigest(),
urllib.urlencode(params))
path = "%s/?%s" % (hashlib.md5(force_bytes(user.email)).hexdigest(),
urlencode(params))
return urljoin(AVATAR_GRAVATAR_BASE_URL, path)
return get_default_avatar_url()

View file

@ -2,7 +2,7 @@ import hashlib
from django.conf import settings
from django.core.cache import cache
from django.utils.encoding import smart_str
from django.utils.encoding import force_bytes
from django.utils import six
from django.template.defaultfilters import slugify
@ -48,7 +48,7 @@ def get_cache_key(user_or_username, size, prefix):
user_or_username = get_username(user_or_username)
key = six.u('%s_%s_%s') % (prefix, user_or_username, size)
return six.u('%s_%s') % (slugify(key)[:100],
hashlib.md5(smart_str(key)).hexdigest())
hashlib.md5(force_bytes(key)).hexdigest())
def cache_result(func):