예제 #1
0
def progress_user(request):
    dir_name = os.path.dirname(
        os.path.abspath(__file__)) + "\\csv_uploads\\file.csv"
    params = request.GET
    with open(dir_name) as f:
        keys = f.readline().rstrip().split(";")
    achievements = Achievement.get_all_achievements()
    if request.method == 'POST':
        achievement_id = request.POST['achievement_id']
        user_id = request.POST['user_id']
        sort_by = request.POST['sort_by']
        user_id_value = request.POST['user_id_value']
        res_id_user = User.get_by_id(user_id, user_id_value)
        leaderboard = Achievement.get_leaderbord_by_user(
            achievement_id, res_id_user, sort_by)
        user = leaderboard['leaderboard'][leaderboard['user_position']]
        user_object = User.get_user(res_id_user)
        prog = Achievement.evaluate(user_object,
                                    achievement_id,
                                    achievement_date=None,
                                    execute_triggers=True)
        rewards = []
        badges = []
        current_level = prog['level']
        all_rewards = AchievementReward.get_rewards(achievement_id, 6)
        all_badges = AchievementReward.get_rewards(achievement_id, 1)
        for i in range(0, len(all_rewards)):
            if all_rewards[i]['from_level'] <= current_level:
                rewards.append(all_rewards[i]['value'])
        for i in range(0, len(all_badges)):
            if all_badges[i]['from_level'] <= current_level:
                badges.append(all_badges[i]['value'])
        """
        levels = prog['levels']
        for key,value in levels.items():
            if value['level'] <= current_level:
                for key,value in value['rewards'].items():
                    if value['name'] == 'badge':
                        badges.append(value['value'])
                    if value['name'] == 'reward':
                        rewards.append(value['value'])
        """
        header_user = []
        for key, value in user['user']['additional_public_data'].items():
            header_user.append(key)
        return {
            'header_user': header_user,
            'user': user,
            'achievements': achievements,
            'params': params,
            'keys': keys,
            'badges': badges,
            'rewards': rewards,
            'current_level': current_level
        }
    else:
        return {'achievements': achievements, 'params': params, 'keys': keys}
예제 #2
0
def get_leaderboard_user(request):

    try:
        achievement_id = int(request.matchdict["achievement_id"])
    except:
        raise APIError(400, "illegal_achievement_id",
                       "no valid achievement_id given")

    try:
        user_id = int(request.matchdict["user_id"])
    except:
        raise APIError(400, "illegal_user_id", "no valid user_id given")

    relevance = 'global'
    if len(request.matchdict["relevance"]) > 0:
        relevance = request.matchdict["relevance"]
    #relevance = request.matchdict["relevance"]
    #print('relevance',relevance)

    return Achievement.get_leaderbord_by_user(achievement_id, user_id,
                                              relevance)