コード例 #1
0
ファイル: logic.py プロジェクト: cy777/swiper
def rewind(user):
    key = keys.REWIND_KEY % user.id
    cached_rewinded_times = cache.get()
    if cached_rewinded_times < config.MAX_REWIND:
        cached_rewinded_times += 1
        now = datetime.datetime.now()
        left_seconds = 86400 - now.hour * 3600 - now.minute * 60 - now.second
        cache.set(cached_rewinded_times, timeout=left_seconds)

        try:
            record = Swiped.objects.filter(uid=user.id).latest('time')
            Friend.delete_friend(uid1=user.id, uid2=record.sid)
            record.delete()
            return 0, None
        except Swiped.DoesNotExist:
            return errors.NO_RECORD, '无操作记录,无法反悔'

    else:
        return errors.EXCEED_MAXIMUN_REWIND, '超过最大反悔次数'
コード例 #2
0
ファイル: logics.py プロジェクト: nz1901/swiper
def rewind(uid):
    key = keys.REWIND % uid
    cached_rewind_times = cache.get(key, 0)
    if cached_rewind_times < config.MAX_REWIND_TIMES:
        # 说明可以执行反悔操作.
        # 查找上一次操作的Swiped记录
        record = Swiped.objects.latest('time')

        # 如果建立了好友关系,好友关系也需取消.
        if Friend.is_friend(uid1=uid, uid2=record.sid):
            Friend.delete_friend(uid1=uid, uid2=record.sid)

        # 更新缓存
        cached_rewind_times += 1
        now = datetime.datetime.now()
        timeout = 86400 - (3600 * now.hour + 60 * now.minute + now.second)
        cache.set(key, cached_rewind_times, timeout)

        # 处理反悔之后排行榜的分数问题
        # if record.mark == 'like':
        #     rds.zincrby(config.TOP_N, -config.LIKE_SCORE,
        #                 keys.TOP_N_KEY % record.sid)
        # elif record.mark == 'dislike':
        #     rds.zincrby(config.TOP_N, -config.DISLIKE_SCORE,
        #                 keys.TOP_N_KEY % record.sid)
        # else:
        #     rds.zincrby(config.TOP_N, -config.SUPERLIKE_SCORE,
        #                 keys.TOP_N_KEY % record.sid)
        # 使用字典做模式匹配优化以上代码
        mapping = {
            'like': config.LIKE_SCORE,
            'dislike': config.DISLIKE_SCORE,
            'superlike': config.SUPERLIKE_SCORE
        }
        rds.zincrby(config.TOP_N, -mapping.get(record.mark),
                    keys.TOP_N_KEY % record.sid)

        record.delete()
        return True
    else:
        raise errors.ExceedMaximumRewindTimes
コード例 #3
0
ファイル: logic.py プロジェクト: s1906/swiper
def rewind(user):
    key = keys.PROFILE_KEY % user.id
    cached_rewinded_times = cache.get(key, 0)
    if cached_rewinded_times < config.MAX_REWIND:
        # 说明当天还有反悔机会
        # 缓存中的反悔次数要加1
        cached_rewinded_times += 1
        now = datetime.datetime.now()
        left_seconds = 86400 - (now.hour * 3600 + now.minute * 60 + now.second)
        cache.set(key, cached_rewinded_times, time=left_seconds)

        # 删除Swiped表中的最近的一条记录
        try:
            record = Swiped.objects.filter(uid=user.id).latest('time')
            # 考虑如果有好友关系, 返回之后,好友关系也应该解除
            Friend.delete_friend(uid1=user.id, uid2=record.sid)
            record.delete()
            return 0, None
        except Swiped.DoesNotExist:
            # return render_json(code=erros.NO_RECORD,data='无操作记录,无法反悔'
            return erros.NO_RECORD, '无操作记录,无法反悔'
    else:
        return erros.EXCEED_MAXIMUM_REWIND, '超过最大反悔次数'
コード例 #4
0
ファイル: api.py プロジェクト: muzili0903/swiper
def delete(request):
    sid = request.POST.get('sid')
    Friend.delete_friend(request.user.id, sid)
    Swiperd.delete_mark(request.user.id, sid)
    return render_json(None)
コード例 #5
0
ファイル: logic.py プロジェクト: s1906/swiper
def dislike(uid, sid):
    # 创建一条记录
    Swiped.dislike(uid, sid)
    Friend.delete_friend(uid, sid)
    return True
コード例 #6
0
ファイル: logic.py プロジェクト: cy777/swiper
def dislike(uid, sid):
    Swiped.dislike(uid=uid, sid=sid)
    Friend.delete_friend(uid, sid)
    return True
コード例 #7
0
ファイル: logics.py プロジェクト: nz1901/swiper
def dislike(uid, sid):
    Swiped.dislike(uid=uid, sid=sid)
    # 删除好友记录
    Friend.delete_friend(uid, sid)