Merge branch 'develop' into feature/restapi
This commit is contained in:
@@ -244,7 +244,8 @@ def smalldataprep(therows,xparam,yparam1,yparam2):
|
||||
return df
|
||||
|
||||
|
||||
def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True):
|
||||
def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True,
|
||||
empower=True):
|
||||
rowdatadf.set_index([range(len(rowdatadf))],inplace=True)
|
||||
t = rowdatadf.ix[:,'TimeStamp (sec)']
|
||||
t = pd.Series(t-rowdatadf.ix[0,'TimeStamp (sec)'])
|
||||
@@ -338,6 +339,28 @@ def dataprep(rowdatadf,id=0,bands=True,barchart=True,otwpower=True):
|
||||
|
||||
data['x_right'] = x_right
|
||||
|
||||
if empower:
|
||||
try:
|
||||
wash = rowdatadf.ix[:,'wash']
|
||||
catch = rowdatadf.ix[:,'catch']
|
||||
finish = rowdatadf.ix[:,'finish']
|
||||
peakforce = rowdatadf.ix[:'peakforce']
|
||||
averageforce = rowdatadf.ix[:'averageforce']
|
||||
peakforceangle = rowdatadf.ix[:,'peakforceangle']
|
||||
driveenergy = rowdatadf.ix[:,'driveenergy']
|
||||
drivelength = driveenergy/(averageforce*4.44822)
|
||||
slip = rowdatadf.ix[:,'slip']
|
||||
data['wash'] = wash
|
||||
data['catch'] = catch
|
||||
data['slip'] = slip
|
||||
data['finish'] = finish
|
||||
data['peakforceangle'] = peakforceangle
|
||||
data['driveenergy'] = driveenergy
|
||||
data['peakforce'] = peakforce
|
||||
data['averageforce'] = averageforce
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
if otwpower:
|
||||
try:
|
||||
nowindpace = rowdatadf.ix[:,'nowindpace']
|
||||
|
||||
@@ -11,7 +11,7 @@ from rowingdata import rower as rrower
|
||||
from rowingdata import main as rmain
|
||||
from rowingdata import rowingdata as rrdata
|
||||
from rowingdata import TCXParser,RowProParser,ErgDataParser,TCXParserNoHR
|
||||
from rowingdata import MysteryParser
|
||||
from rowingdata import MysteryParser,BoatCoachParser
|
||||
from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser
|
||||
from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata
|
||||
from rowingdata import make_cumvalues
|
||||
@@ -131,6 +131,10 @@ def make_new_workout_from_email(rr,f2,name,cntr=0):
|
||||
if (fileformat == 'ergdata'):
|
||||
row = ErgDataParser('media/'+f2)
|
||||
|
||||
# handle BoatCoach
|
||||
if (fileformat == 'boatcoach'):
|
||||
row = BoatCoachParser('media/'+f2)
|
||||
|
||||
# handle painsled desktop
|
||||
if (fileformat == 'painsleddesktop'):
|
||||
row = painsledDesktopParser('media/'+f2)
|
||||
|
||||
@@ -77,7 +77,6 @@ class Rower(models.Model):
|
||||
|
||||
team = models.ForeignKey(Team,blank=True,null=True)
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return self.user.username
|
||||
|
||||
@@ -192,7 +191,12 @@ class StrokeData(models.Model):
|
||||
equivergpower = models.FloatField(null=True)
|
||||
fergpace = models.CharField(max_length=30)
|
||||
fnowindpace = models.CharField(max_length=30)
|
||||
|
||||
catch = models.FloatField(default=0,null=True)
|
||||
slip = models.FloatField(default=0,null=True)
|
||||
finish = models.FloatField(default=0,null=True)
|
||||
wash = models.FloatField(default=0,null=True)
|
||||
peakforceangle = models.FloatField(default=0,null=True)
|
||||
|
||||
class GraphImage(models.Model):
|
||||
filename = models.CharField(default='',max_length=150,blank=True,null=True)
|
||||
creationdatetime = models.DateTimeField()
|
||||
|
||||
@@ -659,6 +659,37 @@ class ViewTest(TestCase):
|
||||
f_to_be_deleted = w.csvfilename
|
||||
os.remove(f_to_be_deleted)
|
||||
|
||||
def test_upload_view_SpeedCoach2v127(self):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
filename = 'C:\\python\\rowingdata\\testdata\\SpeedCoach2Linkv1.27.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
|
||||
form_data = {
|
||||
'title':'test',
|
||||
'workouttype':'water',
|
||||
'notes':'aap noot mies',
|
||||
'make_plot':False,
|
||||
'upload_to_c2':False,
|
||||
'plottype':'timeplot',
|
||||
'file': f,
|
||||
}
|
||||
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
os.remove(f_to_be_deleted)
|
||||
|
||||
|
||||
def test_upload_view_TCX_NoHR(self):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
@@ -851,6 +882,33 @@ class ViewTest(TestCase):
|
||||
f_to_be_deleted = w.csvfilename
|
||||
os.remove(f_to_be_deleted)
|
||||
|
||||
def test_upload_view_sled_boatcoach(self):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
filename = 'C:\\python\\rowingdata\\testdata\\boatcoach.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': f}
|
||||
form_data = {
|
||||
'title':'test',
|
||||
'workouttype':'rower',
|
||||
'notes':'aap noot mies',
|
||||
'make_plot':False,
|
||||
'upload_to_c2':False,
|
||||
'plottype':'timeplot',
|
||||
'file': f,
|
||||
}
|
||||
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/1/edit',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
w = Workout.objects.get(id=1)
|
||||
f_to_be_deleted = w.csvfilename
|
||||
os.remove(f_to_be_deleted)
|
||||
|
||||
def test_upload_view_sled_ergstick(self):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ from rowers.permissions import IsOwnerOrNot,IsOwnerOrReadOnly
|
||||
from rowers.serializers import WorkoutSerializer,RowerSerializer
|
||||
|
||||
class WorkoutViewSet(viewsets.ModelViewSet):
|
||||
queryset = Workout.objects.all().order_by("-date", "-starttime")
|
||||
queryset = Workout.objects.none().order_by("-date", "-starttime")
|
||||
serializer_class = WorkoutSerializer
|
||||
permission_classes = (IsOwnerOrNot,)
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ from rowingdata import rower as rrower
|
||||
from rowingdata import main as rmain
|
||||
from rowingdata import rowingdata as rrdata
|
||||
from rowingdata import TCXParser,RowProParser,ErgDataParser,TCXParserNoHR
|
||||
from rowingdata import BoatCoachParser
|
||||
from rowingdata import MysteryParser
|
||||
from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser
|
||||
from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata
|
||||
@@ -3567,6 +3568,10 @@ def workout_upload_view(request,message=""):
|
||||
if (fileformat == 'ergdata'):
|
||||
row = ErgDataParser(f2)
|
||||
|
||||
# handle BoatCoach
|
||||
if (fileformat == 'boatcoach'):
|
||||
row = BoatCoachParser(f2)
|
||||
|
||||
# handle painsled desktop
|
||||
if (fileformat == 'painsleddesktop'):
|
||||
row = painsledDesktopParser(f2)
|
||||
@@ -3855,6 +3860,10 @@ def workout_upload_view_debug(request,message=""):
|
||||
if (fileformat == 'ergdata'):
|
||||
row = ErgDataParser(f2)
|
||||
|
||||
# handle BoatCoach
|
||||
if (fileformat == 'boatcoach'):
|
||||
row = BoatCoachParser(f2)
|
||||
|
||||
|
||||
# handle painsled desktop
|
||||
if (fileformat == 'painsleddesktop'):
|
||||
|
||||
Reference in New Issue
Block a user