Ejemplo n.º 1
0
 def process_request(self, request):
     if request.path in self.white_list:
         return None
     uid = request.session.get('uid')
     if not uid:
         return render_json(None, error.USER_NOT_LOGIN)
     try:
         user = User.objects.get(pk=uid)
     except User.DoesNotExist as e:
         return render_json(None, error.USER_DOES_NOT_EXIST)
     request.user = user
     return None
Ejemplo n.º 2
0
def upload_avatar(request):
    '''头像上传'''
    # 1. 接收用户上传的头像
    # 2. 定义用户头像名称
    # 3. 异步将头像上传七牛
    # 4. 将 URL 保存入数据库

    file = request.FILES.get('avatar')
    if file:
        save_upload_file(request.user, file)
        return render_json(None)
    else:
        return render_json(None, error.FILE_NOT_FOUND)
Ejemplo n.º 3
0
def superlike(request):
    user = request.user
    # 在swipe中创建一条记录.
    sid = request.POST.get('sid')

    # 超级喜欢加7分
    key = keys.HOT_RANK_KEY % sid
    rds.zincrby(config.RANK_KEY, config.SUPERLIKE_SCORE, key)

    flag = logic.superlike(user.id, int(sid))
    if flag:
        return render_json(data={'matched': True})
    return render_json(data={'matched': False})
Ejemplo n.º 4
0
def submit_vcode(request):
    phone = request.POST.get('phone')
    vcode = request.POST.get('vcode')

    # 从缓存中取出数据
    cached_vcode = cache.get(keys.VCODE_KEY % phone)
    if vcode == cached_vcode:
        user, _ = User.objects.get_or_create(phonenum=phone,
                                             defaults={'nickname': phone})
        request.session['uid'] = user.id
        return render_json(data=user.to_dict())
    else:
        return render_json(code=errors.VCODE_ERROR, data='验证码错误')
Ejemplo n.º 5
0
Archivo: api.py Proyecto: ccc179/swiper
def submit_phone(request):
    """获取短信验证码"""
    if not request.method == "POST":
        '''每次都可以去lib里面的http调用render_json帮助返回json 
            这个函数要传一个msg和一个状态码code
        '''
        return render_json("request error",code=errors.REQUEST_ERROR)
    else:
        # 从post请求里面拿到手机号,将手机号交给send_sms函数去发短信.
        phone = request.POST.get('phone')
        result, msg = sms.send_sms(phone)
        print(result)
        return render_json(msg)
Ejemplo n.º 6
0
def login(request):
    '''短信验证登录'''
    phonenum = request.POST.get('phonenum')
    vcode = request.POST.get('vcode')
    if check_vcode(phonenum, vcode):
        #获取用户
        user, created = User.objects.get_or_create(phonenum=phonenum)

        #记录用户状态
        request.session['uid'] = user.id
        return render_json(user.to_dict(), 0)
    else:
        return render_json(None, error.VCODE_ERROR)
Ejemplo n.º 7
0
    def process_request(self, request):
        # 如果当前 url 在白名单内,直接忽略
        if request.path in self.URL_WHITE_LIST:
            return

        # 检查用户是否登录
        uid = request.session.get('uid')
        if uid:
            try:
                request.user = User.objects.get(id=uid)
            except User.DoesNotExist:
                return render_json('用户不存在', errors.USER_NOT_EXIST)
        else:
            return render_json('用户未登录', errors.LOGIN_REQUIRED)
Ejemplo n.º 8
0
def login(request):
    '''

    :param request:
    :return:
    '''
    phonenum = request.POST.get('phonenum')
    vcode = request.POST.get('vcode')
    if check_vcode(phonenum, vcode):
        user, created = User.objects.get_or_create(phonenum=phonenum)
        request.session['uid'] = user.id
        return render_json(user.to_dict(), 0)
    else:
        return render_json(None, VCODE_ERROR)
Ejemplo n.º 9
0
def upload_avatar(request):
    '''头像上传'''
    '''
    1.get user avatar
    2.rename user avatar name
    3.upload avatar to qiniu
    4.save url to redis
    '''
    file = request.FILES.get('avatar')
    if file:
        save_upload_file(request.user, file)
        return render_json(None)
    else:
        return render_json(None, error.FILE_NOT_FOUND)
Ejemplo n.º 10
0
    def process_request(self, request):
        print(request.path)
        if request.path in self.URL_WHITE_LIST:
            return

        uid = request.session.get('uid')
        if not uid:
            return render_json('user not login', errors.USER_NOT_LOGIN.code)

        try:
            user = User.get(id=uid)
            request.user = user
        except User.DoesNotExist:
            return render_json('no this user', errors.NO_THIS_USER.code)
Ejemplo n.º 11
0
    def process_request(self, request):
        if request.path in self.URL_WHITE_LIST:
            return
        uid = request.session.get('uid')
        if uid:
            try:
                user = User.get(id=uid)
                request.user = user
                return
            except User.DoesNotExist:
                return render_json('用户不存在', errors.UserNotExist.code)

        else:
            return render_json('请登录', errors.LoginRequired.code)
Ejemplo n.º 12
0
def login(request):
    '''短信验证登录'''
    phonenum = request.POST.get('phonenum')
    vcode = request.POST.get('vcode')

    if not check_vcode(phonenum, vcode):
        # 获取用户
        user, created = User.objects.get_or_create(phonenum=phonenum)
        # 记录登录状态
        request.session['uid'] = user.id
        pre_rcmd(user)
        return render_json(user.to_dict())
    else:
        return render_json(None, error.OK)
Ejemplo n.º 13
0
    def process_request(self, request):
        # 如果当前 url 在白名单内,直接忽略
        if request.path in self.URL_WHITE_LIST:
            return

        # 检查用户是否登录
        uid = request.session.get('uid')
        if uid:
            try:
                request.user = User.get(id=uid)
            except User.DoesNotExist:
                return render_json('用户不存在', errors.UserNotExist.code)
        else:
            return render_json('用户未登录', errors.LoginRequired.code)
Ejemplo n.º 14
0
def modify_profile(request):
    '''修改个人资料'''
    form = ProfileForm(request.POST)
    if form.is_valid():
        user = request.user
        user.profile.__dict__.update(form.cleaned_data)
        user.profile.save()
        #修改缓存
        key = 'Profile-%s' % user.id
        cache.set(key, user.profile.to_dict())

        return render_json(None)
    else:
        return render_json(form.errors, error.PROFILE_ERROR)
Ejemplo n.º 15
0
def verify_phone(request):
    '''
    验证手机号
    :param request:
    :return:
    '''
    phone_num = request.POST.get('phone_num')
    if utils.is_phone_num(phone_num.strip()):
        if logic.send_verify_code(phone_num):
            return render_json()
        else:
            return render_json(code=errors.PhoneNumError.code)

    return render_json(code=errors.PHONE_NUM_ERR)
Ejemplo n.º 16
0
def swiper_like(request):
    target_id = int(request.POST.get('target_id'))
    # source_id = int(request.POST.get('source_id'))
    source_id = request.user.id

    if target_id == source_id:
        return render_json({}, '禁止喜欢自己', CODE_DISABLE_LIKE_SELF)
    Swiper.swipe('like', source_id=source_id, target_id=target_id)

    # 检查被滑动者,是否喜欢过滑动者
    if Swiper.is_liked_someone(source_id=target_id, target_id=source_id):
        Friend.make_friends(target_id, source_id)

    return render_json(None)
Ejemplo n.º 17
0
Archivo: api.py Proyecto: sz1811/swiper
def get_profile(request):
    """"获取个人资料"""
    user = request.user
    # 先从缓存中获取数据
    profile_dict = cache.get(keys.PROFILE_DICT % user.id)
    # 如果能获取到就返回数据
    if profile_dict is not None:
        print('get profile from cache')
        return render_json(profile_dict)
    # 获取不到就从数据库中获取,并添加到缓存中.
    profile_dict = user.profile.to_dict()
    print('get profile dict from db')
    cache.set(keys.PROFILE_DICT % user.id, profile_dict, 86400 * 7)

    return render_json(profile_dict)
Ejemplo n.º 18
0
    def process_exception(self, request, exception):
        """异常处理"""
        if isinstance(exception, error.LogicError):
            #处理异常
            err_logger.error((f'LogicError:{exception}'))  #处理日志

            return render_json(None, exception.code)
Ejemplo n.º 19
0
def modify_user(request: HttpRequest):
    '''modify user info'''
    user_form = UserForm(request.POST)
    if not user_form.is_valid():
        raise error.UserHttpBad()

    return render_json(user_form.cleaned_data)
Ejemplo n.º 20
0
def show_profile(request):
    '''show profile detail'''
    user = request.user
    profile = user.profile
    profile.save()

    return render_json(profile.to_dict())
Ejemplo n.º 21
0
def dislike(request):
    '''不喜欢'''
    sid = int(request.POST.get('sid'))
    Swiped.dislike(request.user.id, sid)
    logic.add_swipe_score(sid, 'dislike')
    rds.srem('RCMD-%s' % request.user.id, sid)
    return render_json(None)
Ejemplo n.º 22
0
def superlike(request):
    '''超级喜欢'''
    sid = int(request.POST.get('sid'))
    is_matched = logic.superlike_someone(request.user, sid)
    logic.add_swipe_score(sid, 'superlike')
    rds.srem('RCMD-%s' % request.user.id, sid)
    return render_json({'is_matched': is_matched})
Ejemplo n.º 23
0
def edit_profile(request):
    """修改个人资料"""
    user = request.user
    form = ProfileForm(request.POST)
    if form.is_valid():
        profile = form.save(
            commit=False
        )  # 继承了ModelForm, form相当于Model对象, commit=False 先不提交, 返回一个profile对象
        profile.id = user.id
        profile.save()  # 这里save()相当于更新该id对应数据

        # 更新到缓存
        key = keys.PROFILE_KEY % user.id
        cache.set(key, profile.to_dict(), 86400 * 14)
        return render_json(data=profile.to_dict())
    return render_json(code=errors.PROFILE_ERR, data=form.errors)
Ejemplo n.º 24
0
def upload_avatar(request):
    '''头像上传'''
    user = request.user
    avatar = request.FILES.get('avatar')  # 取出文件对象

    logics.upload_avatar.delay(user, avatar)
    return render_json(None)
Ejemplo n.º 25
0
def upload_avatar(request):
    '''上传个人形象'''
    avatar = request.FILES.get('avatar')
    filepath, filename = save_upload_file(request.user, request.user, avatar)
    # 上传个人头像到七牛云 「未测试」
    # upload_avatar_to_qn(filepath, filename)
    return render_json(None)
Ejemplo n.º 26
0
 def wrap(request):
     user = request.user
     if user.vip.has_perm(perm_name):
         response = view_func(request)
         return response
     else:
         return render_json(None, error.NOT_HAS_PERM)
Ejemplo n.º 27
0
def user_avatar(request):
    # 上传后保存的文件名
    file_name = f'avatar-{request.user.id}'

    # 上传后保存的全路径
    file_path = f'{settings.BASE_DIR}/static/{file_name}'

    # 取得用户上传得图片
    f = request.FILES['avatar']

    # with 上下文管理器
    with open(file_path, 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

    print('save ok.')

    user_id = request.user.id
    # 将图片上传到七牛云
    # upload_qiniu(file_name, file_path, user_id)

    # 使用celery异步操作
    upload_qiniu.delay(file_name, file_path, user_id)

    return render_json(None)
Ejemplo n.º 28
0
def get_profile(request):
    """获取个人资料"""
    uid = request.session.get('uid')
    user = User.objects.get(id=uid)

    profile = user.profile
    return render_json(profile.to_string())
Ejemplo n.º 29
0
def cart_selected(request):

    user = request.user
    cartid = user.cart.id
    cart_select(cartid)
    cart = cache.get('cartid')
    return render_json(cart)
Ejemplo n.º 30
0
def submit_phone(request):
    '''提交手机号,发送验证码'''
    # phone = request.POST.get('phone')
    phone = request.GET.get('phone')
    print(phone)
    send_sms(phone)
    return render_json(None)