def get_achievement_level(request): """get all information about an achievement for a specific level""" try: achievement_id = int(request.matchdict.get("achievement_id", None)) level = int(request.matchdict.get("level", None)) except: raise APIError(400, "invalid_input", "invalid input") achievement = Achievement.get_achievement(achievement_id) if not achievement: raise APIError(404, "achievement_not_found", "achievement not found") level_output = Achievement.basic_output(achievement, True, level).get("levels").get( str(level), { "properties": {}, "rewards": {} }) if "goals" in level_output: del level_output["goals"] if "level" in level_output: del level_output["level"] return level_output
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}
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 }