diff --git a/avatar/forms.py b/avatar/forms.py index d9359ef..3806d40 100644 --- a/avatar/forms.py +++ b/avatar/forms.py @@ -15,12 +15,12 @@ def avatar_img(avatar, size): if not avatar.thumbnail_exists(size): avatar.create_thumbnail(size) return mark_safe('%s' % - (avatar.avatar_url(size), unicode(avatar), size, size)) + (avatar.avatar_url(size), avatar, size, size)) class UploadAvatarForm(forms.Form): - avatar = forms.ImageField(label=_(u"avatar")) + avatar = forms.ImageField(label=_("avatar")) def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') diff --git a/avatar/management/commands/rebuild_avatars.py b/avatar/management/commands/rebuild_avatars.py index 3a17970..0b00835 100644 --- a/avatar/management/commands/rebuild_avatars.py +++ b/avatar/management/commands/rebuild_avatars.py @@ -5,11 +5,11 @@ from avatar.settings import AUTO_GENERATE_AVATAR_SIZES class Command(NoArgsCommand): - help = "Regenerates avatar thumbnails for the sizes specified in " + \ - "settings.AUTO_GENERATE_AVATAR_SIZES." + help = ("Regenerates avatar thumbnails for the sizes specified in " + "settings.AUTO_GENERATE_AVATAR_SIZES.") def handle_noargs(self, **options): for avatar in Avatar.objects.all(): for size in AUTO_GENERATE_AVATAR_SIZES: - print "Rebuilding Avatar id=%s at size %s." % (avatar.id, size) + print("Rebuilding Avatar id=%s at size %s." % (avatar.id, size)) avatar.create_thumbnail(size) diff --git a/avatar/models.py b/avatar/models.py index 17decd4..6be09b1 100644 --- a/avatar/models.py +++ b/avatar/models.py @@ -8,6 +8,7 @@ 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 import six from django.db.models import signals from avatar.util import get_username @@ -86,7 +87,7 @@ class Avatar(models.Model): date_uploaded = models.DateTimeField(default=now) def __unicode__(self): - return _(u'Avatar for %s') % self.user + return _(six.u('Avatar for %s')) % self.user def save(self, *args, **kwargs): avatars = Avatar.objects.filter(user=self.user) diff --git a/avatar/templatetags/avatar_tags.py b/avatar/templatetags/avatar_tags.py index 6ad7584..2e4c79d 100644 --- a/avatar/templatetags/avatar_tags.py +++ b/avatar/templatetags/avatar_tags.py @@ -3,9 +3,10 @@ import urlparse import hashlib from django import template -from django.template.loader import render_to_string -from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse +from django.template.loader import render_to_string +from django.utils import six +from django.utils.translation import ugettext as _ from avatar.settings import (AVATAR_GRAVATAR_BACKUP, AVATAR_GRAVATAR_DEFAULT, AVATAR_DEFAULT_SIZE, AVATAR_GRAVATAR_BASE_URL) @@ -73,7 +74,7 @@ def primary_avatar(user, size=AVATAR_DEFAULT_SIZE): work for us. If that special view is then cached by a CDN for instance, we will avoid many db calls. """ - alt = unicode(user) + alt = six.text_type(user) url = reverse('avatar_render_primary', kwargs={'user': user, 'size': size}) return """%s""" % (url, alt, size, size) @@ -109,6 +110,6 @@ class UsersAvatarObjectNode(template.Node): context[key] = avatar[0] else: context[key] = None - return u"" + return six.text_type() register.tag('primary_avatar_object', primary_avatar_object) diff --git a/avatar/util.py b/avatar/util.py index 73f55a5..eee8e8a 100644 --- a/avatar/util.py +++ b/avatar/util.py @@ -3,6 +3,7 @@ import hashlib from django.conf import settings from django.core.cache import cache from django.utils.encoding import smart_str +from django.utils import six from django.template.defaultfilters import slugify try: @@ -45,9 +46,9 @@ def get_cache_key(user_or_username, size, prefix): """ if isinstance(user_or_username, get_user_model()): user_or_username = get_username(user_or_username) - key = u'%s_%s_%s' % (prefix, user_or_username, size) - return u'%s_%s' % (slugify(key)[:100], - hashlib.md5(smart_str(key)).hexdigest()) + 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()) def cache_result(func): diff --git a/avatar/views.py b/avatar/views.py index a7826c9..fbd096f 100644 --- a/avatar/views.py +++ b/avatar/views.py @@ -1,6 +1,7 @@ from django.core.files.base import ContentFile from django.http import HttpResponse, Http404 from django.shortcuts import get_object_or_404, render, redirect +from django.utils import six from django.utils.translation import ugettext as _ from django.views.decorators.csrf import csrf_exempt @@ -144,10 +145,10 @@ def delete(request, extra_context=None, next_override=None, *args, **kwargs): if request.method == 'POST': if delete_avatar_form.is_valid(): ids = delete_avatar_form.cleaned_data['choices'] - if unicode(avatar.id) in ids and avatars.count() > len(ids): + if six.text_type(avatar.id) in ids and avatars.count() > len(ids): # Find the next best avatar, and set it as the new primary for a in avatars: - if unicode(a.id) not in ids: + if six.text_type(a.id) not in ids: a.primary = True a.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar)