Strokedata post working (somehow)
This commit is contained in:
@@ -27,6 +27,10 @@ class CNsummaryForm(forms.Form):
|
|||||||
class SummaryStringForm(forms.Form):
|
class SummaryStringForm(forms.Form):
|
||||||
intervalstring = forms.CharField(max_length=255,label='Workout Description')
|
intervalstring = forms.CharField(max_length=255,label='Workout Description')
|
||||||
|
|
||||||
|
class StrokeDataForm(forms.Form):
|
||||||
|
strokedata = forms.CharField(label='payload',
|
||||||
|
widget=forms.Textarea)
|
||||||
|
|
||||||
class DocumentsForm(forms.Form):
|
class DocumentsForm(forms.Form):
|
||||||
filetypechoices = (
|
filetypechoices = (
|
||||||
('csv' , 'Painsled iOS CSV'),
|
('csv' , 'Painsled iOS CSV'),
|
||||||
|
|||||||
25
rowers/templates/strokedata_form.html
Normal file
25
rowers/templates/strokedata_form.html
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}Change Rower {% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% if form.errors %}
|
||||||
|
<p style="color: red;">
|
||||||
|
Please correct the error{{ form.errors|pluralize }} below.
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
<div class="grid_12 alpha">
|
||||||
|
<h1>Stroke Data for workout {{ id }}</h1>
|
||||||
|
|
||||||
|
<form enctype="multipart/form-data" action="/rowers/api/workouts/{{ id }}/strokedata" method="post">
|
||||||
|
<table>
|
||||||
|
{{ form.as_table }}
|
||||||
|
</table>
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="grid_2 prefix_2 suffix_2">
|
||||||
|
<input class="button green" type="submit" value="POST">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -164,7 +164,7 @@ urlpatterns = [
|
|||||||
url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/(?P<plottype>\w+.*)$',views.workout_comparison_view2),
|
url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/(?P<plottype>\w+.*)$',views.workout_comparison_view2),
|
||||||
url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/$',views.workout_comparison_view2),
|
url(r'^workout/compare/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/$',views.workout_comparison_view2),
|
||||||
url(r'^test\_callback',views.rower_process_testcallback),
|
url(r'^test\_callback',views.rower_process_testcallback),
|
||||||
|
url(r'^workout/(\d+)/test\_strokedata$',views.strokedataform),
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from django.utils import timezone,translation
|
|||||||
from django.core.mail import send_mail, BadHeaderError
|
from django.core.mail import send_mail, BadHeaderError
|
||||||
from rowers.forms import EmailForm, RegistrationForm, RegistrationFormTermsOfService,RegistrationFormUniqueEmail,CNsummaryForm,UpdateWindForm,UpdateStreamForm
|
from rowers.forms import EmailForm, RegistrationForm, RegistrationFormTermsOfService,RegistrationFormUniqueEmail,CNsummaryForm,UpdateWindForm,UpdateStreamForm
|
||||||
from rowers.forms import PredictedPieceForm,DateRangeForm,DeltaDaysForm
|
from rowers.forms import PredictedPieceForm,DateRangeForm,DeltaDaysForm
|
||||||
from rowers.forms import SummaryStringForm,IntervalUpdateForm
|
from rowers.forms import SummaryStringForm,IntervalUpdateForm,StrokeDataForm
|
||||||
from rowers.models import Workout, User, Rower, WorkoutForm
|
from rowers.models import Workout, User, Rower, WorkoutForm
|
||||||
from rowers.models import RowerPowerForm,RowerForm,GraphImage,AdvancedWorkoutForm
|
from rowers.models import RowerPowerForm,RowerForm,GraphImage,AdvancedWorkoutForm
|
||||||
import StringIO
|
import StringIO
|
||||||
@@ -51,7 +51,7 @@ from rowingdata import MysteryParser
|
|||||||
from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser
|
from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser
|
||||||
from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata
|
from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata
|
||||||
from rowingdata import make_cumvalues
|
from rowingdata import make_cumvalues
|
||||||
from rowingdata import summarydata,get_file_type,totimestamp
|
from rowingdata import summarydata,get_file_type
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
@@ -4479,6 +4479,11 @@ class JSONResponse(HttpResponse):
|
|||||||
kwargs['content_type'] = 'application/json'
|
kwargs['content_type'] = 'application/json'
|
||||||
super(JSONResponse, self).__init__(content, **kwargs)
|
super(JSONResponse, self).__init__(content, **kwargs)
|
||||||
|
|
||||||
|
def totimestamp(dt, epoch=datetime.datetime(1970,1,1,tzinfo=tz('UTC'))):
|
||||||
|
td = dt - epoch
|
||||||
|
# return td.total_seconds()
|
||||||
|
return (td.microseconds + (td.seconds + td.days * 86400) * 10**6) / 10**6
|
||||||
|
|
||||||
def trydf(df,aantal,column):
|
def trydf(df,aantal,column):
|
||||||
try:
|
try:
|
||||||
s = df[column]
|
s = df[column]
|
||||||
@@ -4491,6 +4496,25 @@ def trydf(df,aantal,column):
|
|||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
@login_required()
|
||||||
|
def strokedataform(request,id=0):
|
||||||
|
if request.method == 'GET':
|
||||||
|
form = StrokeDataForm()
|
||||||
|
return render(request, 'strokedata_form.html',
|
||||||
|
{
|
||||||
|
'form':form,
|
||||||
|
'id':id,
|
||||||
|
})
|
||||||
|
elif request.method == 'POST':
|
||||||
|
form = StrokeDataForm()
|
||||||
|
|
||||||
|
return render(request, 'strokedata_form.html',
|
||||||
|
{
|
||||||
|
'form':form,
|
||||||
|
'id':id,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required()
|
@login_required()
|
||||||
@@ -4515,33 +4539,36 @@ def strokedatajson(request,id):
|
|||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
checkdata,r = dataprep.getrowdata_db(id=row.id)
|
checkdata,r = dataprep.getrowdata_db(id=row.id)
|
||||||
if not checkdata.empty:
|
if not checkdata.empty:
|
||||||
return "Not OK"
|
return "Not OK 1"
|
||||||
strokedata = request.POST['strokedata']
|
# strokedata = request.POST['strokedata']
|
||||||
|
print request.body
|
||||||
|
received_json_data = json.loads(request.body)
|
||||||
# checking/validating and cleaning
|
# checking/validating and cleaning
|
||||||
try:
|
try:
|
||||||
strokedata = json.loads(strokedata)
|
strokedata = json.loads(received_json_data['strokedata'])
|
||||||
except:
|
except:
|
||||||
return HttpResponse("Not OK")
|
return HttpResponse("Not OK 2")
|
||||||
|
|
||||||
try:
|
|
||||||
df = pd.DataFrame(strokedata)
|
df = pd.DataFrame(strokedata)
|
||||||
|
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, hr, pace, spm, power, drivelength, distance, drivespeed, dragfactor, strokerecoverytime, averagedriveforce, peakdriveforce, lapidx
|
||||||
time = df['time']
|
time = df['timesecs']
|
||||||
aantal = len(time)
|
aantal = len(time)
|
||||||
pace = df['pace']
|
pace = df['pseconds']
|
||||||
if len(pace) != aantal:
|
if len(pace) != aantal:
|
||||||
return "Not OK"
|
return "Not OK"
|
||||||
distance = df['distance']
|
distance = df['distance']
|
||||||
if len(distance) != aantal:
|
if len(distance) != aantal:
|
||||||
return "Not OK"
|
return "Not OK 3"
|
||||||
|
|
||||||
spm = df['spm']
|
spm = df['spm']
|
||||||
if len(spm) != aantal:
|
if len(spm) != aantal:
|
||||||
return "Not OK"
|
return "Not OK 4"
|
||||||
|
|
||||||
res = dataprep.testdata(time,distance,pace,spm)
|
res = dataprep.testdata(time,distance,pace,spm)
|
||||||
if not res:
|
if not res:
|
||||||
return HttpResponse("Not OK")
|
return HttpResponse("Not OK 5")
|
||||||
|
|
||||||
power = trydf(df,aantal,'power')
|
power = trydf(df,aantal,'power')
|
||||||
drivelength = trydf(df,aantal,'drivelength')
|
drivelength = trydf(df,aantal,'drivelength')
|
||||||
@@ -4557,7 +4584,7 @@ def strokedatajson(request,id):
|
|||||||
starttime = totimestamp(row.startdatetime)+time
|
starttime = totimestamp(row.startdatetime)+time
|
||||||
unixtime = starttime+time
|
unixtime = starttime+time
|
||||||
|
|
||||||
data = DataFrame({'TimeStamp (sec)':unixtime,
|
data = pd.DataFrame({'TimeStamp (sec)':unixtime,
|
||||||
' Horizontal (meters)': distance,
|
' Horizontal (meters)': distance,
|
||||||
' Cadence (stokes/min)':spm,
|
' Cadence (stokes/min)':spm,
|
||||||
' HRCur (bpm)':hr,
|
' HRCur (bpm)':hr,
|
||||||
@@ -4565,7 +4592,6 @@ def strokedatajson(request,id):
|
|||||||
' Stroke500mPace (sec/500m)':pace,
|
' Stroke500mPace (sec/500m)':pace,
|
||||||
' Power (watts)':power,
|
' Power (watts)':power,
|
||||||
' DriveLength (meters)':drivelength,
|
' DriveLength (meters)':drivelength,
|
||||||
' StrokeDistance (meters)':strokedistance,
|
|
||||||
' DriveTime (ms)':drivetime,
|
' DriveTime (ms)':drivetime,
|
||||||
' StrokeRecoveryTime (ms)':strokerecoverytime,
|
' StrokeRecoveryTime (ms)':strokerecoverytime,
|
||||||
' AverageDriveForce (lbs)':averagedriveforce,
|
' AverageDriveForce (lbs)':averagedriveforce,
|
||||||
@@ -4575,15 +4601,21 @@ def strokedatajson(request,id):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
timestr = time.strftime("%Y%m%d-%H%M%S")
|
timestr = row.startdatetime.strftime("%Y%m%d-%H%M%S")
|
||||||
csvfilename ='media/Import_'+timestr+'.csv'
|
csvfilename ='media/Import_'+timestr+'.csv'
|
||||||
|
|
||||||
res = df.to_csv(csvfilename,index_label='index')
|
res = data.to_csv(csvfilename,index_label='index')
|
||||||
row.csvfilename = csvfilename
|
row.csvfilename = csvfilename
|
||||||
row.save()
|
row.save()
|
||||||
datadf = dataprep.dataprep(data,id=row.id,bands=True,barchart=True,otwpower=True)
|
|
||||||
except:
|
r = Rower.objects.get(user=request.user)
|
||||||
return HttpResponse("Not OK")
|
|
||||||
|
rr = rrower(hrmax=r.max,hrut2=r.ut2,
|
||||||
|
hrut1=r.ut1,hrat=r.at,
|
||||||
|
hrtr=r.tr,hran=r.an,ftp=r.ftp)
|
||||||
|
rowdata = rdata(row.csvfilename,rower=rr).df
|
||||||
|
|
||||||
|
datadf = dataprep.dataprep(rowdata,id=row.id,bands=True,barchart=True,otwpower=True)
|
||||||
# mangling
|
# mangling
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user