383 lines
10 KiB
Python
383 lines
10 KiB
Python
#from __future__ import print_function
|
|
import pytest
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
from bs4 import BeautifulSoup
|
|
import re
|
|
from nose_parameterized import parameterized
|
|
from django.test import TestCase, Client,override_settings
|
|
from django.core.management import call_command
|
|
from django.utils.six import StringIO
|
|
from django.test.client import RequestFactory
|
|
from rowers.views import checkworkoutuser,c2_open
|
|
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
|
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
|
import rowers.plots as plots
|
|
import rowers.interactiveplots as iplots
|
|
import datetime
|
|
from rowingdata import rowingdata as rdata
|
|
from rowingdata import rower as rrower
|
|
from django.utils import timezone
|
|
from rowers.rows import handle_uploaded_file
|
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
from time import strftime,strptime,mktime,time,daylight
|
|
import os
|
|
from rowers.tasks import handle_makeplot
|
|
from rowers.utils import serialize_list,deserialize_list
|
|
from rowers.utils import NoTokenError
|
|
from shutil import copyfile
|
|
from nose.tools import assert_true
|
|
from mock import Mock, patch
|
|
from minimocktest import MockTestCase
|
|
import pandas as pd
|
|
import rowers.c2stuff as c2stuff
|
|
|
|
import json
|
|
import numpy as np
|
|
|
|
from rowers import urls
|
|
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
|
|
|
from rowers.dataprep import delete_strokedata
|
|
|
|
from redis import StrictRedis
|
|
redis_connection = StrictRedis()
|
|
|
|
|
|
#@pytest.mark.django_db
|
|
class PlotTests(TestCase):
|
|
def setUp(self):
|
|
redis_connection.publish('tasks','KILL')
|
|
u = User.objects.create_user('john',
|
|
'sander@ds.ds',
|
|
'koeinsloot')
|
|
r = Rower.objects.create(user=u)
|
|
self.nu = datetime.datetime.now()
|
|
filename = 'rowers/tests/testdata/testdata.csv'
|
|
self.wotw = Workout.objects.create(name='testworkout',
|
|
workouttype='water',
|
|
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
|
starttime=self.nu.strftime('%H:%M:%S'),
|
|
duration="0:55:00",distance=8000,
|
|
csvfilename=filename)
|
|
|
|
self.wote = Workout.objects.create(name='testworkout',
|
|
workouttype='Indoor Rower',
|
|
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
|
starttime=self.nu.strftime('%H:%M:%S'),
|
|
duration="0:55:00",distance=8000,
|
|
csvfilename=filename)
|
|
|
|
# timestr = strftime("%Y%m%d-%H%M%S")
|
|
# imagename = f1+timestr+'.png'
|
|
# fullpathimagename = 'static/plots/'+imagename
|
|
powerperc = 100*np.array([r.pw_ut2,
|
|
r.pw_ut1,
|
|
r.pw_at,
|
|
r.pw_tr,r.pw_an])/r.ftp
|
|
|
|
|
|
self.hrdata = {
|
|
'hrmax':r.max,
|
|
'hrut2':r.ut2,
|
|
'hrut1':r.ut1,
|
|
'hrat':r.at,
|
|
'hrtr':r.tr,
|
|
'hran':r.an,
|
|
'ftp':r.ftp,
|
|
'powerperc':serialize_list(powerperc),
|
|
'powerzones':serialize_list(r.powerzones),
|
|
}
|
|
|
|
@patch('rowers.tasks.rdata')
|
|
@patch('rowers.tasks.FigureCanvas')
|
|
def test_ote_plots(self, mocked_rowingdata, mocked_canvas):
|
|
w = self.wote
|
|
f1 = 'testdata.csv'[:-4]
|
|
timestr = strftime("%Y%m%d-%H%M%S")
|
|
imagename = f1+timestr+'.png'
|
|
fullpathimagename = 'static/plots/'+imagename
|
|
# make plot - asynchronous task
|
|
plotnr = 1
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 1
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 2
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 3
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 4
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 5
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 6
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 7
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 8
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 13
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
@patch('rowers.tasks.rdata')
|
|
@patch('rowers.tasks.FigureCanvas')
|
|
def test_otw_plots(self, mocked_rowingdata, mocked_canvas):
|
|
w = self.wotw
|
|
f1 = 'testdata.csv'[:-4]
|
|
timestr = strftime("%Y%m%d-%H%M%S")
|
|
imagename = f1+timestr+'.png'
|
|
fullpathimagename = 'static/plots/'+imagename
|
|
# make plot - asynchronous task
|
|
plotnr = 1
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 1
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 2
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 3
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 4
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 5
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 6
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 7
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 8
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 9
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|
|
|
|
plotnr = 13
|
|
if (w.workouttype=='water'):
|
|
plotnr = plotnr+3
|
|
|
|
res = handle_makeplot(f1,w.csvfilename,
|
|
w.name,self.hrdata,plotnr,imagename)
|
|
i = GraphImage(workout=w,creationdatetime=self.nu,
|
|
filename=fullpathimagename)
|
|
try:
|
|
os.remove(fullpathimagename)
|
|
except WindowsError:
|
|
pass
|