def render_primary(request, user=None, size=settings.AVATAR_DEFAULT_SIZE): size = int(size) if not isinstance(user, get_user_model()): try: user = get_user(user) except get_user_model().DoesNotExist: return None url = get_primary_avatar_url(user, size=size) return redirect(url)
def avatar(user, size=AVATAR_DEFAULT_SIZE, **kwargs): if not isinstance(user, get_user_model()): try: user = get_user(user) alt = six.text_type(user) url = avatar_url(user, size) except get_user_model().DoesNotExist: url = get_default_avatar_url() alt = _("Default Avatar") else: alt = six.text_type(user) url = avatar_url(user, size) context = dict(kwargs, **{"user": user, "url": url, "alt": alt, "size": size}) return render_to_string("avatar/avatar_tag.html", context)
def avatar(user, width=settings.AVATAR_DEFAULT_SIZE, height=False, **kwargs): if not height: height = width if not isinstance(user, get_user_model()): try: user = get_user(user) alt = six.text_type(user) url = avatar_url(user, width, height) except get_user_model().DoesNotExist: url = get_default_avatar_url() alt = _("Default Avatar") else: alt = six.text_type(user) url = avatar_url(user, width, height) context = dict(kwargs, **{"user": user, "url": url, "alt": alt, "width": width, "height": height}) return render_to_string("avatar/avatar_tag.html", context)
def setUp(self): self.testdatapath = os.path.join(os.path.dirname(__file__), "data") self.user = get_user_model().objects.create_user('test', '*****@*****.**', 'testpassword') self.user.save() self.client.login(username='******', password='******') self.site = AdminSite() Image.init()
def setUp(self): self.testdatapath = os.path.join(os.path.dirname(__file__), "data") self.user = get_user_model().objects.create_user( 'test', '*****@*****.**', 'testpassword') self.user.save() self.client.login(username='******', password='******') Image.init()
def get_cache_key(user_or_username, size, prefix): """ Returns a cache key consisten of a username and image size. """ if isinstance(user_or_username, get_user_model()): 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(force_bytes(key)).hexdigest())
def avatar_gallery(request, username, template_name="avatar/gallery.html"): try: user = get_user(username) except get_user_model().DoesNotExist: raise Http404 return render(request, template_name, { "other_user": user, "avatars": user.avatar_set.all(), })
def avatar(user, size=AVATAR_DEFAULT_SIZE, **kwargs): if not isinstance(user, get_user_model()): try: user = get_user(user) alt = six.text_type(user) url = avatar_url(user, size) except get_user_model().DoesNotExist: url = get_default_avatar_url() alt = _("Default Avatar") else: alt = six.text_type(user) url = avatar_url(user, size) context = dict(kwargs, **{ 'user': user, 'url': url, 'alt': alt, 'size': size, }) return render_to_string('avatar/avatar_tag.html', context)
def user_avatar(user, size=avatar_settings.AVATAR_DEFAULT_SIZE, **kwargs): if not isinstance(user, get_user_model()): try: user = get_user(user) alt = six.text_type(user) url = avatar_url(user, size) except get_user_model().DoesNotExist: url = get_default_avatar_url() alt = _("Default Avatar") else: alt = six.text_type(user) url = avatar_url(user, size) context = dict(kwargs, **{ 'user': user, 'url': url, 'alt': alt, 'size': size, }) ret = jinja_env.get_template('avatar/avatar_tag.html').render(**context) return jinja2.Markup(ret)
def avatar(user, width=settings.AVATAR_DEFAULT_SIZE, height = False, **kwargs): if height == False: height = width if not isinstance(user, get_user_model()): try: user = get_user(user) alt = six.text_type(user) url = avatar_url(user, width, height) except get_user_model().DoesNotExist: url = get_default_avatar_url() alt = _("Default Avatar") else: alt = six.text_type(user) url = avatar_url(user, width, height) context = dict(kwargs, **{ 'user': user, 'url': url, 'alt': alt, 'width': width, 'height': height }) return render_to_string('avatar/avatar_tag.html', context)
class AvatarAdmin(admin.ModelAdmin): list_display = ('get_avatar', 'user', 'primary', "date_uploaded") list_filter = ('primary',) search_fields = ('user__%s' % getattr(get_user_model(), 'USERNAME_FIELD', 'username'),) list_per_page = 50 def get_avatar(self, avatar_in): return avatar(avatar_in.user, 80) get_avatar.short_description = _('Avatar') get_avatar.allow_tags = True def save_model(self, request, obj, form, change): super(AvatarAdmin, self).save_model(request, obj, form, change) avatar_updated.send(sender=Avatar, user=request.user, avatar=obj)
def avatar(request, username, id, template_name="avatar/avatar.html"): try: user = get_user(username) except get_user_model().DoesNotExist: raise Http404 avatars = user.avatar_set.order_by("-date_uploaded") index = None avatar = None if avatars: avatar = avatars.get(pk=id) if not avatar: return Http404 index = avatars.filter(date_uploaded__gt=avatar.date_uploaded).count() count = avatars.count() if index == 0: prev = avatars.reverse()[0] if count <= 1: next = avatars[0] else: next = avatars[1] else: prev = avatars[index - 1] if (index + 1) >= count: next = avatars[0] prev_index = index - 1 if prev_index < 0: prev_index = 0 prev = avatars[prev_index] else: next = avatars[index + 1] return render( request, template_name, { "other_user": user, "avatar": avatar, "index": index + 1, "avatars": avatars, "next": next, "prev": prev, "count": count, })
def avatar(request, username, id, template_name="avatar/avatar.html"): try: user = get_user(username) except get_user_model().DoesNotExist: raise Http404 avatars = user.avatar_set.order_by("-date_uploaded") index = None avatar = None if avatars: avatar = avatars.get(pk=id) if not avatar: return Http404 index = avatars.filter(date_uploaded__gt=avatar.date_uploaded).count() count = avatars.count() if index == 0: prev = avatars.reverse()[0] if count <= 1: next = avatars[0] else: next = avatars[1] else: prev = avatars[index - 1] if (index + 1) >= count: next = avatars[0] prev_index = index - 1 if prev_index < 0: prev_index = 0 prev = avatars[prev_index] else: next = avatars[index + 1] return render(request, template_name, { "other_user": user, "avatar": avatar, "index": index + 1, "avatars": avatars, "next": next, "prev": prev, "count": count, })
def get_primary_avatar(user, size=settings.AVATAR_DEFAULT_SIZE): User = get_user_model() if not isinstance(user, User): try: user = get_user(user) except User.DoesNotExist: return None try: # Order by -primary first; this means if a primary=True avatar exists # it will be first, and then ordered by date uploaded, otherwise a # primary=False avatar will be first. Exactly the fallback behavior we # want. avatar = user.avatar_set.order_by("-primary", "-date_uploaded")[0] except IndexError: avatar = None if avatar: if not avatar.thumbnail_exists(size): avatar.create_thumbnail(size) return avatar
class AvatarAdmin(admin.ModelAdmin): list_display = ('get_avatar', 'user', 'primary', "date_uploaded") list_filter = ('primary', ) search_fields = ('user__%s' % getattr(get_user_model(), 'USERNAME_FIELD', 'username'), ) list_per_page = 50 def get_avatar(self, avatar_in): context = dict({ 'user': avatar_in.user, 'url': avatar_in.avatar.url, 'alt': six.text_type(avatar_in.user), 'size': 80, }) return render_to_string('avatar/avatar_tag.html', context) get_avatar.short_description = _('Avatar') get_avatar.allow_tags = True def save_model(self, request, obj, form, change): super(AvatarAdmin, self).save_model(request, obj, form, change) avatar_updated.send(sender=Avatar, user=request.user, avatar=obj)
def has_avatar(user): if not isinstance(user, get_user_model()): return False return Avatar.objects.filter(user=user, primary=True).exists()
def get_user(username): """ Return user from a username/ish identifier """ if custom_user_model: return get_user_model().objects.get_by_natural_key(username) else: return get_user_model().objects.get(username=username)