예제 #1
0
def tables(request):
    params = request.GET
    if request.method == 'POST':
        params.update({'id': request.POST['achievement_id']})
        return HTTPFound(request.route_url('leaderboard', _query=params))
    else:
        achievements = Achievement.get_all_achievements()
        return {'achievements': achievements, 'params': params}
예제 #2
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}
예제 #3
0
def increase_data(request):
    dir_name = os.path.dirname(
        os.path.abspath(__file__)) + "\\csv_uploads\\file.csv"
    params = request.GET
    if request.method == 'POST':
        if 'upload' in request.POST:
            dir_name = os.path.dirname(
                os.path.abspath(__file__)) + "\\csv_uploads\\values_data.csv"
            content = request.POST['file'].file
            content = content.read()
            content = content.decode('utf-8', 'ignore')

            my_dict = p.get_book(file_type="csv",
                                 file_content=content,
                                 delimiter=';')
            my_dict.save_as(dir_name, delimiter=';')

            with open(dir_name) as f:
                keys_data = f.readline().rstrip().split(";")
            params.update({'id': request.POST['achievement_id']})
            return render_to_response(
                'gengine.app:templates/index/increase_data.jinja2', {
                    'keys_data': keys_data,
                    'params': params
                },
                request=request)
        elif 'value' in request.POST:
            user_id = request.POST["user_id"]
            variable = request.POST["variable"]
            value = request.POST["value"]
            user_id_value = request.POST["user_id_value"]
            achievement_id = request.POST['achievement_id']
            res_id_user = User.get_by_id(user_id, user_id_value)
            Value.increaseByValue(variable, res_id_user, value)
            Achievement.update_user_value(achievement_id, res_id_user)
            return HTTPFound(request.route_url('increase_data', _query=params))
        else:
            user_id = request.POST["user_id"]
            variable = request.POST["variable"]
            achievement_id = params["id"]
            Value.increase(achievement_id, variable, user_id, dir_name)
            return HTTPFound(request.route_url('leaderboard', _query=params))
    else:
        with open(dir_name) as f:
            keys = f.readline().rstrip().split(";")
        achievements = Achievement.get_all_achievements()
        return {'achievements': achievements, 'params': params, 'keys': keys}
예제 #4
0
def badges(request):
    params = request.GET
    achievements = Achievement.get_all_achievements()
    if request.method == 'POST':
        if 'achievement_id' in request.POST:
            achievement_id = request.POST['achievement_id']
            achievement = Achievement.get_achievement(achievement_id)
            rewards = AchievementReward.get_rewards(achievement_id, 6)
            badges = AchievementReward.get_rewards(achievement_id, 1)
            nb_levels = (int)(achievement["maxlevel"] / 5)
            if not badges:
                AchievementReward.create_achievement_rewards_badges(
                    achievement_id, "badge1.PNG", 1)
                AchievementReward.create_achievement_rewards_badges(
                    achievement_id, "badge2.PNG", nb_levels)
                AchievementReward.create_achievement_rewards_badges(
                    achievement_id, "badge3.PNG", nb_levels * 2)
                AchievementReward.create_achievement_rewards_badges(
                    achievement_id, "badge4.PNG", nb_levels * 3)
                AchievementReward.create_achievement_rewards_badges(
                    achievement_id, "badge5.PNG", nb_levels * 4)
                AchievementReward.create_achievement_rewards_badges(
                    achievement_id, "badge6.PNG", nb_levels * 5)
            achievement_id = request.POST['achievement_id']
            return {
                'selected_achievement': achievement_id,
                'achievements': achievements,
                'params': params,
                'levels': nb_levels,
                'rewards': rewards
            }
        else:
            reward_name = request.POST['reward_name']
            reward_level = request.POST['reward_level']
            selected_achievement = request.POST['selected_achievement']
            AchievementReward.create_achievement_rewards(
                selected_achievement, reward_name, reward_level)
            return {'achievements': achievements, 'params': params}
    else:
        return {'achievements': achievements, 'params': params}
예제 #5
0
def achievements_all(request):
    achievements = Achievement.get_all_achievements()
    result = []
    for achievement in achievements:
        result.append({"id": achievement["id"], "name": achievement["name"]})
    return {'achievements': result}