예제 #1
0
def get_leaderboard_achievement(request):

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

    return Achievement.get_leaderbord_by_achievement(achievement_id)
예제 #2
0
def progress_users(request):
    achievement_id = int(request.matchdict["achievement_id"])
    leaderboard = Achievement.get_leaderbord_by_achievement(achievement_id)
    progress = Achievement.get_achievement_max_value(achievement_id)
    return {"max_value": progress, "leaderboard": leaderboard}
예제 #3
0
def leaderboard(request):
    params = request.GET
    achievement_id = params["id"]
    sorted_by = {"type": "Global"}
    achievement = Achievement.get_achievement(achievement_id)
    if request.method == 'POST':
        if ('sorted_value' in request.POST):
            sorted_by["type"] = params["type"]
            sorted_by.update({'value': request.POST['sorted_value']})
            result = Achievement.get_leaderbord_by_relevance(
                achievement_id, sorted_by)
            header_table = []
            for key, value in result[0]["user"][
                    "additional_public_data"].items():
                header_table.append(key)
            return {
                'header_table': header_table,
                'result': result,
                'winner': result[0],
                'params': params,
                'sorted_by': sorted_by["type"],
                'achievement': achievement,
                'sorted_value': request.POST['sorted_value']
            }
        elif ('sorted_by' in request.POST):
            sorted_by["type"] = request.POST['sorted_by']
            params.update({'type': request.POST['sorted_by']})
            if sorted_by["type"] == 'Global':
                result = Achievement.get_leaderbord_by_achievement(
                    achievement_id)
                header_table = []
                for key, value in result[0]["user"][
                        "additional_public_data"].items():
                    header_table.append(key)
                return {
                    'header_table': header_table,
                    'result': result,
                    'winner': result[0],
                    'params': params,
                    'sorted_by': sorted_by["type"],
                    'achievement': achievement
                }
            else:
                sort_res = User.sort(sorted_by["type"])
                myarray = []
                myarray = np.asarray(sort_res)
                result = Achievement.get_leaderbord_by_achievement(
                    achievement_id)
                header_table = []
                for key, value in result[0]["user"][
                        "additional_public_data"].items():
                    header_table.append(key)
                return {
                    'header_table': header_table,
                    'result': result,
                    'winner': result[0],
                    'exist': sort_res,
                    'sort_res': myarray,
                    'params': params,
                    'sorted_by': sorted_by["type"],
                    'achievement': achievement
                }
    else:
        result = Achievement.get_leaderbord_by_achievement(achievement_id)
        header_table = []
        for key, value in result[0]["user"]["additional_public_data"].items():
            header_table.append(key)
        return {
            'header_table': header_table,
            'result': result,
            'winner': result[0],
            'params': params,
            'sorted_by': sorted_by["type"],
            'achievement': achievement
        }