Exemple #1
0
    def format(cls, live, exclude_fields=[]):
        user_ex_fields = []
        game_ex_fields = []
        for field in exclude_fields:
            if field.startswith('user__'):
                _, _field = field.split('__')
                user_ex_fields.append(_field)
            elif field.startswith('game__'):
                _, _field = field.split('__')
                game_ex_fields.append(_field)

        ut = request.values.get("ut", None)
        uid = User.uid_from_token(ut)

        user_id = live.get('user_id', None)

        from wanx.models.home import Share
        share_title = None
        if str(user_id) == uid:
            share_title = Share.get_by_self_live().title
        else:
            share_title = Share.get_by_others_live().title

        game = Game.get_one(str(live['game_id']), check_online=False)
        user = User.get_one(str(live['user_id']), check_online=False)
        live['user'] = user and user.format(exclude_fields=user_ex_fields)
        live['game'] = game and game.format(exclude_fields=game_ex_fields)
        live['from_following'] = live.get('from_following', False)
        live['share_title'] = share_title
        # 强行移除ut
        live.pop('ut', None)
        return live
Exemple #2
0
def certify():
    """实名认证 (GET|POST)

    :uri: /users/certify
    :param name: 用户名
    :param user_id: 用户ID
    :param ID_number: 身份证号码
    :returns: {'uid': uid}
    """
    ut = request.values.get("ut", None)
    user_id = User.uid_from_token(ut)

    params = request.values.to_dict()
    name = params.get("name", None)
    ID_number = params.get("ID_number", None)

    kwargs = dict()
    if 'ut' in params.keys():
        kwargs['user_id'] = ObjectId(user_id)
        kwargs['content'] = ''
        kwargs['ID_number'] = ID_number
        kwargs['status'] = '2'
        kwargs['name'] = name

    if not name or not ID_number:
        return error.InvalidArguments

    if not User.get_one(ObjectId(user_id)):
        return error.UserNotExist

    user_certify = UserCertify.get_untreated_user_certify(user_id)
    if user_certify:
        user = user_certify
        user.update(kwargs)
        uid = user.edit_model()

    else:
        user = UserCertify.init()
        user.update(kwargs)
        uid = user.create_model()

    return {'uid': uid}
Exemple #3
0
def certify_status():
    """获取实名认证状态 (GET|POST)

    :uri: /users/certify_status
    :returns: {'uid': uid}
    """

    ut = request.values.get("ut", None)
    user_id = User.uid_from_token(ut)

    if not User.get_one(ObjectId(user_id)):
        return error.UserNotExist

    user = UserCertify.get_user_certify(user_id)
    if not user:
        return error.UserNotExist

    user_certify = user.format()

    return user_certify
Exemple #4
0
def play_video(vid):
    """播放视频 (GET)

    :uri: /videos/<string:vid>/play
    :returns: redirect(real_url)
    """
    ut = request.values.get("ut", None)
    uid = User.uid_from_token(ut)

    start = int(time.time() * 1000)
    video = Video.get_one(vid)
    if not video:
        result = {
            'status': error.VideoNotExist.errno,
            'errmsg': error.VideoNotExist.errmsg,
            'data': {},
            'time': int(time.time() * 1000) - start,
        }
        return jsonify(result)
    video.update_model({'$inc': {'vv': 1}})
    # 如果是栏目视频,给对应频道增加播放量
    channel = ShowChannel.get_one(video.channel)
    channel and channel.update_model({'$inc': {'play_count': 1}})

    # 观看视频任务检查
    if uid:
        UserTask.check_user_tasks(uid, PLAY_VIDEO, 1)

    # 更新活动播放量
    avideos = ActivityVideo.get_activity_video(vid=vid)
    for avideo in avideos:
        ts = time.time()
        aconfig = ActivityConfig.get_one(str(avideo['activity_id']),
                                         check_online=False)
        if aconfig and aconfig.status == const.ACTIVITY_BEGIN \
                and (aconfig.begin_at < ts and aconfig.end_at > ts):
            avideo = ActivityVideo.get_one(avideo['_id'], check_online=False)
            avideo.update_model({'$inc': {'vv': 1}})

    return redirect(video.real_url())
Exemple #5
0
def certify_sms_code():
    """获取实名认证验证码 (GET|POST)

    :uri: /users/certify_sms_code
    :param phone: 手机号
    :param ut: ut
    :returns: {}
    """
    phone = request.values.get("phone", None)
    ut = request.values.get("ut", None)

    if not phone:
        return error.InvalidArguments

    user_id = User.uid_from_token(ut)

    code = str(random.randint(0, 9)) + str(random.randint(0, 9)) + str(
        random.randint(0, 9)) + str(random.randint(0, 9)) + str(
            random.randint(0, 9)) + str(random.randint(0, 9))

    if UserCertify.is_mobile(phone):
        con = '您在咪咕游戏申请实名认证解绑的验证码为:{0},5分钟有效。'.format(code)
        # UserCertify.send_code(phone, con)
        phones = list()
        phones.append(phone)

        try:
            job = 'send_sms'
            data = dict(phones=phones, content=con)

            gm_client = gearman.GearmanClient(app.config['GEARMAN_SERVERS'])
            gm_client.submit_job(job,
                                 json.dumps(data),
                                 background=True,
                                 wait_until_complete=False,
                                 max_retries=5)
        except gearman.errors.GearmanError:
            pass
        except Exception, e:
            print_log('send_sms_err', str(e))
Exemple #6
0
def certify_relieve():
    """解除实名认证 (GET|POST)

    :uri: /users/certify_relieve
    :param sms_code: 短信验证码
    :param ID_number: 身份证号码
    :param phone: 手机号码
    :returns: {}
    """

    ut = request.values.get("ut", None)
    user_id = User.uid_from_token(ut)

    user = UserCertify.get_user_certify(user_id)
    if not user:
        return error.UserNotExist

    user_certify = user.format()

    params = request.values.to_dict()
    sms_code = params.get("sms_code", None)
    ID_number = params.get("ID_number", None)
    phone = params.get("phone", None)

    if not phone:
        return error.InvalidArguments

    if not ID_number:
        return error.NO_IDFailed

    if not sms_code:
        return error.NO_SMSFailed

    redis_sms = Redis.get('sms:{user_id}'.format(user_id=user_id))

    if sms_code != redis_sms:
        return error.SMSFailed

    if ID_number != user.ID_number:
        return error.ID_numberError

    Redis.delete(UserCertify.USER_CERTIFY % ({'uid': str(user_id)}))
    Redis.delete(UserCertify.OBJECT_KEY % ({
        'name': 'users',
        'oid': str(user_id)
    }))

    kwargs = dict()
    kwargs['user_id'] = ObjectId(user_id)
    kwargs['content'] = ''
    kwargs['status'] = '4'
    kwargs['ID_number'] = ID_number
    kwargs['name'] = user_certify.get('name', '')
    kwargs['ID_photo'] = user_certify.get('ID_photo', '')
    kwargs['ID_photo_2'] = user_certify.get('ID_photo_2', '')

    user = UserCertify.init()
    user.update(kwargs)
    user.create_model()

    if UserCertify.is_mobile(phone):
        con = '【咪咕游戏】您好,您的账号{0}已与身份证号{1}成功解绑,请确保是您本人操作。'.format(
            phone, ID_number)
        UserCertify.send_code(phone, con)
    else:
        UserCertify.send_certify_release(phone, ID_number)

    sysmsg = SysMessage.init()
    sysmsg.title = u"实名认证结果反馈"
    sysmsg.owner = ObjectId(user_id)
    sysmsg.content = u"您已解除咪咕游玩实名认证"
    sysmsg.create_model()

    return {}