sort of working
This commit is contained in:
@@ -26,6 +26,12 @@ from django.contrib.auth import authenticate, login, logout
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
import django_rq
|
||||
queue = django_rq.get_queue('default')
|
||||
queuelow = django_rq.get_queue('low')
|
||||
queuehigh = django_rq.get_queue('low')
|
||||
|
||||
|
||||
# Project
|
||||
# from .models import Profile
|
||||
from rowingdata import rowingdata
|
||||
@@ -34,10 +40,17 @@ from rowers.models import Rower,Workout
|
||||
from rowers.models import checkworkoutuser
|
||||
import dataprep
|
||||
from dataprep import columndict
|
||||
from utils import uniqify,isprorower
|
||||
from utils import uniqify,isprorower,myqueue
|
||||
from uuid import uuid4
|
||||
import stravalib
|
||||
from stravalib.exc import ActivityUploadFailed,TimeoutExceeded
|
||||
import iso8601
|
||||
from iso8601 import ParseError
|
||||
|
||||
import pytz
|
||||
import arrow
|
||||
|
||||
from rowers.tasks import handle_strava_import_stroke_data
|
||||
|
||||
from rowsandall_app.settings import C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET, STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET
|
||||
|
||||
@@ -46,28 +59,8 @@ try:
|
||||
except ImportError:
|
||||
JSONDecodeError = ValueError
|
||||
|
||||
# Exponentially weighted moving average
|
||||
# Used for data smoothing of the jagged data obtained by Strava
|
||||
# See bitbucket issue 72
|
||||
def ewmovingaverage(interval,window_size):
|
||||
# Experimental code using Exponential Weighted moving average
|
||||
|
||||
try:
|
||||
intervaldf = pd.DataFrame({'v':interval})
|
||||
idf_ewma1 = intervaldf.ewm(span=window_size)
|
||||
idf_ewma2 = intervaldf[::-1].ewm(span=window_size)
|
||||
|
||||
i_ewma1 = idf_ewma1.mean().ix[:,'v']
|
||||
i_ewma2 = idf_ewma2.mean().ix[:,'v']
|
||||
|
||||
interval2 = np.vstack((i_ewma1,i_ewma2[::-1]))
|
||||
interval2 = np.mean( interval2, axis=0) # average
|
||||
except ValueError:
|
||||
interval2 = interval
|
||||
|
||||
return interval2
|
||||
|
||||
from utils import geo_distance
|
||||
from utils import geo_distance,ewmovingaverage
|
||||
|
||||
|
||||
# Custom exception handler, returns a 401 HTTP message
|
||||
@@ -154,13 +147,17 @@ def get_strava_workout_list(user):
|
||||
|
||||
def add_stroke_data(user,stravaid,workoutid,startdatetime,csvfilename):
|
||||
r = Rower.objects.get(user=user)
|
||||
|
||||
print 'Queueing job for workout {workoutid} (strava {stravaid})'.format(
|
||||
workoutid=workoutid,
|
||||
stravaid=stravaid)
|
||||
|
||||
starttimeunix = arrow.get(startdatetime).timestamp
|
||||
|
||||
job = myqueue(queue,
|
||||
handle_strava_import_stroke_data,
|
||||
r.stravatoken,
|
||||
stravid,
|
||||
stravaid,
|
||||
workoutid,
|
||||
starttimeunix,
|
||||
csvfilename)
|
||||
@@ -187,16 +184,14 @@ def get_strava_workouts(rower):
|
||||
])
|
||||
newids = [stravaid for stravaid in stravaids if not stravaid in knownstravaids]
|
||||
|
||||
print newids,'aap'
|
||||
|
||||
for stravaid in newids:
|
||||
for stravaid in newids[:1]:
|
||||
workoutid = create_async_workout(alldata,rower.user,stravaid)
|
||||
|
||||
return 1
|
||||
|
||||
def create_async_workout(alldata,user,stravaid):
|
||||
data = alldata[stravid]
|
||||
|
||||
data = alldata[stravaid]
|
||||
r = Rower.objects.get(user=user)
|
||||
distance = data['distance']
|
||||
stravaid = data['id']
|
||||
try:
|
||||
@@ -240,6 +235,14 @@ def create_async_workout(alldata,user,stravaid):
|
||||
except:
|
||||
title = 'Imported'
|
||||
|
||||
workoutdate = rowdatetime.astimezone(
|
||||
pytz.timezone(thetimezone)
|
||||
).strftime('%Y-%m-%d')
|
||||
|
||||
starttime = rowdatetime.astimezone(
|
||||
pytz.timezone(thetimezone)
|
||||
).strftime('%H:%m:%S')
|
||||
|
||||
totaltime = data['elapsed_time']
|
||||
duration = dataprep.totaltime_sec_to_string(totaltime)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user