def fetchStrava(code, request): if request.user == '' or request.user == None: request.user = '******' access_token = getAccessToken(code) activites_url = "https://www.strava.com/api/v3/athlete/activities" header = {'Authorization': 'Bearer ' + access_token} print("Fill database") i = 1 while True: param = {'per_page': 200, 'page': i} current_activities = Activity.objects.filter(user=request.user) current_ids = set([i.strava_id for i in current_activities]) print(len(current_activities)) print(len(current_ids)) strava_activities = requests.get(activites_url, headers=header, params=param).json() print("current batch - " + str(len(strava_activities))) if len(strava_activities) == 0: break i += 1 for strava_activity in strava_activities: if strava_activity["id"] not in current_ids: activity = Activity() activity.strava_id = strava_activity["id"] activity.user = request.user activity.title = strava_activity["name"] activity.activity_type = strava_activity["type"] activity.date = datetime.strptime( strava_activity['start_date'][2:10], '%y-%m-%d') activity.timestamp = datetime.timestamp(activity.date) if strava_activity['has_heartrate']: activity.heartrate = strava_activity['average_heartrate'] if 'suffer_score' in strava_activity: activity.suffer = strava_activity['suffer_score'] else: activity.suffer = 0 else: activity.heartrate = 0 activity.suffer = 0 activity.distance = strava_activity['distance'] / 1000 activity.moving_time = strava_activity['elapsed_time'] activity.elevation = strava_activity['total_elevation_gain'] activity.speed = strava_activity['average_speed'] if activity.activity_type == "Run" or activity.activity_type == "Ride": if strava_activity['workout_type'] == None: activity.workout_type = 'niks' else: activity.workout_type = strava_activity['workout_type'] activity.save()