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}
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)