def my_ranking_all_time(request): from models import UserStats 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) ranking_list = [] for ranking, user, total_steps, isUser in UserStats.get_all_time_ranking(token.user): prestige, challenge_progress = divmod(total_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 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 log_distance(request): from models import UserStats token_param = request.GET.get('token') if not AuthToken.is_token_valid(token_param) and settings.DEBUG is False: return JsonResponse({'status': 'INVALID_TOKEN'}) steps = request.GET.get('steps') if not steps: HttpResponseBadRequest('steps parameter is required') steps = int(steps) token = AuthToken.objects.get(token_string=token_param) user = token.user UserStats.record_stats(user, steps) return JsonResponse({'status': 'OK'})
def weekly_stat(request): 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'}) if week: try: week = datetime.strptime(week, '%m-%d-%Y') except: return JsonResponse({'status': 'ILLEGAL_DATE_FORMAT'}) from models import UserStats token = AuthToken.objects.get(token_string=token_param) weekly_stats = UserStats.get_weekly_stats(token.user, week) return JsonResponse({'status': 'OK', 'week_of': week - datetime.timedelta(days=week.weekday()), 'weekly_stats': weekly_stats, })
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, }, })
def update_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'}) name = request.GET.get('nickname') if not name: return HttpResponseBadRequest('nickname get parameter is required') nickname_max_size = 25 if len(name) > nickname_max_size: return JsonResponse({'status': 'NICKNAME_TOO_LONG', 'max_size': nickname_max_size}) from django.utils.html import strip_tags, escape name = escape(strip_tags(name)) token = AuthToken.objects.get(token_string=token_param) user = token.user user.public_name = name user.save() return JsonResponse({'status': 'OK'})