Private
Public Access
1
0

change file name for calendar download

This commit is contained in:
Sander Roosendaal
2019-01-07 11:38:17 +01:00
parent 0264d47d11
commit 3491de6634
4 changed files with 207 additions and 217 deletions

View File

@@ -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)

View File

@@ -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.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):
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.u = UserFactory()
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)
def test_form(self):
form = TeamInviteForm()
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.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.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):
return Team.objects.create(
name = 'test team',
manager = self.u,
)
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/'
def create_paidplan(self):
return PaidPlan.objects.create(
name = 'test plan',
shortname = 'pro',
price = 15.0,
)
response = self.c.get(url)
self.assertEqual(response.status_code,200)
def test_models(self):
pp = self.create_paidplan()
team = self.create_team()
self.assertEqual(u'%s' % pp,u'test plan - pro at 15.00 EURO (single payment)')
self.assertEqual(u'%s' % self.r, u'Sander Roosendaal')
self.assertEqual('%s' % self.r, 'Sander Roosendaal')
self.assertEqual(self.r.clean_email(),'sander@ds.ds')
@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)
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)
)

Binary file not shown.

View File

@@ -1947,7 +1947,12 @@ def plannedsessions_icsemail_view(request,userid=0):
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'
return response