Private
Public Access
1
0

Merge branch 'release/v6.95'

This commit is contained in:
Sander Roosendaal
2018-06-21 13:50:39 +02:00
5 changed files with 91 additions and 88 deletions
+25 -72
View File
@@ -34,6 +34,7 @@ from rowingdata import (
MysteryParser, BoatCoachOTWParser,QuiskeParser,
painsledDesktopParser, speedcoachParser, ErgStickParser,
SpeedCoach2Parser, FITParser, fitsummarydata,
RitmoTimeParser,
make_cumvalues,cumcpdata,ExcelTemplate,
summarydata, get_file_type,
)
@@ -1088,77 +1089,37 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
return (w.id, message)
parsers = {
'xls': ExcelTemplate,
'rp': RowProParser,
'tcx':TCXParser,
'mystery':MysteryParser,
'ritmotime':RitmoTimeParser,
'quiske': QuiskeParser,
'rowperfect3': RowPerfectParser,
'coxmate': CoxMateParser,
'bcmike': BoatCoachAdvancedParser,
'boatcoach': BoatCoachParser,
'boatcoachotw': BoatCoachOTWParser,
'painsleddesktop': painsledDesktopParser,
'speedcoach': speedcoachParser,
'speedcoach2': SpeedCoach2Parser,
'ergstick': ErgStickParser,
'fit': FITParser,
'ergdata': ErgDataParser,
}
def parsenonpainsled(fileformat,f2,summary):
# handle RowPro:
if (fileformat == 'xls'):
row = ExcelTemplate(f2)
hasrecognized = True
if (fileformat == 'rp'):
row = RowProParser(f2)
hasrecognized = True
# handle TCX
if (fileformat == 'tcx'):
row = TCXParser(f2)
hasrecognized = True
# handle Mystery
if (fileformat == 'mystery'):
row = MysteryParser(f2)
try:
row = parsers[fileformat](f2)
hasrecognized = True
except KeyError:
hasrecognized = False
# handle Quiske
if (fileformat == 'quiske'):
row = QuiskeParser(f2)
hasrecognized = True
# handle RowPerfect
if (fileformat == 'rowperfect3'):
row = RowPerfectParser(f2)
hasrecognized = True
# handle ErgData
if (fileformat == 'ergdata'):
row = ErgDataParser(f2)
hasrecognized = True
# handle CoxMate
if (fileformat == 'coxmate'):
row = CoxMateParser(f2)
hasrecognized = True
# handle Mike
if (fileformat == 'bcmike'):
row = BoatCoachAdvancedParser(f2)
hasrecognized = True
# handle BoatCoach
if (fileformat == 'boatcoach'):
row = BoatCoachParser(f2)
hasrecognized = True
# handle BoatCoach OTW
if (fileformat == 'boatcoachotw'):
row = BoatCoachOTWParser(f2)
hasrecognized = True
# handle painsled desktop
if (fileformat == 'painsleddesktop'):
row = painsledDesktopParser(f2)
hasrecognized = True
# handle speed coach GPS
if (fileformat == 'speedcoach'):
row = speedcoachParser(f2)
hasrecognized = True
# handle speed coach GPS 2
if (fileformat == 'speedcoach2'):
row = SpeedCoach2Parser(f2)
hasrecognized = True
oarlength, inboard = get_empower_rigging(f2)
empowerfirmware = get_empower_firmware(f2)
if empowerfirmware != '':
@@ -1168,15 +1129,8 @@ def parsenonpainsled(fileformat,f2,summary):
summary = row.allstats()
# handle ErgStick
if (fileformat == 'ergstick'):
row = ErgStickParser(f2)
hasrecognized = True
# handle FIT
if (fileformat == 'fit'):
row = FITParser(f2)
hasrecognized = True
try:
s = fitsummarydata(f2)
s.setsummary()
@@ -1317,7 +1271,6 @@ def new_workout_from_file(r, f2,
return (0, message, '')
except Exception as e:
errorstring = str(sys.exc_info()[0])
print e.message
message = 'Something went wrong: ' + e.message
return (0, message, '')
+22 -2
View File
@@ -2114,7 +2114,7 @@ def interactive_streamchart(id=0,promember=0):
return [script,div]
def interactive_chart(id=0,promember=0):
def interactive_chart(id=0,promember=0,intervaldata = {}):
# Add hover to this comma-separated string and see what changes
if (promember==1):
TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,resize,crosshair'
@@ -2219,6 +2219,26 @@ def interactive_chart(id=0,promember=0):
plot.add_layout(LinearAxis(y_range_name="spmax",axis_label="SPM"),'right')
plot.legend.location = "bottom_right"
# add shaded bar chart areas
if intervaldata:
intervaldf = pd.DataFrame(intervaldata)
intervaldf['itime'] = intervaldf['itime']*1.e3
intervaldf['time'] = intervaldf['itime'].cumsum()
intervaldf['time_r'] = intervaldf['time'] +intervaldf['itime'].shift(-1)
intervaldf['value'] = 10
mask = intervaldf['itype'] == 3
intervaldf.loc[mask,'value'] = 45
intervaldf['bottom'] = 10
intervalsource = ColumnDataSource(
intervaldf
)
plot.quad(left='time',top='value',bottom='bottom',
right='time_r',source=intervalsource,color='pink',
y_range_name='spmax',fill_alpha=0.2,line_alpha=0.2)
script, div = components(plot)
@@ -3398,7 +3418,7 @@ def thumbnail_flex_chart(rowdata,id=0,promember=0,
try:
tseconds = rowdata.ix[:,'time']
except KeyError:
return '','No time data - cannot make flex plot','',''
return '','No time data - cannot make flex plot'
try:
+16 -5
View File
@@ -1641,12 +1641,23 @@ class VirtualRaceResult(models.Model):
u1 = rr.user.first_name,
u2 = rr.user.last_name,
)
return u'Entry for {n} for "{r}" in {c} {d}'.format(
n = name,
r = self.race,
d = self.boattype,
c = self.boatclass,
if self.teamname:
return u'Entry for {n} for "{r}" in {c} {d} with {t} ({s})'.format(
n = name,
r = self.race,
d = self.boattype,
c = self.boatclass,
t = self.teamname,
s = self.sex,
)
else:
return u'Entry for {n} for "{r}" in {c} {d} ({s})'.format(
n = name,
r = self.race,
d = self.boattype,
c = self.boatclass,
s = self.sex,
)
class CourseTestResult(models.Model):
+2
View File
@@ -164,9 +164,11 @@
{% csrf_token %}
<input type="hidden" name="{{ savebutton }}" value="{{ intervalstring }}">
<input type="hidden" name="nrintervals" value={{ nrintervals }}>
{% localize off %}
{% for key,value in formvalues.items %}
<input type="hidden" name="{{ key }}" value="{{ value }}">
{% endfor %}
{% endlocalize %}
{% for field in detailform %}
{{ field.as_hidden }}
{% endfor %}
+26 -9
View File
@@ -11286,13 +11286,6 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
return HttpResponse("Error: CSV Data File Not Found")
nrintervals = len(idist)
# create interactive plot
try:
res = interactive_chart(id,promember=1)
script = res[0]
div = res[1]
except ValueError:
pass
savebutton = 'nosavebutton'
formvalues = {}
@@ -11305,13 +11298,21 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
try:
avpace = datetime.timedelta(seconds=int(500./normv))
except:
avpage = datetime.timedelta(seconds=130)
avpace = datetime.timedelta(seconds=130)
data = {
'power': int(normp),
'pace': avpace,
'selector': normp,
'selector': 'power',
}
powerorpace = 'power'
if normp == 0:
data['selector'] = 'pace'
powerorpace = 'pace'
powerupdateform = PowerIntervalUpdateForm(initial=data)
@@ -11568,6 +11569,22 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
detailform = IntervalUpdateForm(aantal=nrintervals,initial=initial)
# create interactive plot
try:
intervaldata = {
'itime':itime,
'idist':idist,
'itype':itype,
'selector': powerorpace,
'normp': normp,
'normv': normv,
}
res = interactive_chart(id,promember=1,intervaldata=intervaldata)
script = res[0]
div = res[1]
except ValueError:
pass
# render page
return render(request, 'summary_edit.html',