Beispiel #1
0
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'))
Beispiel #2
0
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'))
Beispiel #3
0
 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')
Beispiel #4
0
 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')
Beispiel #5
0
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'授权失败,请重试')
Beispiel #6
0
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'授权失败,请重试')