Merge branch 'release/v6.71'
This commit is contained in:
@@ -318,9 +318,9 @@
|
|||||||
|
|
||||||
{% if workouts.has_next %}
|
{% if workouts.has_next %}
|
||||||
{% if request.GET.q %}
|
{% if request.GET.q %}
|
||||||
<a class="wh" href="?page={{ workouts.next_page_number }}&q={{ request.GET.q }}">></a>
|
<a class="wh" href="{{ startdate|date:"Y-m-d" }}/{{ enddate|date:"Y-m-d" }}?page={{ workouts.next_page_number }}&q={{ request.GET.q }}">></a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="wh" href="?page={{ workouts.next_page_number }}">></a>
|
<a class="wh" href="{{ startdate|date:"Y-m-d" }}/{{ enddate|date:"Y-m-d" }}?page={{ workouts.next_page_number }}">></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
+37
-13
@@ -9,6 +9,7 @@ import requests.auth
|
|||||||
import json
|
import json
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from datetime import datetime,timedelta
|
from datetime import datetime,timedelta
|
||||||
|
import arrow
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
import time
|
import time
|
||||||
@@ -239,7 +240,11 @@ def createunderarmourworkoutdata(w):
|
|||||||
except:
|
except:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
st = w.startdatetime.astimezone(pytz.timezone(w.timezone))
|
||||||
|
start_time = st.isoformat()
|
||||||
|
|
||||||
averagehr = int(row.df[' HRCur (bpm)'].mean())
|
averagehr = int(row.df[' HRCur (bpm)'].mean())
|
||||||
|
averagespm = int(row.df[' Cadence (stokes/min)'].mean()/2.)
|
||||||
maxhr = int(row.df[' HRCur (bpm)'].max())
|
maxhr = int(row.df[' HRCur (bpm)'].max())
|
||||||
duration = w.duration.hour*3600
|
duration = w.duration.hour*3600
|
||||||
duration += w.duration.minute*60
|
duration += w.duration.minute*60
|
||||||
@@ -253,31 +258,42 @@ def createunderarmourworkoutdata(w):
|
|||||||
|
|
||||||
# adding diff, trying to see if this is valid
|
# adding diff, trying to see if this is valid
|
||||||
#t = row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
#t = row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)']
|
||||||
t = row.df.ix[:,'TimeStamp (sec)'].values-row.df.ix[0,'TimeStamp (sec)']
|
t = row.df.ix[:,'TimeStamp (sec)'].values #-row.df.ix[0,'TimeStamp (sec)']
|
||||||
t[0] = t[1]
|
|
||||||
|
# t += arrow.get(st).timestamp
|
||||||
|
|
||||||
|
# t[0] = t[1]
|
||||||
|
|
||||||
d = row.df.ix[:,'cum_dist'].values
|
d = row.df.ix[:,'cum_dist'].values
|
||||||
d[0] = d[1]
|
d[0] = d[1]
|
||||||
t = t.astype(int)
|
t = t.astype(float)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
d = d.astype(int)
|
d = d.astype(int)
|
||||||
spm = row.df[' Cadence (stokes/min)'].astype(int)
|
spm = row.df[' Cadence (stokes/min)'].astype(int)
|
||||||
spm[0] = spm[1]
|
spm[0] = spm[1]
|
||||||
hr = row.df[' HRCur (bpm)'].astype(int)
|
hr = row.df[' HRCur (bpm)'].astype(int)
|
||||||
|
speed = row.df[' AverageBoatSpeed (m/s)']
|
||||||
|
speed = speed.replace(np.inf,0)
|
||||||
|
|
||||||
haslatlon=1
|
haslatlon=1
|
||||||
|
|
||||||
try:
|
try:
|
||||||
lat = row.df[' latitude'].values
|
lat = row.df[' latitude']
|
||||||
lon = row.df[' longitude'].values
|
lon = row.df[' longitude']
|
||||||
if not lat.std() and not lon.std():
|
if not lat.std() and not lon.std():
|
||||||
haslatlon = 0
|
haslatlon = 0
|
||||||
except KeyError:
|
except KeyError:
|
||||||
haslatlon = 0
|
haslatlon = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# path data
|
# path data
|
||||||
if haslatlon:
|
if haslatlon:
|
||||||
locdata = []
|
locdata = []
|
||||||
for e in zip(t,lat,lon):
|
for e in zip(t,lat.values,lon.values):
|
||||||
point = {
|
point = {
|
||||||
'lat':e[1],
|
'lat':e[1],
|
||||||
'lng':e[2],
|
'lng':e[2],
|
||||||
@@ -303,8 +319,6 @@ def createunderarmourworkoutdata(w):
|
|||||||
for e in zip(t,spm):
|
for e in zip(t,spm):
|
||||||
spmdata.append([e[0],e[1]])
|
spmdata.append([e[0],e[1]])
|
||||||
|
|
||||||
st = w.startdatetime.astimezone(pytz.timezone(w.timezone))
|
|
||||||
start_time = st.isoformat()
|
|
||||||
|
|
||||||
timeseries = {
|
timeseries = {
|
||||||
"distance": distancedata,
|
"distance": distancedata,
|
||||||
@@ -312,22 +326,32 @@ def createunderarmourworkoutdata(w):
|
|||||||
"cadence": spmdata,
|
"cadence": spmdata,
|
||||||
}
|
}
|
||||||
|
|
||||||
aggregrates = {
|
|
||||||
|
aggregates = {
|
||||||
"elapsed_time_total": int(duration),
|
"elapsed_time_total": int(duration),
|
||||||
|
"active_time_total": int(duration),
|
||||||
"distance_total": int(max(d)),
|
"distance_total": int(max(d)),
|
||||||
"heartrate_avg": averagehr,
|
"heartrate_avg": averagehr,
|
||||||
"heart_rate_min": int(min(hr)),
|
"heart_rate_min": int(min(hr)),
|
||||||
"heart_rate_max": int(max(hr)),
|
"heart_rate_max": int(max(hr)),
|
||||||
|
"speed_min": speed.min().astype(float),
|
||||||
|
"speed_max": speed.max().astype(float),
|
||||||
|
"speed_avg": speed.mean(),
|
||||||
|
"cadence_min": int(min(spm)/2.),
|
||||||
|
"cadence_max": int(max(spm)/2.),
|
||||||
|
"cadence_avg": averagespm,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# if haslatlon:
|
if haslatlon:
|
||||||
# timeseries["position"] = locdata
|
timeseries["position"] = locdata
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"name": name,
|
|
||||||
"start_datetime": start_time,
|
"start_datetime": start_time,
|
||||||
|
"name": name,
|
||||||
|
"has_time_series": True,
|
||||||
"time_series": timeseries,
|
"time_series": timeseries,
|
||||||
|
"aggregates": aggregates,
|
||||||
"start_locale_timezone": "Etc/UTC",
|
"start_locale_timezone": "Etc/UTC",
|
||||||
"activity_type": "/v7.1/activity_type/128/",
|
"activity_type": "/v7.1/activity_type/128/",
|
||||||
"notes": notes,
|
"notes": notes,
|
||||||
|
|||||||
+12
-8
@@ -2242,7 +2242,6 @@ def workout_underarmour_upload_view(request,id=0):
|
|||||||
|
|
||||||
if (checkworkoutuser(request.user,w)):
|
if (checkworkoutuser(request.user,w)):
|
||||||
data = underarmourstuff.createunderarmourworkoutdata(w)
|
data = underarmourstuff.createunderarmourworkoutdata(w)
|
||||||
# return HttpResponse(json.dumps(data))
|
|
||||||
if not data:
|
if not data:
|
||||||
message = "Data error"
|
message = "Data error"
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
@@ -2262,6 +2261,7 @@ def workout_underarmour_upload_view(request,id=0):
|
|||||||
url = "https://api.ua.com/v7.1/workout/"
|
url = "https://api.ua.com/v7.1/workout/"
|
||||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||||
|
|
||||||
|
|
||||||
# check for duplicate error first
|
# check for duplicate error first
|
||||||
if (response.status_code == 409 ):
|
if (response.status_code == 409 ):
|
||||||
message = "Duplicate error"
|
message = "Duplicate error"
|
||||||
@@ -2276,7 +2276,7 @@ def workout_underarmour_upload_view(request,id=0):
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
else:
|
else:
|
||||||
s = response
|
s = response
|
||||||
message = "Something went wrong in workout_underarmour_upload_view: %s - %s" % (s.reason,s.text)
|
message = "Something went wrong in workout_underarmour_upload_view: %s " % s.reason
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
else:
|
else:
|
||||||
message = "You are not authorized to upload this workout"
|
message = "You are not authorized to upload this workout"
|
||||||
@@ -7091,7 +7091,7 @@ def workout_downloadmetar_view(request,id=0,
|
|||||||
|
|
||||||
starttimeunix = arrow.get(row.startdatetime).timestamp
|
starttimeunix = arrow.get(row.startdatetime).timestamp
|
||||||
#starttimeunix = int(mktime(startdatetime.utctimetuple()))
|
#starttimeunix = int(mktime(startdatetime.utctimetuple()))
|
||||||
avgtime = starttimeunix+avgtime
|
avgtime = starttimeunix +avgtime
|
||||||
winddata = get_metar_data(airportcode,avgtime)
|
winddata = get_metar_data(airportcode,avgtime)
|
||||||
windspeed = winddata[0]
|
windspeed = winddata[0]
|
||||||
windbearing = winddata[1]
|
windbearing = winddata[1]
|
||||||
@@ -9076,12 +9076,16 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
|
|||||||
rankingpiece = form.cleaned_data['rankingpiece']
|
rankingpiece = form.cleaned_data['rankingpiece']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
rankingpiece =- Workout.objects.get(id=id).rankingpiece
|
rankingpiece =- Workout.objects.get(id=id).rankingpiece
|
||||||
|
|
||||||
startdatetime = (str(date) + ' ' + str(starttime))
|
|
||||||
startdatetime = datetime.datetime.strptime(startdatetime,
|
|
||||||
"%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
startdatetime = startdatetime.replace(tzinfo=pytz.timezone(thetimezone))
|
startdatetime = datetime.datetime.combine(
|
||||||
|
date,starttime
|
||||||
|
)
|
||||||
|
|
||||||
|
startdatetime = pytz.timezone(thetimezone).localize(
|
||||||
|
startdatetime
|
||||||
|
)
|
||||||
|
|
||||||
|
print startdatetime
|
||||||
try:
|
try:
|
||||||
# aware object can be in any timezone
|
# aware object can be in any timezone
|
||||||
out = startdatetime.astimezone(pytz.utc)
|
out = startdatetime.astimezone(pytz.utc)
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ def get_metar_data(airportcode,unixtime):
|
|||||||
url += str(unixtime+3600)
|
url += str(unixtime+3600)
|
||||||
url += "&stationString="+airportcode
|
url += "&stationString="+airportcode
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
s = requests.get(url)
|
s = requests.get(url)
|
||||||
except:
|
except:
|
||||||
|
|||||||
Reference in New Issue
Block a user