def top_ten(request): week = request.GET.get('week') if week: try: week = datetime.strptime(week, '%m-%d-%Y') except: return JsonResponse({'status': 'ILLEGAL_DATE_FORMAT'}) from models import UserStats top10_stats = UserStats.get_weekly_top_10(week) top10 = [] for s in top10_stats: all_time_stats = UserStats.get_all_time_stats(s.user) prestige, challenge_progress = divmod(all_time_stats.get('all_time_steps'), 100) top10.append({'name': s.user.public_name, 'id': s.user.pk, 'prestige': prestige, 'total_steps': s.total_steps() }) return JsonResponse({'status': 'OK', 'top_10': top10, })
def my_ranking_weekly(request): from models import UserStats week = request.GET.get('week') token_param = request.GET.get('token') if not AuthToken.is_token_valid(token_param) and settings.DEBUG is False: return JsonResponse({'status': 'INVALID_TOKEN'}) token = AuthToken.objects.get(token_string=token_param) if week: try: week = datetime.strptime(week, '%m-%d-%Y') except: return JsonResponse({'status': 'ILLEGAL_DATE_FORMAT'}) ranking_list = [] for ranking, user, total_steps, isUser in UserStats.get_weekly_ranking(token.user, week): all_time_stats = UserStats.get_all_time_stats(user) prestige, challenge_progress = divmod(all_time_stats.get('all_time_steps'), 100) ranking_list.append({'name': user.public_name, 'id': user.pk, 'prestige': prestige, 'total_steps': total_steps, 'isUser': isUser, 'ranking': ranking, }) return JsonResponse({'status': 'OK', 'ranking': ranking_list, })
def profile(request): token_param = request.GET.get('token') if not AuthToken.is_token_valid(token_param) and settings.DEBUG is False: return JsonResponse({'status': 'INVALID_TOKEN'}) from models import UserStats token = AuthToken.objects.get(token_string=token_param) weekly_stats = UserStats.get_weekly_stats(token.user) all_time_stats = UserStats.get_all_time_stats(token.user) prestige, challenge_progress = divmod(all_time_stats.get('all_time_steps'), 100) return JsonResponse({'status': 'OK', 'nick_name': token.user.public_name, 'all_time_stats': all_time_stats, 'weekly_stats': weekly_stats, 'current_challenge': { 'id': '1', 'prestige': prestige, 'name': 'mount_europa', 'total_steps': '100', 'current_steps': challenge_progress, }, })