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
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')
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()
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')
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
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]
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 ]
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)
def gravatar(self, obj): return '<img src="%s" />' % gravatar_for_user(obj)