コード例 #1
0
def create_data_jifen2(request, jifentype, date=None):
    """
    因为创建了数据而获得积分
    by:王健 at:2015-2-4
    优化累计积分,兼容测试
    by:王健 at:2015-2-5
    屏蔽mongodb
    by:王健 at:2015-3-8
    优化 settings 的配置
    by:王健 at:2015-3-9
    :param request:
    :param jifentype: 发送数据的来的积分还是分享的来的积分
    :return:
    """
    from mango import database as db
    uid = request.user.pk
    if date == None:
        date = timezone.now()
    jifen_id = LEIJI_JIFEN % (uid, date.strftime('%Y%m%d'), jifentype)

    value = settings.LEIJI_MAX.get(jifentype)[0]
    maxvalue = settings.LEIJI_MAX.get(jifentype)[1]
    message = settings.LEIJI_MAX.get(jifentype)[2]
    if not hasattr(request.session, jifen_id) or str(request.session[jifen_id]) < maxvalue:
        if not hasattr(request.session, LEIJILIST_KEY):
            request.session[LEIJILIST_KEY] = []
        if jifen_id not in request.session[LEIJILIST_KEY]:
            request.session[LEIJILIST_KEY].append(jifen_id)
        login_data = db.jifen.find_one({'_id': jifen_id})
        if not login_data:
            login_data = {'_id': jifen_id, 'type': jifentype, 'fen': value}
            result = db.jifen.insert(login_data)
            if is_success_mongodb_result(result):
                request.session[jifen_id] = value
                #todo: 提示文字需要优化
                return True, value, message % value
        else:
            if login_data.get('fen', 0) < maxvalue:
                login_data['fen'] = login_data.get('fen', 0) + value
                result = db.jifen.update({"_id": jifen_id}, {"$set": {'fen': login_data.get('fen', 0)}})
                if is_success_mongodb_result(result):
                    request.session[jifen_id] = login_data['fen']
                    #todo: 提示文字需要优化
                    return True, value, message % value
            else:
                request.session[jifen_id] = maxvalue
    else:
        if hasattr(request.session, LEIJILIST_KEY) and len(request.session[LEIJILIST_KEY]) > 1:
            for jid in request.session[LEIJILIST_KEY]:
                if jifen_id != jid:
                    del request.session[jid]
            request.session[LEIJILIST_KEY] = [jifen_id]
    return False, 0, u''
コード例 #2
0
def login_jifen2(request, date=None):
    """
    连续登陆 产生积分
    by:王健 at:2015-2-4
    优化登录送积分,兼容测试
    by:王健 at:2015-2-5
    屏蔽mongodb
    by:王健 at:2015-3-8
    优化 settings 的配置
    by:王健 at:2015-3-9
    :return:
    """
    from mango import database as db
    uid = request.user.pk
    if date == None:
        date = timezone.now()
    jifen_id = LOGIN_JIFEN % (uid, date.strftime('%Y%m%d'))
    if not hasattr(request.session, jifen_id):
        if not hasattr(request.session, LOGINLIST_KEY):
            request.session[LOGINLIST_KEY] = []
        if jifen_id not in request.session[LOGINLIST_KEY]:
            request.session[LOGINLIST_KEY].append(jifen_id)
        login_data = db.jifen.find_one({'_id': jifen_id})
        if not login_data:
            pre_date = date + datetime.timedelta(days=-1)
            pre_jifen_id = LOGIN_JIFEN % (uid, pre_date.strftime('%Y%m%d'))
            pre_login_data = db.jifen.find_one({'_id': pre_jifen_id})
            if not pre_login_data:
                days = 1
                fen = settings.LOGIN_MAX_DAYS_FEN
            else:
                days = pre_login_data.get('days', 0) + 1
                if days > settings.LOGIN_MAX_DAYS:
                    fen = settings.LOGIN_MAX_DAYS * settings.LOGIN_MAX_DAYS_FEN
                else:
                    fen = days * settings.LOGIN_MAX_DAYS_FEN
            login_data = {'_id': jifen_id, 'days': days, 'type': 'login', 'fen': fen}
            result = db.jifen.insert(login_data)
            if is_success_mongodb_result(result):
                request.session[jifen_id] = jifen_id
                return True, fen, u'连续登录%s天,奖励%s积分' % (days, fen)
        else:
            request.session[jifen_id] = jifen_id
    else:
        if hasattr(request.session, LOGINLIST_KEY) and len(request.session[LOGINLIST_KEY]) > 1:
            for jid in request.session[LOGINLIST_KEY]:
                if jifen_id != jid:
                    del request.session[jid]
            request.session[LOGINLIST_KEY] = [jifen_id]
    return False, 0, u''