def user_avatar(request): u = request.user if request.method == 'GET': return render_to_response('account/user-avatar.html', { 'request': request, 'title': _('avatar setting'), 'conf': conf }, context_instance=RequestContext(request)) else: #use_gravatar = request.POST.getlist('gravatar') == ['true'] #request.user.profile.use_gravatar = use_gravatar f = request.FILES.get('file', None) print(f) if f: extension = os.path.splitext(f.name)[-1] if f.size > 524288: return error(request, _('file too big')) if (extension not in ['.jpg', '.png', '.gif' ]) or ('image' not in f.content_type): return error(request, _('file type not permitted')) im = Image.open(f) im.thumbnail((120, 120)) name = storage.get_available_name(str(u.id)) + '.png' #print(storage.url(name)) url = storage.url(name) #u.profile.avatar_url = url #request.profile.avatar_url = url #request.user.profile.avatar_url = url p = profile() if not profile.objects.filter(user_id=u.id).exists(): p.user = u p.avatar_url = url im.save('%s/%s' % (storage.location, name), 'PNG') #u.profile.save() else: p = profile.objects.get(user_id=u.id) p.avatar_url = url im.save('%s/%s' % (storage.location, name), 'PNG') p.save() return HttpResponseRedirect(reverse('user_avatar'))
def user_avatar(request): u = request.user if request.method == 'GET': return render_to_response('account/user-avatar.html', {'request': request, 'title': _('avatar setting'), 'conf': conf}, context_instance=RequestContext(request)) else: #use_gravatar = request.POST.getlist('gravatar') == ['true'] #request.user.profile.use_gravatar = use_gravatar f = request.FILES.get('file', None) print(f) if f: extension = os.path.splitext(f.name)[-1] if f.size > 524288: return error(request, _('file too big')) if (extension not in ['.jpg', '.png', '.gif']) or ('image' not in f.content_type): return error(request, _('file type not permitted')) im = Image.open(f) im.thumbnail((120, 120)) name = storage.get_available_name(str(u.id)) + '.png' #print(storage.url(name)) url = storage.url(name) #u.profile.avatar_url = url #request.profile.avatar_url = url #request.user.profile.avatar_url = url p = profile() if not profile.objects.filter(user_id=u.id).exists(): p.user = u p.avatar_url = url im.save('%s/%s' % (storage.location, name), 'PNG') #u.profile.save() else: p = profile.objects.get(user_id=u.id) p.avatar_url = url im.save('%s/%s' % (storage.location, name), 'PNG') p.save() return HttpResponseRedirect(reverse('user_avatar'))
def process_request(self, request): if (site_off) and (request.path != reverse('signin')) and ( not request.user.is_superuser): return error(request, 'down for maintenace')
def process_request(self, request): if (site_off) and (request.path != reverse('signin')) and (not request.user.is_superuser): return error(request, 'down for maintenace')
def qq_oauth(request): if request.method == 'GET': if (not request.GET['code']) or (request.GET['state'] != 'fairybbs'): return error(request, '请求错误') code = request.GET['code'] url = 'https://graph.qq.com/oauth2.0/token' data = { 'grant_type': 'authorization_code', 'client_id': '', 'client_secret': '', 'code': code, 'redirect_uri': '' } req = urllib2.Request(url, urllib.urlencode(data)) res = urllib2.urlopen(req) try: access_token = re.findall(r'access_token=(.*?)&', res.read())[0] except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试\n') url_openid = 'https://graph.qq.com/oauth2.0/me' data_openid = {'access_token': access_token} req_openid = urllib2.Request(url_openid, urllib.urlencode(data_openid)) res_openid = urllib2.urlopen(req_openid) try: JSON_openid = json.loads(res_openid.read()[10:-3]) except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试') openid = JSON_openid['openid'] try: u = social.objects.get(openid=openid).user except: url_info = 'https://graph.qq.com/user/get_user_info' data_info = { 'oauth_consumer_key': '', 'access_token': access_token, 'openid': openid } req_info = urllib2.Request(url_info, urllib.urlencode(data_info)) res_info = urllib2.urlopen(req_info) JSON_info = json.loads(res_info.read()) username = JSON_info['nickname'] nickname = username if JSON_info['figureurl_qq_2']: avatar = JSON_info['figureurl_qq_2'] else: avatar = JSON_info['figureurl_2'] password = User.objects.make_random_password() try: u = User.objects.get(username=username) except: pass else: username = GenerateUsername(nickname) u = User(username=username) u.set_password(password) u.save() p = profile( user=u, #avatar=avatar, nickname=nickname, avatar_url=avatar, use_gravatar=False) p.save() s = social( user=u, access_token=access_token, openid=openid, avatar=avatar, ) s.save() user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: auth.login(request, user) return HttpResponseRedirect(reverse('index')) #login succeed else: u.social.access_token = access_token u.social.save() u.backend = 'django.contrib.auth.backends.ModelBackend' if u is not None and u.is_active: auth.login(request, u) return HttpResponseRedirect(reverse('index')) #login succeed else: return error(request, u'授权失败,请重试')
def qq_oauth(request): if request.method == 'GET': if (not request.GET['code']) or (request.GET['state'] != 'fairybbs'): return error(request, '请求错误') code = request.GET['code'] url = 'https://graph.qq.com/oauth2.0/token' data = {'grant_type': 'authorization_code', 'client_id': '', 'client_secret': '', 'code': code, 'redirect_uri': ''} req = urllib2.Request(url, urllib.urlencode(data)) res = urllib2.urlopen(req) try: access_token = re.findall(r'access_token=(.*?)&', res.read())[0] except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试\n') url_openid = 'https://graph.qq.com/oauth2.0/me' data_openid = {'access_token': access_token} req_openid = urllib2.Request(url_openid, urllib.urlencode(data_openid)) res_openid = urllib2.urlopen(req_openid) try: JSON_openid = json.loads(res_openid.read()[10:-3]) except: return error(request, u'抱歉,未从腾讯获取到有效的授权信息,可能是和腾讯通信失败,请重试') openid = JSON_openid['openid'] try: u = social.objects.get(openid=openid).user except: url_info = 'https://graph.qq.com/user/get_user_info' data_info = {'oauth_consumer_key': '', 'access_token': access_token, 'openid': openid} req_info = urllib2.Request(url_info, urllib.urlencode(data_info)) res_info = urllib2.urlopen(req_info) JSON_info = json.loads(res_info.read()) username = JSON_info['nickname'] nickname = username if JSON_info['figureurl_qq_2']: avatar = JSON_info['figureurl_qq_2'] else: avatar = JSON_info['figureurl_2'] password = User.objects.make_random_password() try: u = User.objects.get(username=username) except: pass else: username = GenerateUsername(nickname) u = User(username=username) u.set_password(password) u.save() p = profile(user=u, #avatar=avatar, nickname=nickname, avatar_url=avatar, use_gravatar=False) p.save() s = social(user=u, access_token=access_token, openid=openid, avatar=avatar, ) s.save() user = auth.authenticate(username=username, password=password) if user is not None and user.is_active: auth.login(request, user) return HttpResponseRedirect(reverse('index')) #login succeed else: u.social.access_token = access_token u.social.save() u.backend = 'django.contrib.auth.backends.ModelBackend' if u is not None and u.is_active: auth.login(request, u) return HttpResponseRedirect(reverse('index')) #login succeed else: return error(request, u'授权失败,请重试')