change file name for calendar download
This commit is contained in:
@@ -1,177 +0,0 @@
|
|||||||
#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, RequestFactory
|
|
||||||
|
|
||||||
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, multi_compare_view
|
|
||||||
|
|
||||||
from rowers.forms import (
|
|
||||||
DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail,
|
|
||||||
ChartParamChoiceForm,WorkoutMultipleCompareForm)
|
|
||||||
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 django.contrib.sessions.middleware import SessionMiddleware
|
|
||||||
|
|
||||||
from redis import StrictRedis
|
|
||||||
redis_connection = StrictRedis()
|
|
||||||
|
|
||||||
from django_mailbox.models import Mailbox,MessageAttachment,Message
|
|
||||||
|
|
||||||
from rowers.tests.mocks import *
|
|
||||||
|
|
||||||
from rowers.models import *
|
|
||||||
from rowers.tests.mocks import *
|
|
||||||
import factory
|
|
||||||
from faker import Factory
|
|
||||||
|
|
||||||
faker = Factory.create()
|
|
||||||
|
|
||||||
filename = 'rowers/tests/testdata/testdata.csv'
|
|
||||||
|
|
||||||
row = rdata(filename)
|
|
||||||
totaldist = row.df['cum_dist'].max()
|
|
||||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
|
||||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
|
||||||
|
|
||||||
|
|
||||||
hours = int(totaltime/3600.)
|
|
||||||
minutes = int((totaltime - 3600.*hours)/60.)
|
|
||||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
|
||||||
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
|
|
||||||
|
|
||||||
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
|
||||||
duration = datetime.time(hour=hours,minute=minutes,second=seconds)
|
|
||||||
|
|
||||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
|
||||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
|
||||||
|
|
||||||
nu = datetime.datetime.now()
|
|
||||||
|
|
||||||
class UserFactory(factory.DjangoModelFactory):
|
|
||||||
class Meta:
|
|
||||||
model = User
|
|
||||||
|
|
||||||
email = faker.email()
|
|
||||||
username = faker.profile()['username']
|
|
||||||
|
|
||||||
first_name = faker.name().split(' ')[0]
|
|
||||||
last_name = faker.name().split(' ')[0]
|
|
||||||
|
|
||||||
class WorkoutFactory(factory.DjangoModelFactory):
|
|
||||||
class Meta:
|
|
||||||
model = Workout
|
|
||||||
|
|
||||||
name = factory.LazyAttribute(lambda _: faker.word())
|
|
||||||
notes = faker.text()
|
|
||||||
startdatetime = row.rowdatetime
|
|
||||||
starttime = workoutstarttime
|
|
||||||
workouttype='water'
|
|
||||||
date=timezone.now().date()
|
|
||||||
duration=duration
|
|
||||||
distance=totaldist
|
|
||||||
csvfilename=filename
|
|
||||||
|
|
||||||
class ModelObjectsTest(TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
self.u = UserFactory()
|
|
||||||
|
|
||||||
self.r = Rower.objects.create(user=self.u,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True,
|
|
||||||
gdproptindate=timezone.now(),
|
|
||||||
rowerplan='coach')
|
|
||||||
|
|
||||||
self.c = Client()
|
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.password = faker.word()
|
|
||||||
self.u.set_password(self.password)
|
|
||||||
self.u.save()
|
|
||||||
|
|
||||||
@patch('rowers.dataprep.create_engine')
|
|
||||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
|
||||||
def test_workouts_compare(self, mocked_sqlalchemy,
|
|
||||||
mocked_getsmallrowdata_db):
|
|
||||||
|
|
||||||
login = self.c.login(username=self.u.username, password=self.password)
|
|
||||||
self.assertTrue(login)
|
|
||||||
|
|
||||||
url = '/rowers/team-compare-select/workout/1/team/0/user/1/'
|
|
||||||
|
|
||||||
response = self.c.get(url)
|
|
||||||
self.assertEqual(response.status_code,200)
|
|
||||||
|
|
||||||
@patch('rowers.dataprep.create_engine')
|
|
||||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
|
||||||
def test_workouts_compare_submit(self, mocked_sqlalchemy,
|
|
||||||
mocked_getsmallrowdata_db):
|
|
||||||
|
|
||||||
login = self.c.login(username=self.u.username,password=self.password)
|
|
||||||
self.assertTrue(login)
|
|
||||||
|
|
||||||
form_data = {
|
|
||||||
'chartform':'Compare',
|
|
||||||
'plottype':'scatter',
|
|
||||||
'teamid':0,
|
|
||||||
'workouts':['1','2','3'],
|
|
||||||
'xparam':'distance',
|
|
||||||
'yparam':'hr',
|
|
||||||
}
|
|
||||||
|
|
||||||
form = WorkoutMultipleCompareForm(form_data)
|
|
||||||
chartform = ChartParamChoiceForm(form_data)
|
|
||||||
self.assertTrue(form.is_valid)
|
|
||||||
self.assertTrue(chartform.is_valid)
|
|
||||||
|
|
||||||
# request = self.factory.post('/rowers/multi-compare/')
|
|
||||||
# request.user = self.u
|
|
||||||
# request.POST = form_data
|
|
||||||
|
|
||||||
# SessionMiddleware().process_request(request)
|
|
||||||
|
|
||||||
# request.session['ids'] = []
|
|
||||||
|
|
||||||
# response = multi_compare_view(request)
|
|
||||||
|
|
||||||
# self.assertEqual(response.status_code, 200)
|
|
||||||
|
|
||||||
response = self.c.post('/rowers/multi-compare/',form_data)
|
|
||||||
|
|
||||||
self.assertEqual(response.status_code,200)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,48 +1,210 @@
|
|||||||
from django.test import TestCase
|
#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, RequestFactory
|
||||||
|
|
||||||
|
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, multi_compare_view
|
||||||
|
|
||||||
|
from rowers.forms import (
|
||||||
|
DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail,
|
||||||
|
ChartParamChoiceForm,WorkoutMultipleCompareForm)
|
||||||
|
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 django.contrib.sessions.middleware import SessionMiddleware
|
||||||
|
|
||||||
|
from redis import StrictRedis
|
||||||
|
redis_connection = StrictRedis()
|
||||||
|
|
||||||
|
from django_mailbox.models import Mailbox,MessageAttachment,Message
|
||||||
|
|
||||||
|
from rowers.tests.mocks import *
|
||||||
|
|
||||||
from rowers.models import *
|
from rowers.models import *
|
||||||
|
from rowers.tests.mocks import *
|
||||||
|
import factory
|
||||||
|
from faker import Factory
|
||||||
|
|
||||||
class FormTests(TestCase):
|
faker = Factory.create()
|
||||||
|
|
||||||
|
filename = 'rowers/tests/testdata/testdata.csv'
|
||||||
|
|
||||||
|
row = rdata(filename)
|
||||||
|
totaldist = row.df['cum_dist'].max()
|
||||||
|
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||||
|
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||||
|
|
||||||
|
|
||||||
|
hours = int(totaltime/3600.)
|
||||||
|
minutes = int((totaltime - 3600.*hours)/60.)
|
||||||
|
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||||
|
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
|
||||||
|
|
||||||
|
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
||||||
|
duration = datetime.time(hour=hours,minute=minutes,second=seconds)
|
||||||
|
|
||||||
|
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||||
|
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||||
|
|
||||||
|
nu = datetime.datetime.now()
|
||||||
|
|
||||||
|
class UserFactory(factory.DjangoModelFactory):
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
|
||||||
|
email = faker.email()
|
||||||
|
username = faker.profile()['username']
|
||||||
|
|
||||||
|
first_name = faker.name().split(' ')[0]
|
||||||
|
last_name = faker.name().split(' ')[0]
|
||||||
|
|
||||||
|
class WorkoutFactory(factory.DjangoModelFactory):
|
||||||
|
class Meta:
|
||||||
|
model = Workout
|
||||||
|
|
||||||
|
name = factory.LazyAttribute(lambda _: faker.word())
|
||||||
|
notes = faker.text()
|
||||||
|
startdatetime = row.rowdatetime
|
||||||
|
starttime = workoutstarttime
|
||||||
|
workouttype='water'
|
||||||
|
date=timezone.now().date()
|
||||||
|
duration=duration
|
||||||
|
distance=totaldist
|
||||||
|
csvfilename=filename
|
||||||
|
|
||||||
|
class SessionFactory(factory.DjangoModelFactory):
|
||||||
|
class Meta:
|
||||||
|
model = PlannedSession
|
||||||
|
|
||||||
|
name = factory.LazyAttribute(lambda _: faker.word())
|
||||||
|
comment = faker.text()
|
||||||
|
|
||||||
|
|
||||||
|
class WorkoutCompareTest(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.u = User.objects.create_user('john',
|
self.u = UserFactory()
|
||||||
'sander@ds.ds',
|
|
||||||
'koeinsloot')
|
self.r = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,
|
||||||
|
gdproptindate=timezone.now(),
|
||||||
|
rowerplan='coach')
|
||||||
|
|
||||||
r = Rower.objects.create(user=self.u)
|
self.c = Client()
|
||||||
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
self.factory = RequestFactory()
|
||||||
def test_form(self):
|
self.password = faker.word()
|
||||||
form = TeamInviteForm()
|
self.u.set_password(self.password)
|
||||||
|
|
||||||
|
|
||||||
class ModelTests(TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
self.u = User.objects.create_user('john',
|
|
||||||
'Sander@ds.ds',
|
|
||||||
'koeinsloot')
|
|
||||||
|
|
||||||
self.u.first_name = 'Sander'
|
|
||||||
self.u.last_name = 'Roosendaal'
|
|
||||||
self.u.save()
|
self.u.save()
|
||||||
|
|
||||||
self.r = Rower.objects.create(user=self.u)
|
@patch('rowers.dataprep.create_engine')
|
||||||
|
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||||
|
def test_workouts_compare(self, mocked_sqlalchemy,
|
||||||
|
mocked_getsmallrowdata_db):
|
||||||
|
|
||||||
def create_team(self):
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
return Team.objects.create(
|
self.assertTrue(login)
|
||||||
name = 'test team',
|
|
||||||
manager = self.u,
|
url = '/rowers/team-compare-select/workout/1/team/0/user/1/'
|
||||||
)
|
|
||||||
|
|
||||||
def create_paidplan(self):
|
response = self.c.get(url)
|
||||||
return PaidPlan.objects.create(
|
self.assertEqual(response.status_code,200)
|
||||||
name = 'test plan',
|
|
||||||
shortname = 'pro',
|
|
||||||
price = 15.0,
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_models(self):
|
@patch('rowers.dataprep.create_engine')
|
||||||
pp = self.create_paidplan()
|
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||||
team = self.create_team()
|
def test_workouts_compare_submit(self, mocked_sqlalchemy,
|
||||||
self.assertEqual(u'%s' % pp,u'test plan - pro at 15.00 EURO (single payment)')
|
mocked_getsmallrowdata_db):
|
||||||
self.assertEqual(u'%s' % self.r, u'Sander Roosendaal')
|
|
||||||
self.assertEqual('%s' % self.r, 'Sander Roosendaal')
|
login = self.c.login(username=self.u.username,password=self.password)
|
||||||
self.assertEqual(self.r.clean_email(),'sander@ds.ds')
|
self.assertTrue(login)
|
||||||
|
|
||||||
|
form_data = {
|
||||||
|
'chartform':'Compare',
|
||||||
|
'plottype':'scatter',
|
||||||
|
'teamid':0,
|
||||||
|
'workouts':['1','2','3'],
|
||||||
|
'xparam':'distance',
|
||||||
|
'yparam':'hr',
|
||||||
|
}
|
||||||
|
|
||||||
|
form = WorkoutMultipleCompareForm(form_data)
|
||||||
|
chartform = ChartParamChoiceForm(form_data)
|
||||||
|
self.assertTrue(form.is_valid)
|
||||||
|
self.assertTrue(chartform.is_valid)
|
||||||
|
|
||||||
|
response = self.c.post('/rowers/multi-compare/',form_data)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
|
||||||
|
class PlannedSessionTests(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.u = UserFactory()
|
||||||
|
|
||||||
|
self.r = Rower.objects.create(user=self.u,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,
|
||||||
|
gdproptindate=timezone.now(),
|
||||||
|
rowerplan='coach')
|
||||||
|
|
||||||
|
self.c = Client()
|
||||||
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.u.set_password(self.password)
|
||||||
|
self.u.save()
|
||||||
|
self.user_sessions = SessionFactory.create_batch(
|
||||||
|
5,
|
||||||
|
manager=self.u,
|
||||||
|
rower=self.r)
|
||||||
|
|
||||||
|
def test_ics_download(self):
|
||||||
|
login = self.c.login(username=self.u.username,password=self.password)
|
||||||
|
self.assertTrue(login)
|
||||||
|
|
||||||
|
response = self.c.get('/rowers/sessions/sendcalendar/')
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
filename = 'training_plan_{u}_{d1}_{d2}.ics'.format(
|
||||||
|
u = self.u.username,
|
||||||
|
d1 = timezone.now().date().strftime("%Y%m%d"),
|
||||||
|
d2 = a_week_from_now.date().strftime("%Y%m%d"),
|
||||||
|
)
|
||||||
|
self.assertEquals(
|
||||||
|
response.get('Content-Disposition'),
|
||||||
|
"attachment; filename={name}".format(name=filename)
|
||||||
|
)
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
@@ -1947,7 +1947,12 @@ def plannedsessions_icsemail_view(request,userid=0):
|
|||||||
|
|
||||||
|
|
||||||
response = HttpResponse(cal.to_ical())
|
response = HttpResponse(cal.to_ical())
|
||||||
response['Content-Disposition'] = 'attachment; filename="training_plan_%s.ics"' % request.user.id
|
response['Content-Disposition'] = 'attachment; filename="training_plan_{u}_{d1}_{d2}.ics"'.format(
|
||||||
|
u = request.user.username,
|
||||||
|
d1 = startdate.strftime("%Y%m%d"),
|
||||||
|
d2 = enddate.strftime("%Y%m%d"),
|
||||||
|
)
|
||||||
|
|
||||||
response['Content-Type'] = 'application/octet-stream'
|
response['Content-Type'] = 'application/octet-stream'
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|||||||
Reference in New Issue
Block a user