Private
Public Access
1
0

Merge branch 'release/v16.2.1'

This commit is contained in:
Sander Roosendaal
2021-05-15 16:03:38 +02:00
5 changed files with 28 additions and 7 deletions
+2 -1
View File
@@ -51,7 +51,7 @@ import arrow
thetimezone = get_current_timezone() thetimezone = get_current_timezone()
from rowingdata import ( from rowingdata import (
TCXParser, RowProParser, ErgDataParser, TCXParser, RowProParser, ErgDataParser,
CoxMateParser, CoxMateParser, HeroParser,
BoatCoachParser, RowPerfectParser, BoatCoachAdvancedParser, BoatCoachParser, RowPerfectParser, BoatCoachAdvancedParser,
ETHParser, ETHParser,
MysteryParser, BoatCoachOTWParser,QuiskeParser, MysteryParser, BoatCoachOTWParser,QuiskeParser,
@@ -1828,6 +1828,7 @@ parsers = {
'humon': HumonParser, 'humon': HumonParser,
'eth': ETHParser, 'eth': ETHParser,
'nklinklogbook': NKLiNKLogbookParser, 'nklinklogbook': NKLiNKLogbookParser,
'hero': HeroParser,
} }
def parsenonpainsled(fileformat,f2,summary,startdatetime='',empowerfirmware=None,inboard=None,oarlength=None): def parsenonpainsled(fileformat,f2,summary,startdatetime='',empowerfirmware=None,inboard=None,oarlength=None):
+6 -2
View File
@@ -1850,7 +1850,7 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
outids = [] outids = []
workouts = Workout.objects.filter(user=user.rower,date__gte=startdate, workouts = Workout.objects.filter(user=user.rower,date__gte=startdate-datetime.timedelta(days=90),
date__lte=enddate, date__lte=enddate,
workouttype__in=mytypes.rowtypes, workouttype__in=mytypes.rowtypes,
duplicate=False).order_by('date') duplicate=False).order_by('date')
@@ -1869,7 +1869,8 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
dates, dates,
testpower,testduration, testpower,testduration,
impulses, impulses,
startdate,enddate, startdate-datetime.timedelta(days=90),
enddate,
user,metricchoice, user,metricchoice,
kfatigue,kfitness) kfatigue,kfitness)
@@ -1900,6 +1901,9 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7,
df.sort_values(['date'],inplace=True) df.sort_values(['date'],inplace=True)
df = df.groupby(['date']).max() df = df.groupby(['date']).max()
df['date'] = df.index.values df['date'] = df.index.values
mask = df['date'] > np.datetime64(startdate)
df = df.loc[mask]
source = ColumnDataSource( source = ColumnDataSource(
+3
View File
@@ -383,6 +383,9 @@ def async_get_workout(user,stravaid):
# Get a Strava workout summary data and stroke data by ID # Get a Strava workout summary data and stroke data by ID
def get_workout(user,stravaid,do_async=False): def get_workout(user,stravaid,do_async=False):
if do_async:
res = async_get_workout(user,stravaid)
return {},pd.DataFrame()
try: try:
thetoken = strava_open(user) thetoken = strava_open(user)
except NoTokenError: # pragma: no cover except NoTokenError: # pragma: no cover
+1 -1
View File
@@ -34,7 +34,7 @@
{% for workout in workouts %} {% for workout in workouts %}
<tr> <tr>
<td> <td>
<a href="/rowers/workout/stravaimport/{{ workout|lookup:'id' }}/">Import</a></td> <a href="/rowers/workout/stravaimport/{{ workout|lookup:'id' }}/async/">Import</a></td>
<td>{{ workout|lookup:'name' }}</td> <td>{{ workout|lookup:'name' }}</td>
<td>{{ workout|lookup:'starttime' }}</td> <td>{{ workout|lookup:'starttime' }}</td>
<td>{{ workout|lookup:'duration' }} </td> <td>{{ workout|lookup:'duration' }} </td>
+15 -2
View File
@@ -2008,6 +2008,18 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
'page':page, 'page':page,
}) })
importlistviews = {
'c2':'workout_c2import_view',
'strava':'workout_stravaimport_view',
'polar':'workout_polarimport_view',
'ownapi':'workout_view',
'runkeeper':'workout_runkeeperimport_view',
'sporttracks':'workout_sporttracksimport_view',
'trainingpeaks':'workout_view',
'underarmour':'workout_underarmourimport_view',
'nk':'workout_nkimport_view',
}
importsources = { importsources = {
'c2':c2stuff, 'c2':c2stuff,
'strava':stravastuff, 'strava':stravastuff,
@@ -2018,7 +2030,7 @@ importsources = {
'trainingpeaks':tpstuff, 'trainingpeaks':tpstuff,
'underarmour':underarmourstuff, 'underarmour':underarmourstuff,
'nk':nkstuff, 'nk':nkstuff,
} }
@login_required() @login_required()
def workout_getrp3importview(request,externalid): def workout_getrp3importview(request,externalid):
@@ -2049,7 +2061,8 @@ def workout_getimportview(request,externalid,source = 'c2',do_async=False):
if do_async: # pragma: no cover if do_async: # pragma: no cover
messages.info(request,"Your workout will be imported in the background") messages.info(request,"Your workout will be imported in the background")
url = reverse('workouts_view') # this should return to the respective import list page
url = reverse(importlistviews[source])
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
if not data: # pragma: no cover if not data: # pragma: no cover