diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 6885e341..56ce5fc4 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1586,9 +1586,9 @@ def rdata(file, rower=rrower()): try: res = rrdata(csvfile=file + '.gz', rower=rower) except IOError, IndexError: - res = 0 + res = rrdata() except: - res = 0 + res = rrdata() return res @@ -1637,7 +1637,7 @@ def getrowdata_db(id=0, doclean=False, convertnewtons=True): if data.empty: rowdata, row = getrowdata(id=id) - if rowdata: + if not rowdata.empty: data = dataprep(rowdata.df, id=id, bands=True, barchart=True, otwpower=True) else: @@ -1645,7 +1645,8 @@ def getrowdata_db(id=0, doclean=False, convertnewtons=True): else: row = Workout.objects.get(id=id) - if data['efficiency'].mean() == 0 and data['power'].mean() != 0: + + if not data.empty and data['efficiency'].mean() == 0 and data['power'].mean() != 0: data = add_efficiency(id=id) if doclean: diff --git a/rowers/serializers.py b/rowers/serializers.py index c552e2ed..3e94f954 100644 --- a/rowers/serializers.py +++ b/rowers/serializers.py @@ -21,6 +21,7 @@ class RowerSerializer(serializers.HyperlinkedModelSerializer): 'tr', 'an', 'ftp', + 'sex', ) class FavoriteChartSerializer(serializers.ModelSerializer): @@ -52,6 +53,13 @@ class WorkoutSerializer(serializers.ModelSerializer): 'maxhr', 'notes', 'summary', + 'boattype', + 'timezone', + 'forceunit', + 'inboard', + 'oarlength', + 'privacy', + 'rankingpiece' ) def create(self, validated_data): @@ -78,7 +86,13 @@ class WorkoutSerializer(serializers.ModelSerializer): summary=validated_data['summary'], averagehr=validated_data['averagehr'], maxhr=validated_data['maxhr'], - startdatetime=rowdatetime) + startdatetime=rowdatetime, + timezone=validated_data['timezone'], + forceunit=validated_data['forceunit'], + inboard=validated_data['inboard'], + oarlength=validated_data['oarlength'], + privacy=validated_data['privacy'], + rankingpiece=validated_data['rankingpiece'],) w.save() return w @@ -104,6 +118,13 @@ class WorkoutSerializer(serializers.ModelSerializer): instance.averagehr=validated_data['averagehr'] instance.maxhr=validated_data['maxhr'] instance.startdatetime=rowdatetime + instance.timezone=validated_data['timezone'] + instance.forceunit=validated_data['forceunit'] + instance.inboard=validated_data['inboard'] + instance.oarlength=validated_data['oarlength'] + instance.privacy=validated_data['privacy'] + instance.rankingpiece=validated_data['rankingpiece'] + instance.save() return instance diff --git a/rowers/templates/developers.html b/rowers/templates/developers.html index 32c6ee98..f5c61712 100644 --- a/rowers/templates/developers.html +++ b/rowers/templates/developers.html @@ -203,6 +203,12 @@
  • peakdriveforce: Peak handle force (lbs)
  • lapidx: Lap identifier
  • hr: Heart rate (beats per minute)
  • +
  • wash: Wash as defined per Empower oarlock (degrees)
  • +
  • catch: Catch angle per Empower oarlock (degrees)
  • +
  • finish: Finish angle per Empower oarlock (degrees)
  • +
  • peakforceangle: Peak Force Angle per Empower oarlock (degrees)
  • +
  • slip: Wash as defined per Empower oarlock (degrees)
  • +

    Consistency checks will be done and the stroke data will be diff --git a/rowers/templates/strokedata_form.html b/rowers/templates/strokedata_form.html index 34cabb57..c7ad8d3a 100644 --- a/rowers/templates/strokedata_form.html +++ b/rowers/templates/strokedata_form.html @@ -11,7 +11,7 @@

    Stroke Data for workout {{ id }}

    -
    + {{ form.as_table }}
    diff --git a/rowers/views.py b/rowers/views.py index 07be1758..6d2da7c3 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -11480,7 +11480,10 @@ def strokedatajson(request,id): df.index = df.index.astype(int) df.sort_index(inplace=True) # time, hr, pace, spm, power, drivelength, distance, drivespeed, dragfactor, strokerecoverytime, averagedriveforce, peakdriveforce, lapidx - time = df['time']/1.e3 + try: + time = df['time']/1.e3 + except KeyError: + return HttpResponse("There must be time values",status=400) aantal = len(time) pace = df['pace']/1.e3 if len(pace) != aantal: @@ -11505,14 +11508,20 @@ def strokedatajson(request,id): strokerecoverytime = trydf(df,aantal,'strokerecoverytime') averagedriveforce = trydf(df,aantal,'averagedriveforce') peakdriveforce = trydf(df,aantal,'peakdriveforce') + wash = trydf(df,aantal,'wash') + catch = trydf(df,aantal,'catch') + finish = trydf(df,aantal,'finish') + peakforceangle = trydf(df,aantal,'peakforceangle') + driveenergy = trydf(df,aantal,'driveenergy') + slip = trydf(df,aantal,'slip') lapidx = trydf(df,aantal,'lapidx') hr = trydf(df,aantal,'hr') - starttime = totimestamp(row.startdatetime)+time + starttime = totimestamp(row.startdatetime)+time[0] unixtime = starttime+time with open('media/apilog.log','a') as logfile: - logfile.write(starttime+": ") + logfile.write(str(starttime)+": ") logfile.write(request.user.username+"(POST) \r\n") data = pd.DataFrame({'TimeStamp (sec)':unixtime, @@ -11529,10 +11538,18 @@ def strokedatajson(request,id): ' PeakDriveForce (lbs)':peakdriveforce, ' lapIdx':lapidx, ' ElapsedTime (sec)':time, + 'catch':catch, + 'slip':slip, + 'finish':finish, + 'wash':wash, + 'driveenergy':driveenergy, + 'peakforceangle':peakforceangle, }) # Following part should be replaced with dataprep.new_workout_from_df - + + r = getrower(request.user) + timestr = row.startdatetime.strftime("%Y%m%d-%H%M%S") csvfilename ='media/Import_'+timestr+'.csv' @@ -11541,7 +11558,6 @@ def strokedatajson(request,id): row.csvfilename = csvfilename row.save() - r = getrower(request.user) powerperc = 100*np.array([r.pw_ut2, r.pw_ut1, r.pw_at,