Ejemplo n.º 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 self.size not in AVATAR_SIZES:
            return ''

        user = self.user.resolve(context)
        try:
            avatar = Avatar.objects.get(user=user, valid=True)
            avatar_path = avatar.image.path
        except ObjectDoesNotExist:
            if settings.GRAVATAR:
                if gravatar.has_gravatar(user):
                    return gravatar.gravatar_for_user(user=user,
                                                      size=self.size)
            else:
                avatar_path = DEFAULT_AVATAR

        path, filename = os.path.split(avatar_path)
        name, extension = os.path.splitext(filename)
        filename = os.path.join(path, "%s.%s%s" % (name, self.size, extension))
        if not os.path.isfile(filename):
            image = Image.open(avatar_path)
            image.thumbnail((self.size, self.size), Image.ANTIALIAS)
            image.save(filename, "JPEG")

        url = filename.replace(settings.MEDIA_ROOT, settings.MEDIA_URL)
        return url
Ejemplo n.º 2
0
def account__login(request):
    ret = {}
    if request.method != 'POST':
        set_errors(ret, u'6001')
        return _render_json_repsonse(ret)

    try:
        form = LoginForm(request.POST)
        if not form.is_valid():
            set_errors(ret, u'6002', form.errors)
            return _render_json_repsonse(ret)

        cd = form.cleaned_data
        user = User.objects.get(username=cd['username'])
        user.last_login = timezone.now()
        user.save(update_fields=['last_login'])
        client = Client.objects.get(key=cd['apikey'])
        for t in AccessToken.objects.filter(client=client, user=user):
            t.delete()
        token = AccessToken(client=client, user=user)
        token.save()
        ret['token'] = token.token
        ret['refresh_token'] = token.refresh_token
        ret['expire'] = token.expire
        ret['refreshable'] = token.refreshable
        ret['uid'] = user.id
        ret['username'] = user.username
        ret['avatar'] = gravatar_for_user(user)
        ret['email'] = user.get_verified_email()
    except Exception, e:
        logger.exception(str(sys._getframe().f_code.co_name))
        set_errors(ret, u'6003')
Ejemplo n.º 3
0
def _set_token(user, client, ret):
    for t in AccessToken.objects.filter(client=client, user=user):
        t.delete()
    token = AccessToken(client=client, user=user)
    token.save()
    ret['token'] = token.token
    ret['refresh_token'] = token.refresh_token
    ret['expire'] = token.expire
    ret['refreshable'] = token.refreshable
    ret['uid'] = user.id
    ret['username'] = user.username
    ret['avatar'] = gravatar_for_user(user)
    ret['email'] = user.get_verified_email()
Ejemplo n.º 4
0
def account__login_by_weibo(request):
    ret = {}
    if request.method != 'POST':
        set_errors(ret, u'6001')
        return _render_json_repsonse(ret)

    try:
        uid = request.POST.get('uid')
        screen_name = request.POST.get('screen_name')
        profile_image_url = request.POST.get('profile_image_url')
        access_token = request.POST.get('access_token')
        expires_in = int(request.POST.get('expires_in'))
        apikey = request.POST.get('apikey')

        wu, create = WeiboUser.objects.get_or_create(uid=uid,
                                                     defaults={
                                                         'token': access_token,
                                                         'expires_in':
                                                         expires_in
                                                     })
        wu.update(screen_name, profile_image_url, access_token, expires_in)
        wu.save()

        if wu.user is None:
            user, create = User.objects.get_or_create(username=uid)
            if create:
                user.first_name = screen_name
                user.set_unusable_password()
                user.save()
            wu.user = user
            wu.save()

        user = wu.user
        user.last_login = timezone.now()
        user.save(update_fields=['last_login'])
        client = Client.objects.get(key=apikey)
        for t in AccessToken.objects.filter(client=client, user=user):
            t.delete()
        token = AccessToken(client=client, user=user)
        token.save()
        ret['token'] = token.token
        ret['refresh_token'] = token.refresh_token
        ret['expire'] = token.expire
        ret['refreshable'] = token.refreshable
        ret['uid'] = user.id
        ret['username'] = user.username
        ret['avatar'] = gravatar_for_user(user)
        ret['email'] = user.get_verified_email()
    except Exception, e:
        logger.exception(str(sys._getframe().f_code.co_name))
        set_errors(ret, u'6003')
Ejemplo n.º 5
0
def post_score(post_id):
    scores = Score.objects.select_related().filter(
        post__id=post_id).order_by('id')
    msg = ''
    if scores:
        msg = u'<div id="scores_list"><span class="score-num">%sP</span>' % scores.count(
        )
        for i, score in enumerate(scores):
            user = score.score_by
            msg += '<div class="score-img" title="第%d位 %s %sPP">%s</div>' % (
                i + 1, user.username, score.pp, gravatar_for_user(user,
                                                                  size=36))
        msg += '</div>'
    return msg
Ejemplo n.º 6
0
    def get_queryset(self):
        keyword = self.request.GET.get("term")
        excludes = self.request.GET.get("excludes", "").split(",")

        if self.request.user.is_authenticated():
            excludes.append(self.request.user.id)

        users = User.objects.filter(
            Q(username__icontains=keyword) |
            Q(email__icontains=keyword) |
            Q(first_name=keyword) | Q(last_name=keyword)
        ).exclude(id__in=filter(bool, excludes))

        return [dict(id=user.id,
                     label=user.username,
                     avatar=gravatar_for_user(user, size=40)) for user in users]
Ejemplo n.º 7
0
    def get_queryset(self):
        keyword = self.request.GET.get("term")
        excludes = self.request.GET.get("excludes", "").split(",")

        if self.request.user.is_authenticated():
            excludes.append(self.request.user.id)

        users = User.objects.filter(
            Q(username__icontains=keyword) | Q(email__icontains=keyword)
            | Q(first_name=keyword)
            | Q(last_name=keyword)).exclude(id__in=filter(bool, excludes))

        return [
            dict(id=user.id,
                 label=user.username,
                 avatar=gravatar_for_user(user, size=40)) for user in users
        ]
Ejemplo n.º 8
0
def record_object(engine, obj, key, value, ctype=None):
    if ctype is None:
        ctype = ContentType.objects.get_for_model(obj)
    obj_id = obj.__getattribute__(value["pk"])
    title = obj.__getattribute__(value["title_field"])
    text = obj.__getattribute__(value["text_field"])
    if not title:
        return
    title = unicodedata.normalize("NFKD", title).encode("utf-8", "ignore")
    text = unicodedata.normalize("NFKD", text).encode("utf-8", "ignore")
    data = {"class": key, "title": title, "text": text}
    for field in value["recorded_fields"]:
        attr = obj.__getattribute__(field)
        unicode_attr = unicode(attr) if attr is not None else u""
        data.update({field: unicode_attr})
    for field_name, fkey_field in value.get("fkey_fields", {}).items():
        attr = get_fkey_attr(obj, fkey_field)
        unicode_attr = unicode(attr) if attr is not None else u""
        data.update({field_name: unicode_attr})
    for field in value.get("extra_fields", []):
        if field == "gravatar_url":
            data.update({field: unicode(gravatar_for_user(obj.user, 40))})

    engine.store_json(obj_id, title, data, ctype.id)
Ejemplo n.º 9
0
 def gravatar(self, obj):
     return '<img src="%s" />' % gravatar_for_user(obj)
Ejemplo n.º 10
0
 def gravatar(self, obj):
     return '<img src="%s" />' % gravatar_for_user(obj)