Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #5
0
 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()
Beispiel #6
0
 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()
Beispiel #7
0
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())
Beispiel #8
0
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(),
    })
Beispiel #9
0
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(),
    })
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #15
0
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,
        })
Beispiel #16
0
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,
    })
Beispiel #17
0
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
Beispiel #18
0
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)
Beispiel #19
0
def has_avatar(user):
    if not isinstance(user, get_user_model()):
        return False
    return Avatar.objects.filter(user=user, primary=True).exists()
Beispiel #20
0
def has_avatar(user):
    if not isinstance(user, get_user_model()):
        return False
    return Avatar.objects.filter(user=user, primary=True).exists()
Beispiel #21
0
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)