diff --git a/.gitignore b/.gitignore
index 665c5589..76ae82ca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,9 @@ conftest.py
# static plots
/static/plots
+# temporary test files
+/rowers/tests/testdata/temp
+
# Python egg metadata, regenerated from source files by setuptools.
*.egg-info
diff --git a/rowers/templates/gdpr_optin.html b/rowers/templates/gdpr_optin.html
index e9a37507..a5a68a63 100644
--- a/rowers/templates/gdpr_optin.html
+++ b/rowers/templates/gdpr_optin.html
@@ -34,7 +34,7 @@
- Download your data
+ Download your data
diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py
index dab559fd..ed8022f7 100644
--- a/rowers/tests/mocks.py
+++ b/rowers/tests/mocks.py
@@ -140,6 +140,10 @@ def mocked_read_df_cols_sql(ids, columns, convertnewtons=True):
return df, extracols
+def mock_workout_summaries(*args, **kwargs):
+ df = pd.read_csv('rowers/tests/testdata/workout_summaries.csv')
+ return df
+
def mocked_read_df_cols_sql_multi(ids, columns, convertnewtons=True):
df = pd.read_csv('rowers/tests/testdata/fake_strokedata2.csv')
extracols = []
diff --git a/rowers/tests/statements.py b/rowers/tests/statements.py
index 6c58038c..ec4d5e5c 100644
--- a/rowers/tests/statements.py
+++ b/rowers/tests/statements.py
@@ -58,12 +58,83 @@ from django_mailbox.models import Mailbox,MessageAttachment,Message
from rowers.tests.mocks import *
+from nose.tools import assert_raises
+
from rowers.models import *
from rowers.forms import *
from rowers.tests.mocks import *
import factory
from faker import Factory
-
+from uuid import uuid4
faker = Factory.create()
+from rowers.utils import calculate_age
+
+from rowers.tasks import handle_getagegrouprecords
+
+def get_random_file(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')
+
+ extension = filename[-3:]
+
+ newfilename = 'rowers/tests/testdata/temp/'+uuid4().hex[:16]+'.'+extension
+ copyfile(filename,newfilename)
+
+ thedict = {
+ 'row':row,
+ 'filename':newfilename,
+ 'startdatetime': row.rowdatetime,
+ 'starttime': workoutstarttime,
+ 'date': workoutdate,
+ 'duration':duration,
+ 'totaldist':totaldist,
+ }
+
+ return thedict
+
+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 = get_random_file()['startdatetime']
+ starttime = get_random_file()['starttime']
+ workouttype='water'
+ date=timezone.now().date()
+ duration=get_random_file()['duration']
+ distance=get_random_file()['totaldist']
+ csvfilename=get_random_file()['filename']
+
+class SessionFactory(factory.DjangoModelFactory):
+ class Meta:
+ model = PlannedSession
+
+ name = factory.LazyAttribute(lambda _: faker.word())
+ comment = faker.text()
diff --git a/rowers/tests/test_admin.py b/rowers/tests/test_admin.py
index 230c6221..ec94c415 100644
--- a/rowers/tests/test_admin.py
+++ b/rowers/tests/test_admin.py
@@ -21,6 +21,8 @@ redis_connection = StrictRedis()
from rowers.models import User,Rower
+from statements import *
+
@pytest.mark.django_db
class AdminTests(TestCase):
def setUp(self):
diff --git a/rowers/tests/test_cpchart.py b/rowers/tests/test_cpchart.py
index b904cf20..164277bb 100644
--- a/rowers/tests/test_cpchart.py
+++ b/rowers/tests/test_cpchart.py
@@ -1,63 +1,8 @@
from statements import *
-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()
-from rowers.tasks import handle_getagegrouprecords
-
-from rowers.utils import calculate_age
-
-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
- rankingpiece = False
-
-class SessionFactory(factory.DjangoModelFactory):
- class Meta:
- model = PlannedSession
-
- name = factory.LazyAttribute(lambda _: faker.word())
- comment = faker.text()
-
class CPChartTest(TestCase):
def setUp(self):
self.u = UserFactory()
@@ -108,6 +53,12 @@ class CPChartTest(TestCase):
)
perf.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
def test_analytics_page(self):
login = self.c.login(username=self.u.username,password=self.password)
diff --git a/rowers/tests/test_empower.py b/rowers/tests/test_empower.py
index 5bd1feb5..9b0abcd8 100644
--- a/rowers/tests/test_empower.py
+++ b/rowers/tests/test_empower.py
@@ -1,66 +1,7 @@
#from __future__ import print_function
-import pytest
-pytestmark = pytest.mark.django_db
+from statements import *
-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,
- BoxPlotChoiceForm)
-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 rowers.plannedsessions import get_dates_timeperiod
-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 django.conf import settings
-from importlib import import_module
-
-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 *
class EmpowerTest(TestCase):
def setUp(self):
diff --git a/rowers/tests/test_errorpages.py b/rowers/tests/test_errorpages.py
index 9f6514f9..57ea66b0 100644
--- a/rowers/tests/test_errorpages.py
+++ b/rowers/tests/test_errorpages.py
@@ -1,49 +1,5 @@
#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()
-
+from statements import *
#@pytest.mark.django_db
diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py
index 115484f9..cfc12ddf 100644
--- a/rowers/tests/test_imports.py
+++ b/rowers/tests/test_imports.py
@@ -1,57 +1,9 @@
#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, modify_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 statements import *
+nu = datetime.datetime.now()
import rowers
-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()
-
-from django_mailbox.models import Mailbox,MessageAttachment,Message
-
-from rowers.tests.mocks import *
-
@pytest.mark.django_db
class C2Objects(DjangoTestCase):
def setUp(self):
diff --git a/rowers/tests/test_interactivecharts.py b/rowers/tests/test_interactivecharts.py
index 8472fad0..ca59164a 100644
--- a/rowers/tests/test_interactivecharts.py
+++ b/rowers/tests/test_interactivecharts.py
@@ -1,50 +1,7 @@
#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 rowers.tests.mocks import *
-
-from redis import StrictRedis
-redis_connection = StrictRedis()
+from statements import *
+nu = datetime.datetime.now()
class InteractiveChartTest(TestCase):
def setUp(self):
diff --git a/rowers/tests/test_misc.py b/rowers/tests/test_misc.py
index c73f355f..2e88f4c8 100644
--- a/rowers/tests/test_misc.py
+++ b/rowers/tests/test_misc.py
@@ -1,49 +1,7 @@
#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()
+from statements import *
+nu = datetime.datetime.now()
diff --git a/rowers/tests/test_models.py b/rowers/tests/test_models.py
index d633fc0b..1d9bd11f 100644
--- a/rowers/tests/test_models.py
+++ b/rowers/tests/test_models.py
@@ -1,56 +1,8 @@
from statements import *
-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):
@@ -70,6 +22,13 @@ class WorkoutCompareTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_workouts_compare(self, mocked_sqlalchemy,
@@ -128,6 +87,13 @@ class BoxPlotTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_workouts_boxplot(self, mocked_sqlalchemy,
@@ -216,6 +182,13 @@ class ListWorkoutTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db')
def test_list_workouts(self, mocked_sqlalchemy,
@@ -265,6 +238,13 @@ class PlannedSessionTests(TestCase):
session.rower.add(self.r)
session.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
def test_ics_download(self):
login = self.c.login(username=self.u.username,password=self.password)
self.assertTrue(login)
@@ -303,6 +283,13 @@ class ForcecurveTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.getsmallrowdata_db',side_effect = mocked_getempowerdata_db)
def test_forcecurve_plot(self, mocked_getsmallrowdata_db):
login = self.c.login(username=self.u.username, password = self.password)
@@ -330,6 +317,13 @@ class CumFlexTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multiflex)
def test_cumflex(self, mocked_df):
login = self.c.login(username=self.u.username, password=self.password)
@@ -426,6 +420,13 @@ class MultiFlexTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multiflex)
def test_multiflex(self, mocked_df):
login = self.c.login(username=self.u.username, password=self.password)
@@ -519,6 +520,13 @@ class HistoTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
@patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getpowerdata_db)
def test_histo_workouts(self, mocked_sqlalchemy,
diff --git a/rowers/tests/test_newusers.py b/rowers/tests/test_newusers.py
index ac918b40..c6224e5b 100644
--- a/rowers/tests/test_newusers.py
+++ b/rowers/tests/test_newusers.py
@@ -1,49 +1,7 @@
#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()
+from statements import *
+nu = datetime.datetime.now()
#@pytest.mark.django_db
class NewUserRegistrationTest(TestCase):
@@ -51,7 +9,14 @@ class NewUserRegistrationTest(TestCase):
self.c = Client()
redis_connection.publish('tasks','KILL')
- def test_newuser(self):
+ def tearDown(self):
+ try:
+ os.remove('rowsandall_workouts_2018-01-01_2019_2019-01-01.csv')
+ except:
+ pass
+
+ @patch('rowers.dataprep.workout_summary_to_df',side_effect=mock_workout_summaries)
+ def test_newuser(self,mock_workout_summaries):
form_data = {
'first_name':'Jan',
'last_name':'Roeiert',
@@ -75,3 +40,44 @@ class NewUserRegistrationTest(TestCase):
self.assertRedirects(response,
expected_url='/rowers/me/gdpr-optin/?next=/rowers/list-workouts/',
status_code=302,target_status_code=200)
+
+
+ url = '/rowers/me/gdpr-optin-confirm/?next=/rowers/list-workouts/'
+
+ response = self.c.get(url)
+
+ self.assertRedirects(response,
+ expected_url='/rowers/list-workouts/',
+ status_code=302,target_status_code=200,
+ )
+
+ url = '/rowers/exportallworkouts/'
+
+ response = self.c.get(url,follow=True)
+
+
+ self.assertTrue(response.status_code,200)
+
+
+ form_data = {
+ 'startdate':'2018-01-01',
+ 'enddate':'2019-01-01'
+ }
+
+ response = self.c.post(url,form_data)
+
+ self.assertTrue(response.status_code,200)
+
+ url = '/rowers/me/delete/'
+
+ form_data = {
+ 'delete_user':True,
+ }
+
+ response = self.c.post(url,form_data,follow=True)
+ self.assertRedirects(response,
+ expected_url='/login/',
+ status_code=302,target_status_code=200)
+
+
+
diff --git a/rowers/tests/test_settings.py b/rowers/tests/test_settings.py
index eaae77d6..7f38d0a1 100644
--- a/rowers/tests/test_settings.py
+++ b/rowers/tests/test_settings.py
@@ -1,48 +1,6 @@
#from __future__ import print_function
-import pytest
+from statements import *
-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 DataTest(TestCase):
diff --git a/rowers/tests/test_simplefunctions.py b/rowers/tests/test_simplefunctions.py
index 560dcca0..18e5fa94 100644
--- a/rowers/tests/test_simplefunctions.py
+++ b/rowers/tests/test_simplefunctions.py
@@ -1,62 +1,10 @@
from statements import *
-from nose.tools import assert_raises
-
-from rowers.views import get_workout
-
-from django.http import Http404
-from django.core.exceptions import PermissionDenied
-
-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
+from django.http import Http404
- 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()
+from rowers.views import get_workout
# tests simple functions from views.py
class SimpleViewTest(TestCase):
@@ -76,6 +24,13 @@ class SimpleViewTest(TestCase):
self.u.set_password(self.password)
self.u.save()
+ def tearDown(self):
+ for workout in self.user_workouts:
+ try:
+ os.remove(workout.csvfilename)
+ except (IOError, WindowsError):
+ pass
+
def test_getrequestrower(self):
user_no_rower = UserFactory(username='norower')
user_no_rower.set_password(faker.word())
diff --git a/rowers/tests/test_staticcharts.py b/rowers/tests/test_staticcharts.py
index 130c0c74..c7bae989 100644
--- a/rowers/tests/test_staticcharts.py
+++ b/rowers/tests/test_staticcharts.py
@@ -1,48 +1,6 @@
#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()
+from statements import *
+nu = datetime.datetime.now()
#@pytest.mark.django_db
diff --git a/rowers/tests/test_teams.py b/rowers/tests/test_teams.py
index 62deb412..51ac041f 100644
--- a/rowers/tests/test_teams.py
+++ b/rowers/tests/test_teams.py
@@ -2,61 +2,8 @@ from statements import *
nu = datetime.datetime.now()
-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')
-
from rowers.teams import *
-# add following tests:
-# - when member leaves team, his name should be removed from planned sessions
-
-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 TeamFactory(factory.DjangoModelFactory):
class Meta:
model = Team
@@ -66,7 +13,7 @@ class TeamFactory(factory.DjangoModelFactory):
private = 'open'
viewing = 'allmembers'
-class TeamCreateFactory(TestCase):
+class TeamCreateTest(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
self.user_passwords = []
@@ -79,6 +26,7 @@ class TeamCreateFactory(TestCase):
'user6',
]
self.users = []
+ self.csvfilenames = []
for i in range(6):
u = UserFactory(username=usernames[i])
@@ -101,6 +49,8 @@ class TeamCreateFactory(TestCase):
workouts = WorkoutFactory.create_batch(5, user=r)
+ for w in workouts:
+ self.csvfilenames.append(w.csvfilename)
self.c = Client()
@@ -110,6 +60,12 @@ class TeamCreateFactory(TestCase):
self.t = TeamFactory(manager=self.u)
+ def tearDown(self):
+ for csvfilename in self.csvfilenames:
+ try:
+ os.remove(csvfilename)
+ except (IOError, WindowsError):
+ pass
def test_teamview(self):
login = self.c.login(username=self.u.username, password = self.password)
diff --git a/rowers/tests/test_uploads.py b/rowers/tests/test_uploads.py
index 903c6476..dc117cb2 100644
--- a/rowers/tests/test_uploads.py
+++ b/rowers/tests/test_uploads.py
@@ -1,54 +1,8 @@
#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,
- add_defaultfavorites
- )
-
-from rowers.dataprep import delete_strokedata
-
-from redis import StrictRedis
-redis_connection = StrictRedis()
-
-from rowers.tests.mocks import *
+from statements import *
+nu = datetime.datetime.now()
+from rowers.views import add_defaultfavorites
#@pytest.mark.django_db
class ViewTest(TestCase):
diff --git a/rowers/tests/test_urls.py b/rowers/tests/test_urls.py
index 9bf036fc..b59f6cd2 100644
--- a/rowers/tests/test_urls.py
+++ b/rowers/tests/test_urls.py
@@ -1,48 +1,6 @@
#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 rowers.tests.mocks import *
-from redis import StrictRedis
-redis_connection = StrictRedis()
+from statements import *
+nu = datetime.datetime.now()
tested = [
diff --git a/rowers/tests/test_user.py b/rowers/tests/test_user.py
index e7426321..b9fbbff5 100644
--- a/rowers/tests/test_user.py
+++ b/rowers/tests/test_user.py
@@ -1,24 +1,7 @@
#from __future__ import print_function
-import pytest
+from statements import *
+nu = datetime.datetime.now()
-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
-import datetime
-from django.utils import timezone
-
-import json
-import numpy as np
-import rowers.dataprep as dataprep
-
-from redis import StrictRedis
-redis_connection = StrictRedis()
from rowingdata import rowingdata as rdata
from rowingdata import rower as rrower
diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz
index f1981d59..c75c7c7a 100644
Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ
diff --git a/rowers/tests/testdata/testdata.tcx b/rowers/tests/testdata/testdata.tcx
index 6d39a75d..b11f47ac 100644
--- a/rowers/tests/testdata/testdata.tcx
+++ b/rowers/tests/testdata/testdata.tcx
@@ -2502,7 +2502,7 @@
- <Element 'Notes' at 0x1b9cb518>
+ <Element 'Notes' at 0x154aea90>
diff --git a/rowers/tests/testdata/workout_summaries.csv b/rowers/tests/testdata/workout_summaries.csv
new file mode 100644
index 00000000..89a83cd0
--- /dev/null
+++ b/rowers/tests/testdata/workout_summaries.csv
@@ -0,0 +1,544 @@
+,Stroke Data CSV,Stroke Data TCX,TRIMP Training Load,TSS Training Load,adaptive classification,date,distance (m),duration ,name,notes,timezone,type,weight (kg),weight category
+0,https://rowsandall.com/rowers/workout/2542/emailcsv,https://rowsandall.com/rowers/workout/2542/emailtcx,0,0,None,1970-01-01 00:00:00+00:00,9578,00:47:55.400000,Test Auto Sync Pro User,,Europe/Prague,rower,80.0,lwt
+1,https://rowsandall.com/rowers/workout/2500/emailcsv,https://rowsandall.com/rowers/workout/2500/emailtcx,0,0,None,2014-02-26 20:32:33+00:00,65,00:00:02,Sample Workout JSON,,UTC,water,80.0,lwt
+2,https://rowsandall.com/rowers/workout/3033/emailcsv,https://rowsandall.com/rowers/workout/3033/emailtcx,95,264,None,2015-06-02 06:29:02+00:00,14002,00:59:37.700000,Test P,,Europe/Prague,water,80.0,hwt
+3,https://rowsandall.com/rowers/workout/2501/emailcsv,https://rowsandall.com/rowers/workout/2501/emailtcx,0,0,None,2016-04-02 08:15:08+00:00,10269,01:05:24,Completed a workout (generic) 6.35 mi on 04/02/16,,Europe/Prague,water,80.0,lwt
+4,https://rowsandall.com/rowers/workout/3094/emailcsv,https://rowsandall.com/rowers/workout/3094/emailtcx,40,30,None,2016-06-03 16:55:18.471090+00:00,6063,00:32:28.900000,Tim,,Europe/Prague,rower,80.0,hwt
+5,https://rowsandall.com/rowers/workout/3095/emailcsv,https://rowsandall.com/rowers/workout/3095/emailtcx,7,0,None,2016-07-28 11:35:01+00:00,751,00:02:50,test fut,,Europe/Prague,water,80.0,hwt
+6,https://rowsandall.com/rowers/workout/2408/emailcsv,https://rowsandall.com/rowers/workout/2408/emailtcx,0,0,None,2016-07-30 08:40:36+00:00,1001,00:03:41,Comparison,,Europe/Berlin,rower,80.0,lwt
+7,https://rowsandall.com/rowers/workout/3253/emailcsv,https://rowsandall.com/rowers/workout/3253/emailtcx,20,0,PR1,2016-07-30 10:13:03+00:00,2440,00:14:31.500000,Test,,Europe/Prague,rower,80.0,hwt
+8,https://rowsandall.com/rowers/workout/3032/emailcsv,https://rowsandall.com/rowers/workout/3032/emailtcx,0,0,None,2016-07-31 12:35:01+00:00,1111,00:04:32.700000,,,Europe/Prague,water,80.0,hwt
+9,https://rowsandall.com/rowers/workout/3096/emailcsv,https://rowsandall.com/rowers/workout/3096/emailtcx,11,0,None,2016-07-31 12:35:01+00:00,1111,00:04:32.700000,SC Test,,Europe/Prague,water,80.0,hwt
+10,https://rowsandall.com/rowers/workout/2572/emailcsv,https://rowsandall.com/rowers/workout/2572/emailtcx,0,0,None,2016-11-28 08:37:02+00:00,499,00:01:58,BC,,Europe/Prague,rower,80.0,lwt
+11,https://rowsandall.com/rowers/workout/2379/emailcsv,https://rowsandall.com/rowers/workout/2379/emailtcx,0,0,None,2017-10-27 16:14:42+00:00,742,00:02:25,Test Weba,,Europe/Prague,water,80.0,lwt
+12,https://rowsandall.com/rowers/workout/2380/emailcsv,https://rowsandall.com/rowers/workout/2380/emailtcx,0,0,None,2017-10-27 16:14:42+00:00,742,00:02:25,Test Weba,,Europe/Belgrade,water,80.0,lwt
+13,https://rowsandall.com/rowers/workout/2521/emailcsv,https://rowsandall.com/rowers/workout/2521/emailtcx,0,0,None,2017-11-09 09:15:32+00:00,49842,02:19:37,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+14,https://rowsandall.com/rowers/workout/2524/emailcsv,https://rowsandall.com/rowers/workout/2524/emailtcx,0,0,None,2017-11-09 09:15:32+00:00,49842,02:19:37,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+15,https://rowsandall.com/rowers/workout/2527/emailcsv,https://rowsandall.com/rowers/workout/2527/emailtcx,0,0,None,2017-11-09 09:15:32+00:00,49842,02:19:37,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+16,https://rowsandall.com/rowers/workout/2531/emailcsv,https://rowsandall.com/rowers/workout/2531/emailtcx,0,0,None,2017-11-09 09:15:32+00:00,49842,02:19:37,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+17,https://rowsandall.com/rowers/workout/2523/emailcsv,https://rowsandall.com/rowers/workout/2523/emailtcx,0,0,None,2017-11-09 15:15:32+00:00,0,02:28:28,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+18,https://rowsandall.com/rowers/workout/2526/emailcsv,https://rowsandall.com/rowers/workout/2526/emailtcx,0,0,None,2017-11-09 15:15:32+00:00,0,02:28:28,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+19,https://rowsandall.com/rowers/workout/2529/emailcsv,https://rowsandall.com/rowers/workout/2529/emailtcx,0,0,None,2017-11-09 15:15:32+00:00,0,02:28:28,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+20,https://rowsandall.com/rowers/workout/2533/emailcsv,https://rowsandall.com/rowers/workout/2533/emailtcx,0,0,None,2017-11-09 15:15:32+00:00,0,02:28:28,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+21,https://rowsandall.com/rowers/workout/2520/emailcsv,https://rowsandall.com/rowers/workout/2520/emailtcx,0,0,None,2017-11-09 18:15:32+00:00,10016,01:06:03,Polar Import,,Europe/Helsinki,rower,80.0,lwt
+22,https://rowsandall.com/rowers/workout/2522/emailcsv,https://rowsandall.com/rowers/workout/2522/emailtcx,0,0,None,2017-11-09 18:15:32+00:00,10016,01:06:03,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+23,https://rowsandall.com/rowers/workout/2525/emailcsv,https://rowsandall.com/rowers/workout/2525/emailtcx,0,0,None,2017-11-09 18:15:32+00:00,10016,01:06:03,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+24,https://rowsandall.com/rowers/workout/2528/emailcsv,https://rowsandall.com/rowers/workout/2528/emailtcx,0,0,None,2017-11-09 18:15:32+00:00,10016,01:06:03,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+25,https://rowsandall.com/rowers/workout/2532/emailcsv,https://rowsandall.com/rowers/workout/2532/emailtcx,0,0,None,2017-11-09 18:15:32+00:00,10016,01:06:03,Import from Polar Flow,imported through email,Europe/Helsinki,water,80.0,lwt
+26,https://rowsandall.com/rowers/workout/2494/emailcsv,https://rowsandall.com/rowers/workout/2494/emailtcx,0,0,None,2017-11-12 10:25:00+00:00,10526,00:44:01.700000,Race,,Europe/Rome,water,80.0,lwt
+27,https://rowsandall.com/rowers/workout/2496/emailcsv,https://rowsandall.com/rowers/workout/2496/emailtcx,0,0,None,2017-11-12 10:25:00+00:00,10526,00:44:01.700000,Race,,Europe/Rome,water,80.0,lwt
+28,https://rowsandall.com/rowers/workout/2497/emailcsv,https://rowsandall.com/rowers/workout/2497/emailtcx,0,0,None,2017-11-12 10:25:00+00:00,10526,00:44:01.700000,SpdCoach 2,,Europe/Rome,rower,80.0,lwt
+29,https://rowsandall.com/rowers/workout/2498/emailcsv,https://rowsandall.com/rowers/workout/2498/emailtcx,0,0,None,2017-11-12 10:25:00+00:00,10526,00:44:01.700000,boat speed test,,Europe/Rome,water,80.0,lwt
+30,https://rowsandall.com/rowers/workout/2499/emailcsv,https://rowsandall.com/rowers/workout/2499/emailtcx,0,0,None,2017-11-12 10:25:00+00:00,10526,00:44:01.700000,Boat Speed test 2,,Europe/Rome,water,80.0,lwt
+31,https://rowsandall.com/rowers/workout/2724/emailcsv,https://rowsandall.com/rowers/workout/2724/emailtcx,55,41,None,2018-01-01 09:27:47+00:00,5000,00:18:37,C2 Import Workout from 2018-01-01 09:27:47+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+32,https://rowsandall.com/rowers/workout/2723/emailcsv,https://rowsandall.com/rowers/workout/2723/emailtcx,0,9,None,2018-01-01 09:48:09+00:00,2963,00:13:29,C2 Import Workout from 2018-01-01 09:48:09+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+33,https://rowsandall.com/rowers/workout/2722/emailcsv,https://rowsandall.com/rowers/workout/2722/emailtcx,105,66,None,2018-01-02 18:22:08+00:00,14183,00:59:49.900000,C2 Import Workout from 2018-01-02 18:22:08+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+34,https://rowsandall.com/rowers/workout/2721/emailcsv,https://rowsandall.com/rowers/workout/2721/emailtcx,32,24,None,2018-01-03 16:24:47+00:00,4821,00:20:04.500000,C2 Import Workout from 2018-01-03 16:24:47+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+35,https://rowsandall.com/rowers/workout/2720/emailcsv,https://rowsandall.com/rowers/workout/2720/emailtcx,21,19,None,2018-01-03 16:46:19+00:00,2000,00:07:07.500000,C2 Import Workout from 2018-01-03 16:46:19+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+36,https://rowsandall.com/rowers/workout/2719/emailcsv,https://rowsandall.com/rowers/workout/2719/emailtcx,19,9,None,2018-01-03 16:57:04+00:00,2997,00:13:35.100000,C2 Import Workout from 2018-01-03 16:57:04+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+37,https://rowsandall.com/rowers/workout/2718/emailcsv,https://rowsandall.com/rowers/workout/2718/emailtcx,26,22,None,2018-01-06 13:59:30+00:00,4722,00:20:06.200000,C2 Import Workout from 2018-01-06 13:59:30+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+38,https://rowsandall.com/rowers/workout/2717/emailcsv,https://rowsandall.com/rowers/workout/2717/emailtcx,10,14,None,2018-01-06 14:20:43+00:00,1171,00:04:00,C2 Import Workout from 2018-01-06 14:20:43+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+39,https://rowsandall.com/rowers/workout/2716/emailcsv,https://rowsandall.com/rowers/workout/2716/emailtcx,64,53,None,2018-01-06 14:25:53+00:00,8006,00:36:13.600000,C2 Import Workout from 2018-01-06 14:25:53+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+40,https://rowsandall.com/rowers/workout/2715/emailcsv,https://rowsandall.com/rowers/workout/2715/emailtcx,0,11,None,2018-01-07 14:03:51+00:00,2520,00:10:42.700000,C2 Import Workout from 2018-01-07 14:03:51+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+41,https://rowsandall.com/rowers/workout/2714/emailcsv,https://rowsandall.com/rowers/workout/2714/emailtcx,0,47,None,2018-01-07 14:18:45+00:00,9996,00:42:35.100000,C2 Import Workout from 2018-01-07 14:18:45+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+42,https://rowsandall.com/rowers/workout/2713/emailcsv,https://rowsandall.com/rowers/workout/2713/emailtcx,33,26,None,2018-01-09 18:22:19+00:00,5267,00:22:34.200000,C2 Import Workout from 2018-01-09 18:22:19+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+43,https://rowsandall.com/rowers/workout/2712/emailcsv,https://rowsandall.com/rowers/workout/2712/emailtcx,7,12,None,2018-01-09 18:46:20+00:00,1000,00:03:21.400000,C2 Import Workout from 2018-01-09 18:46:20+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+44,https://rowsandall.com/rowers/workout/2711/emailcsv,https://rowsandall.com/rowers/workout/2711/emailtcx,16,8,None,2018-01-09 18:51:03+00:00,2300,00:10:04.500000,C2 Import Workout from 2018-01-09 18:51:03+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+45,https://rowsandall.com/rowers/workout/2710/emailcsv,https://rowsandall.com/rowers/workout/2710/emailtcx,10,10,None,2018-01-12 16:09:10+00:00,2008,00:08:39.100000,C2 Import Workout from 2018-01-12 16:09:10+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+46,https://rowsandall.com/rowers/workout/2709/emailcsv,https://rowsandall.com/rowers/workout/2709/emailtcx,2,9,None,2018-01-12 16:19:00+00:00,500,00:01:33.400000,C2 Import Workout from 2018-01-12 16:19:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+47,https://rowsandall.com/rowers/workout/2708/emailcsv,https://rowsandall.com/rowers/workout/2708/emailtcx,13,5,None,2018-01-12 16:21:06+00:00,2002,00:09:25.600000,C2 Import Workout from 2018-01-12 16:21:06+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+48,https://rowsandall.com/rowers/workout/2707/emailcsv,https://rowsandall.com/rowers/workout/2707/emailtcx,0,0,None,2018-01-12 16:31:08+00:00,100,00:00:17.600000,C2 Import Workout from 2018-01-12 16:31:08+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+49,https://rowsandall.com/rowers/workout/2706/emailcsv,https://rowsandall.com/rowers/workout/2706/emailtcx,15,6,None,2018-01-12 16:31:58+00:00,2011,00:08:56.600000,C2 Import Workout from 2018-01-12 16:31:58+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+50,https://rowsandall.com/rowers/workout/2705/emailcsv,https://rowsandall.com/rowers/workout/2705/emailtcx,24,9,None,2018-01-13 12:40:00+00:00,2000,00:06:55.800000,C2 Import Workout from 2018-01-13 12:40:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+51,https://rowsandall.com/rowers/workout/2704/emailcsv,https://rowsandall.com/rowers/workout/2704/emailtcx,7,10,None,2018-01-16 18:40:49+00:00,2007,00:08:30.800000,C2 Import Workout from 2018-01-16 18:40:49+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+52,https://rowsandall.com/rowers/workout/2703/emailcsv,https://rowsandall.com/rowers/workout/2703/emailtcx,0,7,None,2018-01-16 18:50:09+00:00,333,00:01:00,C2 Import Workout from 2018-01-16 18:50:09+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+53,https://rowsandall.com/rowers/workout/2702/emailcsv,https://rowsandall.com/rowers/workout/2702/emailtcx,64,56,None,2018-01-16 18:51:41+00:00,6820,00:31:22.200000,C2 Import Workout from 2018-01-16 18:51:41+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+54,https://rowsandall.com/rowers/workout/2701/emailcsv,https://rowsandall.com/rowers/workout/2701/emailtcx,15,6,None,2018-01-16 19:24:23+00:00,2008,00:09:01.100000,C2 Import Workout from 2018-01-16 19:24:23+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+55,https://rowsandall.com/rowers/workout/2700/emailcsv,https://rowsandall.com/rowers/workout/2700/emailtcx,11,9,None,2018-01-18 19:01:45+00:00,2007,00:08:27.600000,C2 Import Workout from 2018-01-18 19:01:45+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+56,https://rowsandall.com/rowers/workout/2699/emailcsv,https://rowsandall.com/rowers/workout/2699/emailtcx,67,49,None,2018-01-18 19:10:50+00:00,6918,00:29:14.200000,C2 Import Workout from 2018-01-18 19:10:50+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+57,https://rowsandall.com/rowers/workout/2698/emailcsv,https://rowsandall.com/rowers/workout/2698/emailtcx,7,2,None,2018-01-18 19:40:40+00:00,1217,00:06:11.100000,C2 Import Workout from 2018-01-18 19:40:40+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+58,https://rowsandall.com/rowers/workout/2697/emailcsv,https://rowsandall.com/rowers/workout/2697/emailtcx,62,51,None,2018-01-18 19:47:32+00:00,6697,00:29:16.700000,C2 Import Workout from 2018-01-18 19:47:32+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+59,https://rowsandall.com/rowers/workout/2696/emailcsv,https://rowsandall.com/rowers/workout/2696/emailtcx,13,6,None,2018-01-18 20:17:58+00:00,1997,00:09:10.700000,C2 Import Workout from 2018-01-18 20:17:58+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+60,https://rowsandall.com/rowers/workout/2692/emailcsv,https://rowsandall.com/rowers/workout/2692/emailtcx,0,0,None,2018-01-19 00:00:00+00:00,200,00:02:00.200000,C2 Import Workout from 2018-01-19 00:00:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+61,https://rowsandall.com/rowers/workout/2693/emailcsv,https://rowsandall.com/rowers/workout/2693/emailtcx,0,0,None,2018-01-19 00:00:00+00:00,200,00:01:55,C2 Import Workout from 2018-01-19 00:00:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+62,https://rowsandall.com/rowers/workout/2694/emailcsv,https://rowsandall.com/rowers/workout/2694/emailtcx,0,0,None,2018-01-19 00:00:00+00:00,200,00:02:00,C2 Import Workout from 2018-01-19 00:00:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+63,https://rowsandall.com/rowers/workout/2695/emailcsv,https://rowsandall.com/rowers/workout/2695/emailtcx,0,0,None,2018-01-19 00:00:00+00:00,200,00:01:10,C2 Import Workout from 2018-01-19 00:00:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+64,https://rowsandall.com/rowers/workout/2691/emailcsv,https://rowsandall.com/rowers/workout/2691/emailtcx,175,96,None,2018-01-20 13:22:31+00:00,19381,01:20:39.100000,C2 Import Workout from 2018-01-20 13:22:31+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+65,https://rowsandall.com/rowers/workout/2690/emailcsv,https://rowsandall.com/rowers/workout/2690/emailtcx,0,0,None,2018-01-24 18:55:23+00:00,210,00:01:43.400000,C2 Import Workout from 2018-01-24 18:55:23+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+66,https://rowsandall.com/rowers/workout/2689/emailcsv,https://rowsandall.com/rowers/workout/2689/emailtcx,12,10,None,2018-01-24 18:59:06+00:00,2110,00:08:42.700000,C2 Import Workout from 2018-01-24 18:59:06+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+67,https://rowsandall.com/rowers/workout/2688/emailcsv,https://rowsandall.com/rowers/workout/2688/emailtcx,33,18,None,2018-01-24 19:08:04+00:00,6081,00:25:10,C2 Import Workout from 2018-01-24 19:08:04+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+68,https://rowsandall.com/rowers/workout/2687/emailcsv,https://rowsandall.com/rowers/workout/2687/emailtcx,86,38,None,2018-01-24 19:24:18+00:00,14426,01:00:12.600000,C2 Import Workout from 2018-01-24 19:24:18+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+69,https://rowsandall.com/rowers/workout/2686/emailcsv,https://rowsandall.com/rowers/workout/2686/emailtcx,146,78,None,2018-01-27 13:23:26+00:00,14981,01:01:39.600000,C2 Import Workout from 2018-01-27 13:23:26+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+70,https://rowsandall.com/rowers/workout/2685/emailcsv,https://rowsandall.com/rowers/workout/2685/emailtcx,37,15,None,2018-01-27 14:25:07+00:00,18338,01:15:22.800000,C2 Import Workout from 2018-01-27 14:25:07+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+71,https://rowsandall.com/rowers/workout/2684/emailcsv,https://rowsandall.com/rowers/workout/2684/emailtcx,90,53,None,2018-02-03 14:20:18+00:00,12181,00:51:46,C2 Import Workout from 2018-02-03 14:20:18+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+72,https://rowsandall.com/rowers/workout/2683/emailcsv,https://rowsandall.com/rowers/workout/2683/emailtcx,61,40,None,2018-02-06 17:54:01+00:00,7210,00:31:09,C2 Import Workout from 2018-02-06 17:54:01+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+73,https://rowsandall.com/rowers/workout/2682/emailcsv,https://rowsandall.com/rowers/workout/2682/emailtcx,16,14,None,2018-02-10 09:10:14+00:00,3040,00:12:47.200000,C2 Import Workout from 2018-02-10 09:10:14+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+74,https://rowsandall.com/rowers/workout/2681/emailcsv,https://rowsandall.com/rowers/workout/2681/emailtcx,86,70,None,2018-02-10 09:23:52+00:00,9305,00:40:50.900000,C2 Import Workout from 2018-02-10 09:23:52+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+75,https://rowsandall.com/rowers/workout/2680/emailcsv,https://rowsandall.com/rowers/workout/2680/emailtcx,14,6,None,2018-02-10 10:06:00+00:00,2009,00:09:04.200000,C2 Import Workout from 2018-02-10 10:06:00+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+76,https://rowsandall.com/rowers/workout/2679/emailcsv,https://rowsandall.com/rowers/workout/2679/emailtcx,135,69,None,2018-02-11 16:57:32+00:00,14430,01:01:23,C2 Import Workout from 2018-02-11 16:57:32+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+77,https://rowsandall.com/rowers/workout/2335/emailcsv,https://rowsandall.com/rowers/workout/2335/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,3872,00:27:12.200000,SpdCoach 1,,America/Los_Angeles,water,80.0,lwt
+78,https://rowsandall.com/rowers/workout/2338/emailcsv,https://rowsandall.com/rowers/workout/2338/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,9336,09:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+79,https://rowsandall.com/rowers/workout/2339/emailcsv,https://rowsandall.com/rowers/workout/2339/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,7522,09:41:48.200000,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+80,https://rowsandall.com/rowers/workout/2341/emailcsv,https://rowsandall.com/rowers/workout/2341/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,9336,09:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+81,https://rowsandall.com/rowers/workout/2342/emailcsv,https://rowsandall.com/rowers/workout/2342/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,9336,09:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+82,https://rowsandall.com/rowers/workout/2343/emailcsv,https://rowsandall.com/rowers/workout/2343/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,9336,09:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+83,https://rowsandall.com/rowers/workout/2410/emailcsv,https://rowsandall.com/rowers/workout/2410/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,3872,00:27:12.200000,Test,,America/Los_Angeles,water,80.0,lwt
+84,https://rowsandall.com/rowers/workout/2414/emailcsv,https://rowsandall.com/rowers/workout/2414/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,9336,09:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+85,https://rowsandall.com/rowers/workout/2416/emailcsv,https://rowsandall.com/rowers/workout/2416/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,3872,00:27:12.200000,Test aaaa,,America/Los_Angeles,water,80.0,lwt
+86,https://rowsandall.com/rowers/workout/2417/emailcsv,https://rowsandall.com/rowers/workout/2417/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,9336,09:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+87,https://rowsandall.com/rowers/workout/2418/emailcsv,https://rowsandall.com/rowers/workout/2418/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,3872,00:27:12.200000,Test i,,America/Los_Angeles,water,80.0,lwt
+88,https://rowsandall.com/rowers/workout/2419/emailcsv,https://rowsandall.com/rowers/workout/2419/emailtcx,0,0,None,2018-02-12 05:02:06+00:00,11394,09:42:05.500000,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+89,https://rowsandall.com/rowers/workout/2420/emailcsv,https://rowsandall.com/rowers/workout/2420/emailtcx,0,0,None,2018-02-12 13:55:06+00:00,3872,00:27:12.200000,Test ii,,America/Los_Angeles,water,80.0,lwt
+90,https://rowsandall.com/rowers/workout/2421/emailcsv,https://rowsandall.com/rowers/workout/2421/emailtcx,0,0,None,2018-02-12 13:55:06+00:00,350236,00:49:05.500000,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+91,https://rowsandall.com/rowers/workout/2344/emailcsv,https://rowsandall.com/rowers/workout/2344/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,3872,00:27:12.200000,SpdCoach Sessions,imported through email,America/Los_Angeles,water,80.0,lwt
+92,https://rowsandall.com/rowers/workout/2347/emailcsv,https://rowsandall.com/rowers/workout/2347/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,9336,00:58:35,Joined Workout,imported through email,America/Los_Angeles,water,80.0,lwt
+93,https://rowsandall.com/rowers/workout/2411/emailcsv,https://rowsandall.com/rowers/workout/2411/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,3872,00:27:12.200000,Test 2,,America/Los_Angeles,water,80.0,lwt
+94,https://rowsandall.com/rowers/workout/2415/emailcsv,https://rowsandall.com/rowers/workout/2415/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,9336,00:58:35,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+95,https://rowsandall.com/rowers/workout/2430/emailcsv,https://rowsandall.com/rowers/workout/2430/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,3872,00:27:12.200000,Water,,America/Los_Angeles,water,80.0,lwt
+96,https://rowsandall.com/rowers/workout/2445/emailcsv,https://rowsandall.com/rowers/workout/2445/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,3872,00:27:12.200000,Test P,imported through email,America/Los_Angeles,water,80.0,lwt
+97,https://rowsandall.com/rowers/workout/2449/emailcsv,https://rowsandall.com/rowers/workout/2449/emailtcx,0,0,None,2018-02-12 14:02:06+00:00,3872,00:27:12.200000,Water 2x,imported through email,America/Los_Angeles,water,80.0,lwt
+98,https://rowsandall.com/rowers/workout/2412/emailcsv,https://rowsandall.com/rowers/workout/2412/emailtcx,0,0,None,2018-02-12 14:22:01+00:00,3650,00:14:53.200000,Test 3,,America/Los_Angeles,water,80.0,lwt
+99,https://rowsandall.com/rowers/workout/2336/emailcsv,https://rowsandall.com/rowers/workout/2336/emailtcx,0,0,None,2018-02-12 14:29:01+00:00,3650,00:14:53.200000,SpdCoach 2,"
+Summary for your location at 2018-02-12T14:55:00Z: Temperature 9.0C/48.2F. Wind: 2.5 m/s (5.0 kt). Wind Bearing: 280.0 degrees",America/Los_Angeles,water,80.0,lwt
+100,https://rowsandall.com/rowers/workout/2340/emailcsv,https://rowsandall.com/rowers/workout/2340/emailtcx,0,0,None,2018-02-12 14:29:01+00:00,5464,00:31:40,Joined Workout,,America/Los_Angeles,water,80.0,lwt
+101,https://rowsandall.com/rowers/workout/2345/emailcsv,https://rowsandall.com/rowers/workout/2345/emailtcx,0,0,None,2018-02-12 14:29:01+00:00,3650,00:14:53.200000,SpdCoach Sessions (2),imported through email,America/Los_Angeles,water,80.0,lwt
+102,https://rowsandall.com/rowers/workout/2433/emailcsv,https://rowsandall.com/rowers/workout/2433/emailtcx,0,0,None,2018-02-12 14:29:01+00:00,3650,00:14:53.200000,Test,,America/Los_Angeles,rower,80.0,lwt
+103,https://rowsandall.com/rowers/workout/2442/emailcsv,https://rowsandall.com/rowers/workout/2442/emailtcx,0,0,None,2018-02-12 14:29:01+00:00,3650,00:14:53.200000,Water,imported through email,America/Los_Angeles,water,80.0,lwt
+104,https://rowsandall.com/rowers/workout/2444/emailcsv,https://rowsandall.com/rowers/workout/2444/emailtcx,0,0,None,2018-02-12 14:29:01+00:00,3650,00:14:53.200000,SpdCoach 2,imported through email,America/Los_Angeles,water,80.0,lwt
+105,https://rowsandall.com/rowers/workout/2337/emailcsv,https://rowsandall.com/rowers/workout/2337/emailtcx,0,0,None,2018-02-12 14:49:02+00:00,1814,00:11:39,SpdCoach 3,,America/Los_Angeles,water,80.0,lwt
+106,https://rowsandall.com/rowers/workout/2346/emailcsv,https://rowsandall.com/rowers/workout/2346/emailtcx,0,0,None,2018-02-12 14:49:02+00:00,1814,00:11:39,SpdCoach Sessions (3),imported through email,America/Los_Angeles,water,80.0,lwt
+107,https://rowsandall.com/rowers/workout/2413/emailcsv,https://rowsandall.com/rowers/workout/2413/emailtcx,0,0,None,2018-02-12 14:49:02+00:00,1814,00:11:39,Test 4,,America/Los_Angeles,water,80.0,lwt
+108,https://rowsandall.com/rowers/workout/2443/emailcsv,https://rowsandall.com/rowers/workout/2443/emailtcx,0,0,None,2018-02-12 14:49:02+00:00,1814,00:11:39,water weer,imported through email,America/Los_Angeles,water,80.0,lwt
+109,https://rowsandall.com/rowers/workout/2678/emailcsv,https://rowsandall.com/rowers/workout/2678/emailtcx,9,9,None,2018-02-12 18:39:42+00:00,2014,00:08:37.700000,C2 Import Workout from 2018-02-12 18:39:42+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+110,https://rowsandall.com/rowers/workout/2677/emailcsv,https://rowsandall.com/rowers/workout/2677/emailtcx,91,77,None,2018-02-12 18:49:03+00:00,10562,00:46:12.400000,C2 Import Workout from 2018-02-12 18:49:03+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+111,https://rowsandall.com/rowers/workout/2676/emailcsv,https://rowsandall.com/rowers/workout/2676/emailtcx,9,5,None,2018-02-12 19:36:43+00:00,1998,00:09:39.800000,C2 Import Workout from 2018-02-12 19:36:43+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+112,https://rowsandall.com/rowers/workout/2675/emailcsv,https://rowsandall.com/rowers/workout/2675/emailtcx,115,59,None,2018-02-15 18:16:50+00:00,12440,00:51:41.500000,C2 Import Workout from 2018-02-15 18:16:50+00:00,imported from Concept2 log,UTC,rower,80.0,lwt
+113,https://rowsandall.com/rowers/workout/2674/emailcsv,https://rowsandall.com/rowers/workout/2674/emailtcx,21,8,None,2018-02-15 19:08:28+00:00,14477,01:00:21.800000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+114,https://rowsandall.com/rowers/workout/2673/emailcsv,https://rowsandall.com/rowers/workout/2673/emailtcx,16,14,None,2018-02-16 14:24:03+00:00,3012,00:12:58.800000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+115,https://rowsandall.com/rowers/workout/2672/emailcsv,https://rowsandall.com/rowers/workout/2672/emailtcx,51,42,None,2018-02-16 14:37:40+00:00,5277,00:23:00,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+116,https://rowsandall.com/rowers/workout/2671/emailcsv,https://rowsandall.com/rowers/workout/2671/emailtcx,6,2,None,2018-02-16 15:01:29+00:00,1036,00:05:03.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+117,https://rowsandall.com/rowers/workout/2670/emailcsv,https://rowsandall.com/rowers/workout/2670/emailtcx,54,44,None,2018-02-16 15:07:03+00:00,5113,00:23:22,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+118,https://rowsandall.com/rowers/workout/2669/emailcsv,https://rowsandall.com/rowers/workout/2669/emailtcx,7,3,None,2018-02-16 15:34:40+00:00,1259,00:05:48.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+119,https://rowsandall.com/rowers/workout/2668/emailcsv,https://rowsandall.com/rowers/workout/2668/emailtcx,106,65,None,2018-02-18 13:30:59+00:00,13541,00:56:07.300000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+120,https://rowsandall.com/rowers/workout/2667/emailcsv,https://rowsandall.com/rowers/workout/2667/emailtcx,10,9,None,2018-02-20 18:08:13+00:00,2008,00:08:36.300000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+121,https://rowsandall.com/rowers/workout/2666/emailcsv,https://rowsandall.com/rowers/workout/2666/emailtcx,98,78,None,2018-02-20 18:17:17+00:00,10914,00:48:06.100000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+122,https://rowsandall.com/rowers/workout/2665/emailcsv,https://rowsandall.com/rowers/workout/2665/emailtcx,7,3,None,2018-02-20 19:06:36+00:00,1513,00:07:37.300000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+123,https://rowsandall.com/rowers/workout/2381/emailcsv,https://rowsandall.com/rowers/workout/2381/emailtcx,0,0,None,2018-02-21 06:26:01+00:00,6119,00:27:20.200000,3x2km Racice,,Europe/Prague,water,80.0,lwt
+124,https://rowsandall.com/rowers/workout/2384/emailcsv,https://rowsandall.com/rowers/workout/2384/emailtcx,0,0,None,2018-02-22 09:32:01+00:00,8000,00:35:08.500000,8k trial,,Europe/Prague,water,80.0,lwt
+125,https://rowsandall.com/rowers/workout/2664/emailcsv,https://rowsandall.com/rowers/workout/2664/emailtcx,91,50,None,2018-02-22 18:40:03+00:00,11481,00:49:17.400000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+126,https://rowsandall.com/rowers/workout/2663/emailcsv,https://rowsandall.com/rowers/workout/2663/emailtcx,8,8,None,2018-02-23 15:12:10+00:00,2008,00:08:44.800000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+127,https://rowsandall.com/rowers/workout/2383/emailcsv,https://rowsandall.com/rowers/workout/2383/emailtcx,0,0,None,2018-02-23 15:17:03+00:00,5918,00:25:10.700000,Horin,,Europe/Prague,water,80.0,lwt
+128,https://rowsandall.com/rowers/workout/2662/emailcsv,https://rowsandall.com/rowers/workout/2662/emailtcx,84,101,None,2018-02-23 15:21:44+00:00,8804,00:39:58,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+129,https://rowsandall.com/rowers/workout/2661/emailcsv,https://rowsandall.com/rowers/workout/2661/emailtcx,15,6,None,2018-02-23 16:02:23+00:00,2008,00:09:05,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+130,https://rowsandall.com/rowers/workout/2385/emailcsv,https://rowsandall.com/rowers/workout/2385/emailtcx,0,0,None,2018-02-24 11:58:09+00:00,17045,01:35:59,Washington,,America/New_York,water,80.0,lwt
+131,https://rowsandall.com/rowers/workout/2660/emailcsv,https://rowsandall.com/rowers/workout/2660/emailtcx,108,69,None,2018-02-24 15:07:07+00:00,14544,01:01:04.500000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+132,https://rowsandall.com/rowers/workout/2386/emailcsv,https://rowsandall.com/rowers/workout/2386/emailtcx,0,0,None,2018-02-25 12:24:59+00:00,6182,00:26:24.400000,9x500m/70sec,,Europe/Prague,rower,80.0,lwt
+133,https://rowsandall.com/rowers/workout/2659/emailcsv,https://rowsandall.com/rowers/workout/2659/emailtcx,145,13155537,None,2018-02-25 14:15:13+00:00,16623,01:22:28,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+134,https://rowsandall.com/rowers/workout/2400/emailcsv,https://rowsandall.com/rowers/workout/2400/emailtcx,0,0,None,2018-02-25 22:45:28+00:00,4175,00:25:07.700000,Test CP,,Europe/Prague,rower,80.0,lwt
+135,https://rowsandall.com/rowers/workout/2387/emailcsv,https://rowsandall.com/rowers/workout/2387/emailtcx,0,0,None,2018-02-27 13:19:44+00:00,2206,00:10:00,StatsError,,Europe/Prague,rower,80.0,lwt
+136,https://rowsandall.com/rowers/workout/2658/emailcsv,https://rowsandall.com/rowers/workout/2658/emailtcx,96,61,None,2018-02-27 16:32:56+00:00,13549,00:56:44.900000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+137,https://rowsandall.com/rowers/workout/2657/emailcsv,https://rowsandall.com/rowers/workout/2657/emailtcx,8,8,None,2018-03-03 13:50:12+00:00,2012,00:08:42.700000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+138,https://rowsandall.com/rowers/workout/2656/emailcsv,https://rowsandall.com/rowers/workout/2656/emailtcx,50,47,None,2018-03-03 14:00:26+00:00,6270,00:26:41.700000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+139,https://rowsandall.com/rowers/workout/2655/emailcsv,https://rowsandall.com/rowers/workout/2655/emailtcx,4,1,None,2018-03-03 14:27:41+00:00,999,00:05:44.100000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+140,https://rowsandall.com/rowers/workout/2395/emailcsv,https://rowsandall.com/rowers/workout/2395/emailtcx,0,0,None,2018-03-03 14:33:51+00:00,6098,00:26:35.400000,Flex chart not working,,Europe/Prague,rower,80.0,lwt
+141,https://rowsandall.com/rowers/workout/2654/emailcsv,https://rowsandall.com/rowers/workout/2654/emailtcx,49,50,None,2018-03-03 14:33:51+00:00,6098,00:26:35.400000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+142,https://rowsandall.com/rowers/workout/2653/emailcsv,https://rowsandall.com/rowers/workout/2653/emailtcx,7,4,None,2018-03-03 15:01:34+00:00,1559,00:07:16.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+143,https://rowsandall.com/rowers/workout/2392/emailcsv,https://rowsandall.com/rowers/workout/2392/emailtcx,0,0,None,2018-03-05 13:51:23+00:00,13802,01:06:00,Mike's average workout,,Europe/Prague,rower,80.0,lwt
+144,https://rowsandall.com/rowers/workout/2396/emailcsv,https://rowsandall.com/rowers/workout/2396/emailtcx,0,0,None,2018-03-05 13:51:23+00:00,4058,00:17:00,Mike's average workout (1),,Europe/Prague,rower,80.0,lwt
+145,https://rowsandall.com/rowers/workout/2397/emailcsv,https://rowsandall.com/rowers/workout/2397/emailtcx,0,0,None,2018-03-05 14:08:23+00:00,9738,00:49:00,Mike's average workout (2),,Europe/Prague,rower,80.0,lwt
+146,https://rowsandall.com/rowers/workout/2389/emailcsv,https://rowsandall.com/rowers/workout/2389/emailtcx,0,0,None,2018-03-05 17:48:31+00:00,7022,00:29:44.400000,test,wat een kutsessie,Europe/Prague,rower,80.0,lwt
+147,https://rowsandall.com/rowers/workout/2652/emailcsv,https://rowsandall.com/rowers/workout/2652/emailtcx,37,31,None,2018-03-05 17:48:31+00:00,7022,00:29:45.900000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+148,https://rowsandall.com/rowers/workout/2390/emailcsv,https://rowsandall.com/rowers/workout/2390/emailtcx,0,0,None,2018-03-05 17:50:46+00:00,5019,00:31:27.500000,,,Europe/Prague,rower,80.0,lwt
+149,https://rowsandall.com/rowers/workout/2651/emailcsv,https://rowsandall.com/rowers/workout/2651/emailtcx,10,8,None,2018-03-08 18:34:05+00:00,2010,00:08:38.700000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+150,https://rowsandall.com/rowers/workout/2650/emailcsv,https://rowsandall.com/rowers/workout/2650/emailtcx,100,67,None,2018-03-08 18:43:29+00:00,10444,00:46:52.300000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+151,https://rowsandall.com/rowers/workout/2649/emailcsv,https://rowsandall.com/rowers/workout/2649/emailtcx,1,0,None,2018-03-08 19:31:31+00:00,269,00:01:42,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+152,https://rowsandall.com/rowers/workout/2398/emailcsv,https://rowsandall.com/rowers/workout/2398/emailtcx,0,0,None,2018-03-09 11:52:48+00:00,4160,00:13:00,test template,"Dit zijn de notes
+Sommige zinnen zijn heel heel heel heel heel heel heel heel lang Sommige zinnen zijn heel heel heel heel heel heel heel heel lang Sommige zinnen zijn heel heel heel heel heel heel heel heel lang Sommige zinnen zijn heel heel heel heel heel heel heel heel lang
+LAngwoordzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz",Europe/Prague,rower,80.0,lwt
+153,https://rowsandall.com/rowers/workout/2399/emailcsv,https://rowsandall.com/rowers/workout/2399/emailtcx,0,0,None,2018-03-09 11:59:13+00:00,4160,00:13:00,Test P,,Europe/Prague,rower,80.0,lwt
+154,https://rowsandall.com/rowers/workout/2401/emailcsv,https://rowsandall.com/rowers/workout/2401/emailtcx,0,0,None,2018-03-13 07:32:40+00:00,6479,00:30:27.300000,high power values?,,Europe/Prague,rower,80.0,lwt
+155,https://rowsandall.com/rowers/workout/2648/emailcsv,https://rowsandall.com/rowers/workout/2648/emailtcx,8,9,None,2018-03-13 18:18:31+00:00,2009,00:08:30,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+156,https://rowsandall.com/rowers/workout/2404/emailcsv,https://rowsandall.com/rowers/workout/2404/emailtcx,0,0,None,2018-03-13 18:28:00.900000+00:00,9996,00:40:00,C2 Rower Timed. 10.0,"C2 Rower Timed. 10.0km, 40.00 min. (PainSled)",Europe/Prague,rower,80.0,lwt
+157,https://rowsandall.com/rowers/workout/2405/emailcsv,https://rowsandall.com/rowers/workout/2405/emailtcx,0,0,None,2018-03-13 18:28:00.900000+00:00,10850,00:45:32.400000,C2 Rower Timed. 10.0,"C2 Rower Timed. 10.0km, 40.00 min. (PainSled)",Europe/Prague,rower,80.0,lwt
+158,https://rowsandall.com/rowers/workout/2647/emailcsv,https://rowsandall.com/rowers/workout/2647/emailtcx,95,61,None,2018-03-13 18:28:01+00:00,10864,00:46:12.800000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+159,https://rowsandall.com/rowers/workout/2646/emailcsv,https://rowsandall.com/rowers/workout/2646/emailtcx,5,2,None,2018-03-13 19:15:15+00:00,1015,00:05:05.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+160,https://rowsandall.com/rowers/workout/2645/emailcsv,https://rowsandall.com/rowers/workout/2645/emailtcx,8,9,None,2018-03-13 19:18:21+00:00,2009,00:08:29.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,hwt
+161,https://rowsandall.com/rowers/workout/2644/emailcsv,https://rowsandall.com/rowers/workout/2644/emailtcx,95,60,None,2018-03-13 19:28:00+00:00,9996,00:40:00,Imported workout,imported from Concept2 log,UTC,rower,80.0,hwt
+162,https://rowsandall.com/rowers/workout/2402/emailcsv,https://rowsandall.com/rowers/workout/2402/emailtcx,0,0,None,2018-03-13 21:15:46+00:00,1311,00:13:04.100000,Stroke Count,,Europe/Prague,rower,80.0,lwt
+163,https://rowsandall.com/rowers/workout/2403/emailcsv,https://rowsandall.com/rowers/workout/2403/emailtcx,0,0,None,2018-03-14 19:33:20+00:00,10850,00:45:32.400000,4x10min,,Europe/Prague,rower,80.0,lwt
+164,https://rowsandall.com/rowers/workout/2406/emailcsv,https://rowsandall.com/rowers/workout/2406/emailtcx,0,0,None,2018-03-15 06:22:52+00:00,336,00:01:00,Test 1 minute,,Europe/Prague,rower,80.0,lwt
+165,https://rowsandall.com/rowers/workout/2422/emailcsv,https://rowsandall.com/rowers/workout/2422/emailtcx,0,0,None,2018-03-15 06:22:52+00:00,8136,23:59:59.900000,Joined Workout,,Europe/Prague,rower,80.0,lwt
+166,https://rowsandall.com/rowers/workout/2407/emailcsv,https://rowsandall.com/rowers/workout/2407/emailtcx,0,0,None,2018-03-15 06:23:09+00:00,7800,00:30:00,Thirty Dirty,,Europe/Prague,rower,80.0,lwt
+167,https://rowsandall.com/rowers/workout/2434/emailcsv,https://rowsandall.com/rowers/workout/2434/emailtcx,0,0,None,2018-03-15 06:25:09+00:00,7800,23:59:59.900000,30 min,,Europe/Prague,rower,80.0,lwt
+168,https://rowsandall.com/rowers/workout/2643/emailcsv,https://rowsandall.com/rowers/workout/2643/emailtcx,9,9,None,2018-03-15 18:48:48+00:00,2013,00:08:36.700000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+169,https://rowsandall.com/rowers/workout/2425/emailcsv,https://rowsandall.com/rowers/workout/2425/emailtcx,0,0,None,2018-03-15 18:58:08+00:00,10169,00:44:31.200000,Joined Workout,,Europe/Prague,rower,80.0,lwt
+170,https://rowsandall.com/rowers/workout/2438/emailcsv,https://rowsandall.com/rowers/workout/2438/emailtcx,0,0,None,2018-03-15 18:58:08+00:00,8157,00:34:21.600000,Test,imported through email,Europe/Prague,rower,80.0,lwt
+171,https://rowsandall.com/rowers/workout/2642/emailcsv,https://rowsandall.com/rowers/workout/2642/emailtcx,73,58,None,2018-03-15 18:58:08+00:00,8157,00:34:21.500000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+172,https://rowsandall.com/rowers/workout/2423/emailcsv,https://rowsandall.com/rowers/workout/2423/emailtcx,0,0,None,2018-03-15 18:58:08.620390+00:00,8157,00:34:21.600000,6x4min,,Europe/Prague,rower,80.0,lwt
+173,https://rowsandall.com/rowers/workout/2431/emailcsv,https://rowsandall.com/rowers/workout/2431/emailtcx,0,0,None,2018-03-15 18:58:08.620390+00:00,8157,00:34:21.600000,Indoor,,Europe/Prague,rower,80.0,lwt
+174,https://rowsandall.com/rowers/workout/2432/emailcsv,https://rowsandall.com/rowers/workout/2432/emailtcx,0,0,None,2018-03-15 18:58:08.620390+00:00,8157,00:34:21.600000,test,,Europe/Prague,rower,80.0,lwt
+175,https://rowsandall.com/rowers/workout/2435/emailcsv,https://rowsandall.com/rowers/workout/2435/emailtcx,0,0,None,2018-03-15 18:58:08.620390+00:00,8157,00:34:21.600000,Test,,Europe/Prague,rower,80.0,lwt
+176,https://rowsandall.com/rowers/workout/2436/emailcsv,https://rowsandall.com/rowers/workout/2436/emailtcx,0,0,None,2018-03-15 18:58:08.620390+00:00,8157,00:34:21.600000,r,,Europe/Prague,rower,80.0,lwt
+177,https://rowsandall.com/rowers/workout/2437/emailcsv,https://rowsandall.com/rowers/workout/2437/emailtcx,0,0,None,2018-03-15 18:58:08.620390+00:00,8157,00:34:21.600000,a,,Europe/Prague,rower,80.0,lwt
+178,https://rowsandall.com/rowers/workout/2440/emailcsv,https://rowsandall.com/rowers/workout/2440/emailtcx,0,0,None,2018-03-15 19:33:15+00:00,2012,00:09:24.300000,another one,imported through email,Europe/Prague,rower,80.0,lwt
+179,https://rowsandall.com/rowers/workout/2641/emailcsv,https://rowsandall.com/rowers/workout/2641/emailtcx,13,6,None,2018-03-15 19:33:15+00:00,2012,00:09:24.300000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+180,https://rowsandall.com/rowers/workout/2424/emailcsv,https://rowsandall.com/rowers/workout/2424/emailtcx,0,0,None,2018-03-15 19:33:15.009331+00:00,2012,00:09:24.400000,6x4min,,Europe/Prague,rower,80.0,lwt
+181,https://rowsandall.com/rowers/workout/2429/emailcsv,https://rowsandall.com/rowers/workout/2429/emailtcx,0,0,None,2018-03-16 12:04:52+00:00,9595,00:54:45,Joined Workout,,America/New_York,rower,80.0,lwt
+182,https://rowsandall.com/rowers/workout/2426/emailcsv,https://rowsandall.com/rowers/workout/2426/emailtcx,0,0,None,2018-03-16 12:09:23+00:00,9269,00:50:14,Test P,,America/New_York,rower,80.0,lwt
+183,https://rowsandall.com/rowers/workout/2428/emailcsv,https://rowsandall.com/rowers/workout/2428/emailtcx,0,0,None,2018-03-16 12:09:23+00:00,9269,00:50:14,,,America/New_York,rower,80.0,lwt
+184,https://rowsandall.com/rowers/workout/2427/emailcsv,https://rowsandall.com/rowers/workout/2427/emailtcx,0,0,None,2018-03-16 13:00:52+00:00,326,00:04:03,Water Workout,,America/New_York,water,80.0,lwt
+185,https://rowsandall.com/rowers/workout/2640/emailcsv,https://rowsandall.com/rowers/workout/2640/emailtcx,130,73,None,2018-03-17 14:14:56+00:00,15231,01:03:19.100000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+186,https://rowsandall.com/rowers/workout/2639/emailcsv,https://rowsandall.com/rowers/workout/2639/emailtcx,0,18,None,2018-03-18 14:03:27+00:00,3876,00:16:16.200000,Imported workout,imported from Concept2 log,UTC,slides,80.0,lwt
+187,https://rowsandall.com/rowers/workout/2638/emailcsv,https://rowsandall.com/rowers/workout/2638/emailtcx,0,49,None,2018-03-18 14:20:52+00:00,6000,00:22:17.500000,Imported workout,imported from Concept2 log,UTC,slides,80.0,lwt
+188,https://rowsandall.com/rowers/workout/2637/emailcsv,https://rowsandall.com/rowers/workout/2637/emailtcx,0,14,None,2018-03-18 14:44:46+00:00,4163,00:19:13.200000,Imported workout,imported from Concept2 log,UTC,slides,80.0,lwt
+189,https://rowsandall.com/rowers/workout/2636/emailcsv,https://rowsandall.com/rowers/workout/2636/emailtcx,6,9,None,2018-03-22 18:38:59+00:00,2007,00:08:43.800000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+190,https://rowsandall.com/rowers/workout/2635/emailcsv,https://rowsandall.com/rowers/workout/2635/emailtcx,46,51,None,2018-03-22 18:48:29+00:00,6770,00:29:38.200000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+191,https://rowsandall.com/rowers/workout/2634/emailcsv,https://rowsandall.com/rowers/workout/2634/emailtcx,15,7,None,2018-03-22 19:18:50+00:00,2010,00:08:46.700000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+192,https://rowsandall.com/rowers/workout/2633/emailcsv,https://rowsandall.com/rowers/workout/2633/emailtcx,136,38,None,2018-03-24 09:20:07+00:00,15446,01:22:56.300000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+193,https://rowsandall.com/rowers/workout/2451/emailcsv,https://rowsandall.com/rowers/workout/2451/emailtcx,0,0,None,2018-03-25 09:59:12+00:00,29000,01:50:13,test,,Europe/Zurich,rower,80.0,lwt
+194,https://rowsandall.com/rowers/workout/2452/emailcsv,https://rowsandall.com/rowers/workout/2452/emailtcx,0,0,None,2018-03-25 09:59:12+00:00,29000,01:50:13,Background processing test,imported through email,Europe/Zurich,water,80.0,lwt
+195,https://rowsandall.com/rowers/workout/2632/emailcsv,https://rowsandall.com/rowers/workout/2632/emailtcx,50,19,None,2018-03-25 14:29:09+00:00,6664,00:46:07,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+196,https://rowsandall.com/rowers/workout/2453/emailcsv,https://rowsandall.com/rowers/workout/2453/emailtcx,0,0,None,2018-03-29 13:45:00+00:00,2000,07:25:00,test api,string,UTC,water,80.0,lwt
+197,https://rowsandall.com/rowers/workout/2454/emailcsv,https://rowsandall.com/rowers/workout/2454/emailtcx,0,0,None,2018-04-02 11:02:55+00:00,3848,00:22:14.200000,RP3 curve,,Europe/Prague,rower,80.0,lwt
+198,https://rowsandall.com/rowers/workout/2455/emailcsv,https://rowsandall.com/rowers/workout/2455/emailtcx,0,0,None,2018-04-02 11:04:18+00:00,3848,00:22:14.200000,,,Europe/Prague,rower,80.0,lwt
+199,https://rowsandall.com/rowers/workout/2631/emailcsv,https://rowsandall.com/rowers/workout/2631/emailtcx,0,6,None,2018-04-03 14:34:01+00:00,2822,00:14:43.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+200,https://rowsandall.com/rowers/workout/2630/emailcsv,https://rowsandall.com/rowers/workout/2630/emailtcx,0,32,None,2018-04-03 14:50:01+00:00,7505,00:39:46.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+201,https://rowsandall.com/rowers/workout/2456/emailcsv,https://rowsandall.com/rowers/workout/2456/emailtcx,0,0,None,2018-04-03 15:50:52+00:00,7200,00:37:44,In Stroke,,Europe/Prague,water,80.0,lwt
+202,https://rowsandall.com/rowers/workout/2457/emailcsv,https://rowsandall.com/rowers/workout/2457/emailtcx,0,0,None,2018-04-03 15:50:52+00:00,7200,00:37:44,In Stroke 2,,Europe/Prague,water,80.0,lwt
+203,https://rowsandall.com/rowers/workout/2629/emailcsv,https://rowsandall.com/rowers/workout/2629/emailtcx,0,0,None,2018-04-04 18:30:27+00:00,27,00:00:03.200000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+204,https://rowsandall.com/rowers/workout/2628/emailcsv,https://rowsandall.com/rowers/workout/2628/emailtcx,0,44,None,2018-04-04 19:00:43+00:00,8309,00:48:07.400000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+205,https://rowsandall.com/rowers/workout/2458/emailcsv,https://rowsandall.com/rowers/workout/2458/emailtcx,0,0,None,2018-04-07 07:41:02+00:00,10568,01:06:08.800000,2x3km fail,,Europe/Prague,water,80.0,lwt
+206,https://rowsandall.com/rowers/workout/2460/emailcsv,https://rowsandall.com/rowers/workout/2460/emailtcx,0,0,None,2018-04-07 07:41:02+00:00,10568,01:06:08.800000,Update,,Europe/Prague,water,80.0,lwt
+207,https://rowsandall.com/rowers/workout/2627/emailcsv,https://rowsandall.com/rowers/workout/2627/emailtcx,21,5,None,2018-04-07 07:41:02+00:00,2243,00:12:20.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+208,https://rowsandall.com/rowers/workout/2626/emailcsv,https://rowsandall.com/rowers/workout/2626/emailtcx,39,8,None,2018-04-07 07:55:02+00:00,3167,00:16:59.800000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+209,https://rowsandall.com/rowers/workout/2625/emailcsv,https://rowsandall.com/rowers/workout/2625/emailtcx,34,10,None,2018-04-07 08:14:02+00:00,2977,00:14:58,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+210,https://rowsandall.com/rowers/workout/2623/emailcsv,https://rowsandall.com/rowers/workout/2623/emailtcx,23,1,None,2018-04-07 08:33:03+00:00,2180,00:14:07.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+211,https://rowsandall.com/rowers/workout/2622/emailcsv,https://rowsandall.com/rowers/workout/2622/emailtcx,86,56,None,2018-04-10 17:38:22+00:00,11703,00:48:59.500000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+212,https://rowsandall.com/rowers/workout/2621/emailcsv,https://rowsandall.com/rowers/workout/2621/emailtcx,50,24,None,2018-04-10 18:27:53+00:00,17284,01:11:55.500000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+213,https://rowsandall.com/rowers/workout/2620/emailcsv,https://rowsandall.com/rowers/workout/2620/emailtcx,57,66,None,2018-04-11 18:37:27+00:00,10122,01:15:44.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+214,https://rowsandall.com/rowers/workout/2619/emailcsv,https://rowsandall.com/rowers/workout/2619/emailtcx,99,31,None,2018-04-12 16:17:02+00:00,10408,00:53:45.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+215,https://rowsandall.com/rowers/workout/2618/emailcsv,https://rowsandall.com/rowers/workout/2618/emailtcx,115,44,None,2018-04-15 08:34:05+00:00,11129,01:03:38,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+216,https://rowsandall.com/rowers/workout/2617/emailcsv,https://rowsandall.com/rowers/workout/2617/emailtcx,14,3,None,2018-04-18 13:43:04+00:00,1942,00:10:55.300000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+217,https://rowsandall.com/rowers/workout/2616/emailcsv,https://rowsandall.com/rowers/workout/2616/emailtcx,104,36,None,2018-04-18 13:57:01+00:00,7979,00:36:10.600000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+218,https://rowsandall.com/rowers/workout/2615/emailcsv,https://rowsandall.com/rowers/workout/2615/emailtcx,11,3,None,2018-04-18 14:49:06+00:00,1512,00:08:27.600000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+219,https://rowsandall.com/rowers/workout/2614/emailcsv,https://rowsandall.com/rowers/workout/2614/emailtcx,58,56,None,2018-04-20 15:51:41+00:00,9748,01:06:50.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+220,https://rowsandall.com/rowers/workout/2613/emailcsv,https://rowsandall.com/rowers/workout/2613/emailtcx,28,75,None,2018-04-21 15:38:04+00:00,5254,00:27:02.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+221,https://rowsandall.com/rowers/workout/2612/emailcsv,https://rowsandall.com/rowers/workout/2612/emailtcx,105,65,None,2018-04-22 07:15:01+00:00,12282,01:08:28.600000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+222,https://rowsandall.com/rowers/workout/2471/emailcsv,https://rowsandall.com/rowers/workout/2471/emailtcx,0,0,None,2018-04-23 11:00:00+00:00,1017,00:03:55.200000,7x150min/1min,,America/New_York,water,80.0,lwt
+223,https://rowsandall.com/rowers/workout/2472/emailcsv,https://rowsandall.com/rowers/workout/2472/emailtcx,0,0,None,2018-04-23 11:00:00+00:00,1017,00:03:55.200000,7x15min test 2,,America/New_York,water,80.0,lwt
+224,https://rowsandall.com/rowers/workout/2473/emailcsv,https://rowsandall.com/rowers/workout/2473/emailtcx,0,0,None,2018-04-23 11:00:00+00:00,1017,00:03:55.200000,7x150min/1min,,America/New_York,water,80.0,lwt
+225,https://rowsandall.com/rowers/workout/2474/emailcsv,https://rowsandall.com/rowers/workout/2474/emailtcx,0,0,None,2018-04-23 11:00:00+00:00,1017,00:03:55,test firmware,,America/New_York,water,80.0,lwt
+226,https://rowsandall.com/rowers/workout/2478/emailcsv,https://rowsandall.com/rowers/workout/2478/emailtcx,0,0,None,2018-04-23 11:00:00+00:00,1017,00:03:55.200000,Firmware 2,,America/New_York,water,80.0,lwt
+227,https://rowsandall.com/rowers/workout/2611/emailcsv,https://rowsandall.com/rowers/workout/2611/emailtcx,98,59,None,2018-04-23 17:46:25+00:00,13558,00:58:11.900000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+228,https://rowsandall.com/rowers/workout/2465/emailcsv,https://rowsandall.com/rowers/workout/2465/emailtcx,0,0,None,2018-04-23 20:42:00+00:00,8000,00:36:01.500000,Racice,,Europe/Prague,water,80.0,lwt
+229,https://rowsandall.com/rowers/workout/2610/emailcsv,https://rowsandall.com/rowers/workout/2610/emailtcx,26,4,None,2018-04-24 12:12:03+00:00,2959,00:16:42.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+230,https://rowsandall.com/rowers/workout/2609/emailcsv,https://rowsandall.com/rowers/workout/2609/emailtcx,79,23,None,2018-04-24 12:32:00+00:00,7516,00:38:49.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+231,https://rowsandall.com/rowers/workout/2466/emailcsv,https://rowsandall.com/rowers/workout/2466/emailtcx,0,0,None,2018-04-24 13:35:30+00:00,9420,00:48:00,,,Europe/Prague,water,80.0,lwt
+232,https://rowsandall.com/rowers/workout/2608/emailcsv,https://rowsandall.com/rowers/workout/2608/emailtcx,74,93,None,2018-04-25 17:50:26+00:00,10171,01:12:33.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+233,https://rowsandall.com/rowers/workout/2470/emailcsv,https://rowsandall.com/rowers/workout/2470/emailtcx,0,0,None,2018-04-25 22:59:01+00:00,4159,00:26:43.200000,SpeedCoach 7x150m,,America/New_York,water,80.0,lwt
+234,https://rowsandall.com/rowers/workout/2607/emailcsv,https://rowsandall.com/rowers/workout/2607/emailtcx,10,2,None,2018-04-26 16:18:01+00:00,2016,00:12:30.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+235,https://rowsandall.com/rowers/workout/2606/emailcsv,https://rowsandall.com/rowers/workout/2606/emailtcx,51,27,None,2018-04-26 16:33:00+00:00,4605,00:22:35.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+236,https://rowsandall.com/rowers/workout/2605/emailcsv,https://rowsandall.com/rowers/workout/2605/emailtcx,11,2,None,2018-04-26 16:56:03+00:00,1301,00:07:07.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+237,https://rowsandall.com/rowers/workout/2604/emailcsv,https://rowsandall.com/rowers/workout/2604/emailtcx,99,48,None,2018-04-28 08:02:01+00:00,11924,01:18:20.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+238,https://rowsandall.com/rowers/workout/2469/emailcsv,https://rowsandall.com/rowers/workout/2469/emailtcx,0,0,None,2018-04-29 07:22:01+00:00,8040,00:50:06,Test P,,America/New_York,water,80.0,lwt
+239,https://rowsandall.com/rowers/workout/2603/emailcsv,https://rowsandall.com/rowers/workout/2603/emailtcx,49,28,None,2018-04-29 07:22:01+00:00,8040,00:50:05.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+240,https://rowsandall.com/rowers/workout/2559/emailcsv,https://rowsandall.com/rowers/workout/2559/emailtcx,0,0,None,2018-05-03 16:02:08+00:00,10909,01:00:35,Intervals Tests (6),imported through email,Europe/Amsterdam,water,80.0,lwt
+241,https://rowsandall.com/rowers/workout/2602/emailcsv,https://rowsandall.com/rowers/workout/2602/emailtcx,34,8,None,2018-05-04 05:47:04+00:00,3472,00:18:53.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+242,https://rowsandall.com/rowers/workout/2479/emailcsv,https://rowsandall.com/rowers/workout/2479/emailtcx,0,0,None,2018-05-04 06:07:04+00:00,5997,00:25:53.900000,Zip test,imported through email,Europe/Prague,water,80.0,lwt
+243,https://rowsandall.com/rowers/workout/2481/emailcsv,https://rowsandall.com/rowers/workout/2481/emailtcx,0,0,None,2018-05-04 06:07:04+00:00,5997,00:25:53.900000,Zip test 2,imported through email,Europe/Prague,water,80.0,lwt
+244,https://rowsandall.com/rowers/workout/2483/emailcsv,https://rowsandall.com/rowers/workout/2483/emailtcx,0,0,None,2018-05-04 06:07:04+00:00,5997,00:25:53.900000,Test Zip 3,imported through email,Europe/Prague,water,80.0,lwt
+245,https://rowsandall.com/rowers/workout/2601/emailcsv,https://rowsandall.com/rowers/workout/2601/emailtcx,76,32,None,2018-05-04 06:07:04+00:00,5997,00:25:53.900000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+246,https://rowsandall.com/rowers/workout/2860/emailcsv,https://rowsandall.com/rowers/workout/2860/emailtcx,0,0,None,2018-05-04 06:07:04+00:00,5997,00:25:53.900000,Zip test,"imported through email
+ from speedcoach2v2.15 via rowsandall.com",Europe/Prague,water,80.0,hwt
+247,https://rowsandall.com/rowers/workout/2600/emailcsv,https://rowsandall.com/rowers/workout/2600/emailtcx,9,0,None,2018-05-04 06:35:04+00:00,1009,00:06:44.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+248,https://rowsandall.com/rowers/workout/2599/emailcsv,https://rowsandall.com/rowers/workout/2599/emailtcx,93,31,None,2018-05-05 07:06:02+00:00,11180,01:01:01.600000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+249,https://rowsandall.com/rowers/workout/2598/emailcsv,https://rowsandall.com/rowers/workout/2598/emailtcx,8,1,None,2018-05-05 08:11:04+00:00,1152,00:06:56.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+250,https://rowsandall.com/rowers/workout/2597/emailcsv,https://rowsandall.com/rowers/workout/2597/emailtcx,125,42,None,2018-05-07 15:41:06+00:00,11019,01:00:40.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+251,https://rowsandall.com/rowers/workout/2490/emailcsv,https://rowsandall.com/rowers/workout/2490/emailtcx,0,0,None,2018-05-10 09:11:24+00:00,15263,01:39:34,Naarden goed,,Europe/Amsterdam,water,80.0,lwt
+252,https://rowsandall.com/rowers/workout/2491/emailcsv,https://rowsandall.com/rowers/workout/2491/emailtcx,0,0,None,2018-05-10 09:11:24+00:00,7378,00:44:59,Naarden goed (1),,Europe/Amsterdam,water,80.0,lwt
+253,https://rowsandall.com/rowers/workout/2492/emailcsv,https://rowsandall.com/rowers/workout/2492/emailtcx,0,0,None,2018-05-10 09:56:24+00:00,7876,00:54:33,Naarden goed (2),,Europe/Amsterdam,water,80.0,lwt
+254,https://rowsandall.com/rowers/workout/2596/emailcsv,https://rowsandall.com/rowers/workout/2596/emailtcx,0,42,None,2018-05-10 16:15:02+00:00,11983,01:01:26,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+255,https://rowsandall.com/rowers/workout/2485/emailcsv,https://rowsandall.com/rowers/workout/2485/emailtcx,0,0,None,2018-05-10 16:55:01+00:00,8000,00:36:01.500000,6k,,Europe/Prague,water,80.0,lwt
+256,https://rowsandall.com/rowers/workout/2486/emailcsv,https://rowsandall.com/rowers/workout/2486/emailtcx,0,0,None,2018-05-10 16:55:01+00:00,8000,00:36:01.500000,Racice 2,,Europe/Prague,water,80.0,lwt
+257,https://rowsandall.com/rowers/workout/2488/emailcsv,https://rowsandall.com/rowers/workout/2488/emailtcx,0,0,None,2018-05-11 07:02:52+00:00,15364,01:22:34,Naarden 1,,Europe/Amsterdam,water,80.0,lwt
+258,https://rowsandall.com/rowers/workout/2504/emailcsv,https://rowsandall.com/rowers/workout/2504/emailtcx,0,0,None,2018-05-12 10:01:00+00:00,16814,01:42:53,DC,"Summary for your location at 2018-05-12T12:52:00Z: Temperature 21.1C/69.9F. Wind: 3.0 m/s (6.0 kt). Wind Bearing: 30.0 degrees
+Summary for your location at 2018-05-12T10:52:00Z: Temperature 19.4C/66.9F. Wind: 3.0 m/s (6.0 kt). Wind Bearing: 40.0 degrees
+Summary for your location at 2018-05-12T11:52:00Z: Temperature 20.6C/69.0F. Wind: 3.6 m/s (7.0 kt). Wind Bearing: 20.0 degrees
+Summary for your location at 2018-05-12T10:52:26+00:00: Clear. Temperature 64.52F/18.0C. Wind: 0.96 m/s. Wind Bearing: 29 degrees",America/New_York,water,80.0,lwt
+259,https://rowsandall.com/rowers/workout/2931/emailcsv,https://rowsandall.com/rowers/workout/2931/emailtcx,0,0,None,2018-05-12 14:22:12+00:00,6510,00:46:56,Test P,,Europe/Bratislava,water,80.0,hwt
+260,https://rowsandall.com/rowers/workout/2513/emailcsv,https://rowsandall.com/rowers/workout/2513/emailtcx,0,0,None,2018-05-13 07:57:02+00:00,4605,00:35:11.700000,Quad,,Europe/Bratislava,water,80.0,lwt
+261,https://rowsandall.com/rowers/workout/2595/emailcsv,https://rowsandall.com/rowers/workout/2595/emailtcx,33,26,None,2018-05-13 07:57:02+00:00,4605,00:35:11.600000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+262,https://rowsandall.com/rowers/workout/2502/emailcsv,https://rowsandall.com/rowers/workout/2502/emailtcx,0,0,None,2018-05-13 09:22:49+00:00,973,00:03:53.900000,Completed a workout (generic) 0.6 mi on 05/13/18,,Europe/Bratislava,water,80.0,lwt
+263,https://rowsandall.com/rowers/workout/2503/emailcsv,https://rowsandall.com/rowers/workout/2503/emailtcx,0,0,None,2018-05-13 09:22:49+00:00,973,00:03:53.900000,Completed a workout (generic) 0.6 mi on 05/13/18,,Europe/Bratislava,water,80.0,lwt
+264,https://rowsandall.com/rowers/workout/2594/emailcsv,https://rowsandall.com/rowers/workout/2594/emailtcx,0,39,None,2018-05-13 16:50:32+00:00,2723,00:27:17.200000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+265,https://rowsandall.com/rowers/workout/2593/emailcsv,https://rowsandall.com/rowers/workout/2593/emailtcx,0,82,None,2018-05-13 16:51:01+00:00,5929,00:43:44.500000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+266,https://rowsandall.com/rowers/workout/2855/emailcsv,https://rowsandall.com/rowers/workout/2855/emailtcx,0,0,None,2018-05-14 13:53:04+00:00,6091,00:25:00.200000,Hradiste,"
+ from csv via rowsandall.com",Europe/Prague,water,80.0,lwt
+267,https://rowsandall.com/rowers/workout/2963/emailcsv,https://rowsandall.com/rowers/workout/2963/emailtcx,0,0,None,2018-05-14 13:53:04+00:00,6091,00:25:00.200000,Hradiste,"
+ from csv via rowsandall.com",Europe/Prague,water,80.0,hwt
+268,https://rowsandall.com/rowers/workout/2493/emailcsv,https://rowsandall.com/rowers/workout/2493/emailtcx,0,0,None,2018-05-15 10:35:00+00:00,10526,00:44:01.700000,Turin,,Europe/Rome,water,80.0,lwt
+269,https://rowsandall.com/rowers/workout/2489/emailcsv,https://rowsandall.com/rowers/workout/2489/emailtcx,0,0,None,2018-05-17 17:40:00+00:00,15364,01:22:34,Naarden 2,,Europe/Amsterdam,water,80.0,lwt
+270,https://rowsandall.com/rowers/workout/2464/emailcsv,https://rowsandall.com/rowers/workout/2464/emailtcx,0,0,None,2018-05-18 13:02:00+00:00,6091,00:25:00.200000,Hradiste,"Failed to download METAR data
+Failed to download METAR data
+Failed to download METAR data
+Failed to download METAR data
+Failed to download METAR data",Europe/Prague,water,80.0,lwt
+271,https://rowsandall.com/rowers/workout/2505/emailcsv,https://rowsandall.com/rowers/workout/2505/emailtcx,0,0,None,2018-05-19 11:55:34+00:00,14274,01:12:33.600000,Roos,,America/New_York,water,80.0,lwt
+272,https://rowsandall.com/rowers/workout/2506/emailcsv,https://rowsandall.com/rowers/workout/2506/emailtcx,0,0,None,2018-05-19 11:55:34+00:00,7384,00:33:59.800000,Roos (1),,America/New_York,water,80.0,lwt
+273,https://rowsandall.com/rowers/workout/2507/emailcsv,https://rowsandall.com/rowers/workout/2507/emailtcx,0,0,None,2018-05-19 12:29:34+00:00,6885,00:38:32.200000,Roos (2),,America/New_York,water,80.0,lwt
+274,https://rowsandall.com/rowers/workout/2511/emailcsv,https://rowsandall.com/rowers/workout/2511/emailtcx,0,0,None,2018-05-27 10:17:01+00:00,10663,00:59:29.700000,Test P,,Europe/Prague,water,80.0,lwt
+275,https://rowsandall.com/rowers/workout/2518/emailcsv,https://rowsandall.com/rowers/workout/2518/emailtcx,0,0,None,2018-05-27 10:17:01+00:00,10663,00:59:29.700000,dubbel,,Europe/Prague,water,80.0,lwt
+276,https://rowsandall.com/rowers/workout/2592/emailcsv,https://rowsandall.com/rowers/workout/2592/emailtcx,121,25,None,2018-05-27 10:17:01+00:00,10663,00:59:29.600000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+277,https://rowsandall.com/rowers/workout/2591/emailcsv,https://rowsandall.com/rowers/workout/2591/emailtcx,89,20,None,2018-05-28 15:11:01+00:00,9642,00:56:16.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+278,https://rowsandall.com/rowers/workout/2514/emailcsv,https://rowsandall.com/rowers/workout/2514/emailtcx,0,0,None,2018-05-30 18:05:25+00:00,11237,01:04:45.500000,Eight,imported through email,Europe/Prague,water,80.0,lwt
+279,https://rowsandall.com/rowers/workout/2516/emailcsv,https://rowsandall.com/rowers/workout/2516/emailtcx,0,0,None,2018-05-30 18:05:25+00:00,11237,01:04:45.500000,Twee Zonder,imported through email,Europe/Prague,water,80.0,lwt
+280,https://rowsandall.com/rowers/workout/2590/emailcsv,https://rowsandall.com/rowers/workout/2590/emailtcx,110,117,None,2018-05-30 18:05:25+00:00,11237,01:04:45.500000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+281,https://rowsandall.com/rowers/workout/2512/emailcsv,https://rowsandall.com/rowers/workout/2512/emailtcx,0,0,None,2018-05-31 16:30:07+00:00,8837,00:47:42.500000,Test,,Europe/Prague,water,80.0,lwt
+282,https://rowsandall.com/rowers/workout/2589/emailcsv,https://rowsandall.com/rowers/workout/2589/emailtcx,99,21,None,2018-05-31 16:30:07+00:00,8837,00:47:42.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+283,https://rowsandall.com/rowers/workout/2508/emailcsv,https://rowsandall.com/rowers/workout/2508/emailtcx,0,0,None,2018-06-01 07:57:02+00:00,4605,00:35:11.700000,Piestany,,Europe/Bratislava,water,80.0,lwt
+284,https://rowsandall.com/rowers/workout/2510/emailcsv,https://rowsandall.com/rowers/workout/2510/emailtcx,0,0,None,2018-06-01 08:02:02+00:00,3975,00:30:08.700000,Piestany (2),,Europe/Bratislava,water,80.0,lwt
+285,https://rowsandall.com/rowers/workout/2509/emailcsv,https://rowsandall.com/rowers/workout/2509/emailtcx,0,0,None,2018-06-01 11:30:07+00:00,8837,00:47:42.500000,Test,,Europe/Prague,water,80.0,lwt
+286,https://rowsandall.com/rowers/workout/2569/emailcsv,https://rowsandall.com/rowers/workout/2569/emailtcx,0,0,None,2018-06-01 15:00:00+00:00,11237,01:04:45.500000,Acht Intervals,,Europe/Prague,water,80.0,lwt
+287,https://rowsandall.com/rowers/workout/2588/emailcsv,https://rowsandall.com/rowers/workout/2588/emailtcx,126,79,None,2018-06-02 17:00:07+00:00,12511,01:07:58,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+288,https://rowsandall.com/rowers/workout/2587/emailcsv,https://rowsandall.com/rowers/workout/2587/emailtcx,81,74,None,2018-06-03 07:57:02+00:00,10830,01:04:35.900000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+289,https://rowsandall.com/rowers/workout/2586/emailcsv,https://rowsandall.com/rowers/workout/2586/emailtcx,56,87,None,2018-06-03 15:50:25+00:00,6125,00:48:38.600000,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+290,https://rowsandall.com/rowers/workout/2535/emailcsv,https://rowsandall.com/rowers/workout/2535/emailtcx,0,0,None,2018-06-05 13:07:02+00:00,0,00:05:01,Test - Delete,,Europe/Prague,rower,80.0,lwt
+291,https://rowsandall.com/rowers/workout/2536/emailcsv,https://rowsandall.com/rowers/workout/2536/emailtcx,0,0,None,2018-06-05 13:07:02+00:00,0,00:05:01,Test Sync - Delete,"
+ from tcx via rowsandall.com",Europe/Prague,rower,80.0,lwt
+292,https://rowsandall.com/rowers/workout/2537/emailcsv,https://rowsandall.com/rowers/workout/2537/emailtcx,0,0,None,2018-06-05 13:07:02+00:00,0,00:05:01,Test P,"
+ from tcx via rowsandall.com",Europe/Prague,rower,80.0,lwt
+293,https://rowsandall.com/rowers/workout/2538/emailcsv,https://rowsandall.com/rowers/workout/2538/emailtcx,0,0,None,2018-06-05 13:07:02+00:00,0,00:05:01,Test P,imported through email,Europe/Prague,rower,80.0,lwt
+294,https://rowsandall.com/rowers/workout/2539/emailcsv,https://rowsandall.com/rowers/workout/2539/emailtcx,0,0,None,2018-06-05 13:07:02+00:00,0,00:05:01,Test P,"imported through email
+ from tcx via rowsandall.com",Europe/Prague,rower,80.0,lwt
+295,https://rowsandall.com/rowers/workout/2540/emailcsv,https://rowsandall.com/rowers/workout/2540/emailtcx,0,0,None,2018-06-05 13:07:02+00:00,0,00:05:01,Workout from Background Queue,imported through email,Europe/Prague,rower,80.0,lwt
+296,https://rowsandall.com/rowers/workout/2624/emailcsv,https://rowsandall.com/rowers/workout/2624/emailtcx,0,0,None,2018-06-05 13:51:01.900000+00:00,12744,01:08:22.100000,imported through ema,imported through email,Europe/Prague,water,80.0,lwt
+297,https://rowsandall.com/rowers/workout/2534/emailcsv,https://rowsandall.com/rowers/workout/2534/emailtcx,0,0,None,2018-06-05 14:05:02+00:00,0,00:01:33,Import from Polar Flow,imported through email,Europe/Prague,rower,80.0,lwt
+298,https://rowsandall.com/rowers/workout/2519/emailcsv,https://rowsandall.com/rowers/workout/2519/emailtcx,0,0,None,2018-06-05 14:09:57+00:00,0,00:03:38,TCX from Polar API,,Europe/Prague,water,80.0,lwt
+299,https://rowsandall.com/rowers/workout/2546/emailcsv,https://rowsandall.com/rowers/workout/2546/emailtcx,0,0,None,2018-06-05 15:51:01+00:00,12744,01:08:22.200000,8x glad,,Europe/Prague,water,80.0,lwt
+300,https://rowsandall.com/rowers/workout/2547/emailcsv,https://rowsandall.com/rowers/workout/2547/emailtcx,0,0,None,2018-06-05 15:51:01+00:00,12746,01:08:22.200000,1x glad,,Europe/Prague,c-boat,80.0,lwt
+301,https://rowsandall.com/rowers/workout/2548/emailcsv,https://rowsandall.com/rowers/workout/2548/emailtcx,0,68,None,2018-06-05 15:51:01+00:00,12744,01:08:22.200000,1x glad,,Europe/Prague,water,80.0,lwt
+302,https://rowsandall.com/rowers/workout/2549/emailcsv,https://rowsandall.com/rowers/workout/2549/emailtcx,0,0,None,2018-06-05 15:51:01+00:00,12746,01:08:22.200000,test,,Europe/Prague,water,80.0,lwt
+303,https://rowsandall.com/rowers/workout/2550/emailcsv,https://rowsandall.com/rowers/workout/2550/emailtcx,0,0,None,2018-06-05 15:51:01+00:00,12746,01:08:22.200000,test tcx,,Europe/Prague,water,80.0,lwt
+304,https://rowsandall.com/rowers/workout/2552/emailcsv,https://rowsandall.com/rowers/workout/2552/emailtcx,0,0,None,2018-06-05 15:51:01+00:00,6522,00:33:00,8x glad (1),,Europe/Prague,water,80.0,lwt
+305,https://rowsandall.com/rowers/workout/2585/emailcsv,https://rowsandall.com/rowers/workout/2585/emailtcx,139,46,None,2018-06-05 15:51:01+00:00,12744,01:08:22.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+306,https://rowsandall.com/rowers/workout/2553/emailcsv,https://rowsandall.com/rowers/workout/2553/emailtcx,0,0,None,2018-06-05 16:24:01+00:00,6213,00:35:19.500000,8x glad (2),,Europe/Prague,water,80.0,lwt
+307,https://rowsandall.com/rowers/workout/2584/emailcsv,https://rowsandall.com/rowers/workout/2584/emailtcx,45,91,None,2018-06-06 17:40:24+00:00,5273,00:42:59,Imported workout,imported from Concept2 log,UTC,rower,80.0,lwt
+308,https://rowsandall.com/rowers/workout/2545/emailcsv,https://rowsandall.com/rowers/workout/2545/emailtcx,0,0,None,2018-06-08 07:25:33+00:00,1994,00:01:59.400000,Test,,Europe/Prague,rower,80.0,hwt
+309,https://rowsandall.com/rowers/workout/2560/emailcsv,https://rowsandall.com/rowers/workout/2560/emailtcx,0,0,None,2018-06-11 15:21:01+00:00,10369,00:56:21.400000,Intervals Tests (7),imported through email,Europe/Prague,water,80.0,lwt
+310,https://rowsandall.com/rowers/workout/2568/emailcsv,https://rowsandall.com/rowers/workout/2568/emailtcx,0,11,None,2018-06-11 15:21:01+00:00,10369,00:56:21.400000,3/2/1,"
+ 5x5min/5min
+ 5x5min/5min",Europe/Prague,water,80.0,lwt
+311,https://rowsandall.com/rowers/workout/2583/emailcsv,https://rowsandall.com/rowers/workout/2583/emailtcx,0,49,None,2018-06-11 15:21:01+00:00,10369,00:56:21.400000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+312,https://rowsandall.com/rowers/workout/2554/emailcsv,https://rowsandall.com/rowers/workout/2554/emailtcx,0,0,None,2018-06-13 14:18:19+00:00,16543,01:30:01.300000,Intervals Tests,,America/New_York,rower,80.0,lwt
+313,https://rowsandall.com/rowers/workout/2555/emailcsv,https://rowsandall.com/rowers/workout/2555/emailtcx,0,0,None,2018-06-13 14:18:35+00:00,12205,01:03:29.500000,Intervals Tests (2),,America/New_York,rower,80.0,lwt
+314,https://rowsandall.com/rowers/workout/2556/emailcsv,https://rowsandall.com/rowers/workout/2556/emailtcx,0,0,None,2018-06-13 14:18:48+00:00,9016,00:48:28.100000,Intervals Tests (3),"
+ 9x1km",America/New_York,rower,80.0,lwt
+315,https://rowsandall.com/rowers/workout/2557/emailcsv,https://rowsandall.com/rowers/workout/2557/emailtcx,0,0,None,2018-06-13 14:19:01+00:00,4789,00:22:05,Intervals Tests (4),,America/New_York,rower,80.0,lwt
+316,https://rowsandall.com/rowers/workout/2558/emailcsv,https://rowsandall.com/rowers/workout/2558/emailtcx,0,0,None,2018-06-13 14:19:19+00:00,0,00:22:54,Intervals Tests (5),,Europe/Prague,rower,80.0,lwt
+317,https://rowsandall.com/rowers/workout/2582/emailcsv,https://rowsandall.com/rowers/workout/2582/emailtcx,32,25,None,2018-06-13 16:11:02+00:00,4191,00:23:36.400000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+318,https://rowsandall.com/rowers/workout/2581/emailcsv,https://rowsandall.com/rowers/workout/2581/emailtcx,0,30,None,2018-06-15 08:05:04+00:00,7301,00:39:44.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+319,https://rowsandall.com/rowers/workout/2580/emailcsv,https://rowsandall.com/rowers/workout/2580/emailtcx,0,38,None,2018-06-16 08:04:00+00:00,5182,00:40:48.100000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+320,https://rowsandall.com/rowers/workout/2579/emailcsv,https://rowsandall.com/rowers/workout/2579/emailtcx,0,43,None,2018-06-16 13:17:06+00:00,8196,00:52:10.500000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+321,https://rowsandall.com/rowers/workout/2950/emailcsv,https://rowsandall.com/rowers/workout/2950/emailtcx,0,0,None,2018-06-17 10:23:24+00:00,6004,01:00:54,Lunch Run,,Europe/Vienna,water,80.0,hwt
+322,https://rowsandall.com/rowers/workout/2954/emailcsv,https://rowsandall.com/rowers/workout/2954/emailtcx,0,0,None,2018-06-17 10:23:24+00:00,6004,01:00:54,Lunch Run,,Europe/Vienna,water,80.0,hwt
+323,https://rowsandall.com/rowers/workout/3035/emailcsv,https://rowsandall.com/rowers/workout/3035/emailtcx,0,17,None,2018-06-17 10:23:24+00:00,6004,01:00:54,Lunch Run, ,Europe/Vienna,other,80.0,hwt
+324,https://rowsandall.com/rowers/workout/2578/emailcsv,https://rowsandall.com/rowers/workout/2578/emailtcx,88,24,None,2018-06-18 16:05:05+00:00,10313,00:55:54.900000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+325,https://rowsandall.com/rowers/workout/2948/emailcsv,https://rowsandall.com/rowers/workout/2948/emailtcx,0,0,None,2018-06-18 16:05:05+00:00,10313,00:55:54,Steady,,Europe/Prague,water,80.0,hwt
+326,https://rowsandall.com/rowers/workout/2952/emailcsv,https://rowsandall.com/rowers/workout/2952/emailtcx,0,0,None,2018-06-18 16:05:05+00:00,10313,00:55:54,Steady,,Europe/Prague,water,80.0,hwt
+327,https://rowsandall.com/rowers/workout/2573/emailcsv,https://rowsandall.com/rowers/workout/2573/emailtcx,0,0,None,2018-06-19 05:57:02+00:00,10437,00:56:06.900000,Pink,,Europe/Prague,water,80.0,lwt
+328,https://rowsandall.com/rowers/workout/2577/emailcsv,https://rowsandall.com/rowers/workout/2577/emailtcx,105,43,None,2018-06-19 05:57:02+00:00,10437,00:56:06.900000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+329,https://rowsandall.com/rowers/workout/2946/emailcsv,https://rowsandall.com/rowers/workout/2946/emailtcx,0,0,None,2018-06-19 05:57:04+00:00,10437,00:56:04,3x6min,,Europe/Prague,water,80.0,hwt
+330,https://rowsandall.com/rowers/workout/2570/emailcsv,https://rowsandall.com/rowers/workout/2570/emailtcx,0,0,None,2018-06-19 15:11:14.220000+00:00,7538,00:56:14.600000,Test,,Europe/Vienna,water,80.0,lwt
+331,https://rowsandall.com/rowers/workout/2571/emailcsv,https://rowsandall.com/rowers/workout/2571/emailtcx,0,0,None,2018-06-20 18:24:08+00:00,7538,00:56:14.500000,Ritmo,,Europe/Vienna,water,80.0,lwt
+332,https://rowsandall.com/rowers/workout/2858/emailcsv,https://rowsandall.com/rowers/workout/2858/emailtcx,0,0,None,2018-06-22 04:33:02.500000+00:00,3344,00:16:55.700000,imported through ema,imported through email,Europe/Prague,water,80.0,hwt
+333,https://rowsandall.com/rowers/workout/2576/emailcsv,https://rowsandall.com/rowers/workout/2576/emailtcx,89,20,None,2018-06-22 05:41:04+00:00,9298,00:50:44,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+334,https://rowsandall.com/rowers/workout/2944/emailcsv,https://rowsandall.com/rowers/workout/2944/emailtcx,0,0,None,2018-06-22 05:41:04+00:00,9298,00:50:44,Steady,,Europe/Prague,water,80.0,hwt
+335,https://rowsandall.com/rowers/workout/2575/emailcsv,https://rowsandall.com/rowers/workout/2575/emailtcx,27,8,None,2018-06-22 06:33:01+00:00,3344,00:16:55.700000,Imported workout,imported from Concept2 log,UTC,water,80.0,lwt
+336,https://rowsandall.com/rowers/workout/2942/emailcsv,https://rowsandall.com/rowers/workout/2942/emailtcx,27,11,None,2018-06-22 06:33:02+00:00,3344,00:16:54,Steady (2),,Europe/Prague,water,80.0,hwt
+337,https://rowsandall.com/rowers/workout/2940/emailcsv,https://rowsandall.com/rowers/workout/2940/emailtcx,0,0,None,2018-06-22 10:45:04+00:00,7540,00:56:14,test delete,,Europe/Vienna,water,80.0,hwt
+338,https://rowsandall.com/rowers/workout/2725/emailcsv,https://rowsandall.com/rowers/workout/2725/emailtcx,0,0,None,2018-06-22 12:17:56+00:00,15642,01:15:00,Mike,"
+ 3x20min/5min",Europe/Prague,water,80.0,lwt
+339,https://rowsandall.com/rowers/workout/2726/emailcsv,https://rowsandall.com/rowers/workout/2726/emailtcx,0,0,None,2018-06-22 12:17:56+00:00,15642,01:15:00,Mike test,,Europe/Prague,water,80.0,lwt
+340,https://rowsandall.com/rowers/workout/2848/emailcsv,https://rowsandall.com/rowers/workout/2848/emailtcx,0,0,None,2018-06-24 05:34:07+00:00,10194,00:57:48.900000,Imported,,Europe/Prague,water,80.0,lwt
+341,https://rowsandall.com/rowers/workout/2849/emailcsv,https://rowsandall.com/rowers/workout/2849/emailtcx,0,0,None,2018-06-24 05:34:07.200000+00:00,10194,00:57:48.900000,Imported,,Europe/Prague,water,80.0,lwt
+342,https://rowsandall.com/rowers/workout/2957/emailcsv,https://rowsandall.com/rowers/workout/2957/emailtcx,0,0,None,2018-06-24 05:34:07.200000+00:00,10194,00:57:48.900000,Imported,,Europe/Prague,water,80.0,hwt
+343,https://rowsandall.com/rowers/workout/2938/emailcsv,https://rowsandall.com/rowers/workout/2938/emailtcx,0,0,None,2018-06-24 07:34:07+00:00,10194,00:57:43,Double,,Europe/Prague,water,80.0,hwt
+344,https://rowsandall.com/rowers/workout/3059/emailcsv,https://rowsandall.com/rowers/workout/3059/emailtcx,102,53,None,2018-06-26 15:06:01+00:00,10393,01:00:55.900000,C2 Import Workout from 2018-06-26 15:06:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+345,https://rowsandall.com/rowers/workout/2936/emailcsv,https://rowsandall.com/rowers/workout/2936/emailtcx,42,30,None,2018-06-26 15:06:04+00:00,5651,00:31:24,Sprintervals,,Europe/Prague,water,80.0,hwt
+346,https://rowsandall.com/rowers/workout/2934/emailcsv,https://rowsandall.com/rowers/workout/2934/emailtcx,0,0,None,2018-06-26 15:38:08+00:00,1056,00:05:12,Sprintervals (2),,Europe/Brussels,water,80.0,hwt
+347,https://rowsandall.com/rowers/workout/2932/emailcsv,https://rowsandall.com/rowers/workout/2932/emailtcx,0,0,None,2018-06-26 15:44:06+00:00,3684,00:22:50,Sprintervals (3),,Europe/Prague,water,80.0,hwt
+348,https://rowsandall.com/rowers/workout/2959/emailcsv,https://rowsandall.com/rowers/workout/2959/emailtcx,160,38,None,2018-06-30 05:31:02.200000+00:00,13878,01:21:16.600000,,"
+ from speedcoach2v2.15 via rowsandall.com",Europe/Prague,water,80.0,hwt
+349,https://rowsandall.com/rowers/workout/2958/emailcsv,https://rowsandall.com/rowers/workout/2958/emailtcx,0,0,None,2018-06-30 07:31:01+00:00,13878,01:21:16.600000,C2 Import Workout from 2018-06-30 07:31:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+350,https://rowsandall.com/rowers/workout/3030/emailcsv,https://rowsandall.com/rowers/workout/3030/emailtcx,80,6031,None,2018-07-01 11:57:30+00:00,12879,00:57:00,Ride to pub, ,Europe/Prague,other,80.0,hwt
+351,https://rowsandall.com/rowers/workout/3031/emailcsv,https://rowsandall.com/rowers/workout/3031/emailtcx,0,0,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Test P,,Europe/Prague,water,80.0,hwt
+352,https://rowsandall.com/rowers/workout/3058/emailcsv,https://rowsandall.com/rowers/workout/3058/emailtcx,14,16,None,2018-07-02 16:21:01+00:00,2858,00:15:40.600000,C2 Import Workout from 2018-07-02 16:21:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+353,https://rowsandall.com/rowers/workout/3063/emailcsv,https://rowsandall.com/rowers/workout/3063/emailtcx,120,79,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Test Strava Export,,Europe/Prague,water,80.0,hwt
+354,https://rowsandall.com/rowers/workout/3064/emailcsv,https://rowsandall.com/rowers/workout/3064/emailtcx,120,79,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Test Strava Export,,Europe/Prague,water,80.0,hwt
+355,https://rowsandall.com/rowers/workout/3065/emailcsv,https://rowsandall.com/rowers/workout/3065/emailtcx,0,0,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Test Strava Export,,Europe/Prague,water,80.0,hwt
+356,https://rowsandall.com/rowers/workout/3066/emailcsv,https://rowsandall.com/rowers/workout/3066/emailtcx,120,79,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Test Strava Export,,Europe/Prague,water,80.0,hwt
+357,https://rowsandall.com/rowers/workout/3068/emailcsv,https://rowsandall.com/rowers/workout/3068/emailtcx,0,0,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Should be exported To Strava,,Europe/Prague,water,80.0,hwt
+358,https://rowsandall.com/rowers/workout/3070/emailcsv,https://rowsandall.com/rowers/workout/3070/emailtcx,120,79,None,2018-07-02 16:21:01+00:00,12532,01:09:16.500000,Should Not Be Exported To Strava,,Europe/Prague,water,80.0,hwt
+359,https://rowsandall.com/rowers/workout/3057/emailcsv,https://rowsandall.com/rowers/workout/3057/emailtcx,16,16,None,2018-07-02 16:40:02+00:00,2001,00:08:29,C2 Import Workout from 2018-07-02 16:40:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+360,https://rowsandall.com/rowers/workout/3056/emailcsv,https://rowsandall.com/rowers/workout/3056/emailtcx,23,15,None,2018-07-02 16:50:02+00:00,2136,00:09:16.200000,C2 Import Workout from 2018-07-02 16:50:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+361,https://rowsandall.com/rowers/workout/3055/emailcsv,https://rowsandall.com/rowers/workout/3055/emailtcx,23,23,None,2018-07-02 17:01:02+00:00,2058,00:08:38.800000,C2 Import Workout from 2018-07-02 17:01:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+362,https://rowsandall.com/rowers/workout/3008/emailcsv,https://rowsandall.com/rowers/workout/3008/emailtcx,22,0,None,2018-07-02 17:01:05+00:00,2058,00:08:35,2ks with focus (4),,Europe/Prague,water,80.0,hwt
+363,https://rowsandall.com/rowers/workout/3028/emailcsv,https://rowsandall.com/rowers/workout/3028/emailtcx,22,0,None,2018-07-02 17:01:05+00:00,2058,00:08:35,2ks with focus (4),,Europe/Prague,water,80.0,hwt
+364,https://rowsandall.com/rowers/workout/3054/emailcsv,https://rowsandall.com/rowers/workout/3054/emailtcx,28,20,None,2018-07-02 17:11:02+00:00,2149,00:09:47.300000,C2 Import Workout from 2018-07-02 17:11:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+365,https://rowsandall.com/rowers/workout/3006/emailcsv,https://rowsandall.com/rowers/workout/3006/emailtcx,27,0,None,2018-07-02 17:11:05+00:00,2149,00:09:44,2ks with focus (5),,Europe/Prague,water,80.0,hwt
+366,https://rowsandall.com/rowers/workout/3026/emailcsv,https://rowsandall.com/rowers/workout/3026/emailtcx,27,0,None,2018-07-02 17:11:05+00:00,2149,00:09:44,2ks with focus (5),,Europe/Prague,water,80.0,hwt
+367,https://rowsandall.com/rowers/workout/3053/emailcsv,https://rowsandall.com/rowers/workout/3053/emailtcx,10,7,None,2018-07-02 17:24:02+00:00,1328,00:06:15.500000,C2 Import Workout from 2018-07-02 17:24:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+368,https://rowsandall.com/rowers/workout/3004/emailcsv,https://rowsandall.com/rowers/workout/3004/emailtcx,10,0,None,2018-07-02 17:24:05+00:00,1328,00:06:12,2ks with focus (6),,Europe/Prague,water,80.0,hwt
+369,https://rowsandall.com/rowers/workout/3024/emailcsv,https://rowsandall.com/rowers/workout/3024/emailtcx,10,0,None,2018-07-02 17:24:05+00:00,1328,00:06:12,2ks with focus (6),,Europe/Prague,water,80.0,hwt
+370,https://rowsandall.com/rowers/workout/2964/emailcsv,https://rowsandall.com/rowers/workout/2964/emailtcx,0,0,None,2018-07-04 15:06:42+00:00,7350,00:31:07,Test,,Europe/Prague,rower,80.0,hwt
+371,https://rowsandall.com/rowers/workout/2965/emailcsv,https://rowsandall.com/rowers/workout/2965/emailtcx,0,103,None,2018-07-04 16:19:01+00:00,10471,01:00:27.200000,Test TRIMP,,Europe/Prague,water,80.0,hwt
+372,https://rowsandall.com/rowers/workout/2966/emailcsv,https://rowsandall.com/rowers/workout/2966/emailtcx,0,98,None,2018-07-04 16:19:01+00:00,10471,01:00:27.200000,Test Rscore,,Europe/Prague,water,80.0,hwt
+373,https://rowsandall.com/rowers/workout/3052/emailcsv,https://rowsandall.com/rowers/workout/3052/emailtcx,0,70,None,2018-07-04 16:19:01+00:00,10471,01:00:27.100000,C2 Import Workout from 2018-07-04 16:19:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+374,https://rowsandall.com/rowers/workout/3279/emailcsv,https://rowsandall.com/rowers/workout/3279/emailtcx,0,0,None,2018-07-04 16:19:01+00:00,10471,01:00:27.200000,Ranking Pieces,,Europe/Prague,water,80.0,hwt
+375,https://rowsandall.com/rowers/workout/2967/emailcsv,https://rowsandall.com/rowers/workout/2967/emailtcx,0,96,None,2018-07-04 16:19:02+00:00,10471,01:00:26,Startjes,"
+ from csv via rowsandall.com",Europe/Prague,water,80.0,hwt
+376,https://rowsandall.com/rowers/workout/3002/emailcsv,https://rowsandall.com/rowers/workout/3002/emailtcx,0,98,None,2018-07-04 16:19:02+00:00,10471,01:00:26,Startjes,,Europe/Prague,water,80.0,hwt
+377,https://rowsandall.com/rowers/workout/3022/emailcsv,https://rowsandall.com/rowers/workout/3022/emailtcx,0,98,None,2018-07-04 16:19:02+00:00,10471,01:00:26,Startjes,,Europe/Prague,water,80.0,hwt
+378,https://rowsandall.com/rowers/workout/3051/emailcsv,https://rowsandall.com/rowers/workout/3051/emailtcx,17,8,None,2018-07-07 07:43:02+00:00,2874,00:16:39.700000,C2 Import Workout from 2018-07-07 07:43:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+379,https://rowsandall.com/rowers/workout/3000/emailcsv,https://rowsandall.com/rowers/workout/3000/emailtcx,17,0,None,2018-07-07 07:43:03+00:00,2874,00:16:38,2x race prep,,Europe/Prague,water,80.0,hwt
+380,https://rowsandall.com/rowers/workout/3020/emailcsv,https://rowsandall.com/rowers/workout/3020/emailtcx,17,0,None,2018-07-07 07:43:03+00:00,2874,00:16:38,2x race prep,,Europe/Prague,water,80.0,hwt
+381,https://rowsandall.com/rowers/workout/3050/emailcsv,https://rowsandall.com/rowers/workout/3050/emailtcx,2,7,None,2018-07-07 08:01:01+00:00,743,00:02:45.500000,C2 Import Workout from 2018-07-07 08:01:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+382,https://rowsandall.com/rowers/workout/2998/emailcsv,https://rowsandall.com/rowers/workout/2998/emailtcx,2,0,None,2018-07-07 08:01:02+00:00,743,00:02:44,2x race prep (2),,Europe/Prague,bike,80.0,hwt
+383,https://rowsandall.com/rowers/workout/3018/emailcsv,https://rowsandall.com/rowers/workout/3018/emailtcx,2,0,None,2018-07-07 08:01:02+00:00,743,00:02:44,2x race prep (2),,Europe/Prague,water,80.0,hwt
+384,https://rowsandall.com/rowers/workout/3049/emailcsv,https://rowsandall.com/rowers/workout/3049/emailtcx,21,8,None,2018-07-07 08:05:03+00:00,2827,00:15:21.800000,C2 Import Workout from 2018-07-07 08:05:03+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+385,https://rowsandall.com/rowers/workout/2996/emailcsv,https://rowsandall.com/rowers/workout/2996/emailtcx,21,0,None,2018-07-07 08:05:06+00:00,2827,00:15:18,2x race prep (3),,Europe/Prague,water,80.0,hwt
+386,https://rowsandall.com/rowers/workout/3016/emailcsv,https://rowsandall.com/rowers/workout/3016/emailtcx,21,0,None,2018-07-07 08:05:06+00:00,2827,00:15:18,2x race prep (3),,Europe/Prague,water,80.0,hwt
+387,https://rowsandall.com/rowers/workout/3048/emailcsv,https://rowsandall.com/rowers/workout/3048/emailtcx,4,8,None,2018-07-07 08:22:01+00:00,749,00:03:12.500000,C2 Import Workout from 2018-07-07 08:22:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+388,https://rowsandall.com/rowers/workout/2994/emailcsv,https://rowsandall.com/rowers/workout/2994/emailtcx,4,0,None,2018-07-07 08:22:02+00:00,749,00:03:11,2x race prep (4),,Europe/Prague,water,80.0,hwt
+389,https://rowsandall.com/rowers/workout/3014/emailcsv,https://rowsandall.com/rowers/workout/3014/emailtcx,4,0,None,2018-07-07 08:22:02+00:00,749,00:03:11,2x race prep (4),,Europe/Prague,water,80.0,hwt
+390,https://rowsandall.com/rowers/workout/3047/emailcsv,https://rowsandall.com/rowers/workout/3047/emailtcx,13,5,None,2018-07-07 08:27:03+00:00,2058,00:11:55.800000,C2 Import Workout from 2018-07-07 08:27:03+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+391,https://rowsandall.com/rowers/workout/2992/emailcsv,https://rowsandall.com/rowers/workout/2992/emailtcx,13,14,None,2018-07-07 08:27:06+00:00,2058,00:11:52,2x race prep (5),,Europe/Prague,water,75.0,hwt
+392,https://rowsandall.com/rowers/workout/3012/emailcsv,https://rowsandall.com/rowers/workout/3012/emailtcx,13,15,None,2018-07-07 08:27:06+00:00,2058,00:11:52,2x race prep (5),,Europe/Prague,water,80.0,hwt
+393,https://rowsandall.com/rowers/workout/2969/emailcsv,https://rowsandall.com/rowers/workout/2969/emailtcx,100,116,None,2018-07-08 13:17:02+00:00,10372,01:00:18.100000,HRTSS,,Europe/Prague,water,80.0,hwt
+394,https://rowsandall.com/rowers/workout/3046/emailcsv,https://rowsandall.com/rowers/workout/3046/emailtcx,101,44,None,2018-07-08 13:17:02+00:00,10372,01:00:18,C2 Import Workout from 2018-07-08 13:17:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+395,https://rowsandall.com/rowers/workout/3034/emailcsv,https://rowsandall.com/rowers/workout/3034/emailtcx,0,0,None,2018-07-08 13:17:08+00:00,10372,01:00:12,Tempovky,,Europe/Prague,water,80.0,hwt
+396,https://rowsandall.com/rowers/workout/3045/emailcsv,https://rowsandall.com/rowers/workout/3045/emailtcx,0,8,None,2018-07-13 13:08:00+00:00,2481,00:13:41,C2 Import Workout from 2018-07-13 13:08:00+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+397,https://rowsandall.com/rowers/workout/3044/emailcsv,https://rowsandall.com/rowers/workout/3044/emailtcx,0,21,None,2018-07-13 13:23:01+00:00,4085,00:22:09.200000,C2 Import Workout from 2018-07-13 13:23:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+398,https://rowsandall.com/rowers/workout/3043/emailcsv,https://rowsandall.com/rowers/workout/3043/emailtcx,0,44,None,2018-07-14 08:59:02+00:00,7051,00:50:00.500000,C2 Import Workout from 2018-07-14 08:59:02+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+399,https://rowsandall.com/rowers/workout/3280/emailcsv,https://rowsandall.com/rowers/workout/3280/emailtcx,0,0,None,2018-07-14 08:59:02+00:00,7051,00:50:00.500000,Ranking Pieces (2),,Europe/Prague,water,80.0,hwt
+400,https://rowsandall.com/rowers/workout/3042/emailcsv,https://rowsandall.com/rowers/workout/3042/emailtcx,0,144,None,2018-07-14 13:33:00+00:00,4471,00:51:42.100000,C2 Import Workout from 2018-07-14 13:33:00+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+401,https://rowsandall.com/rowers/workout/3041/emailcsv,https://rowsandall.com/rowers/workout/3041/emailtcx,0,49,None,2018-07-14 15:48:01+00:00,4486,00:56:58.100000,C2 Import Workout from 2018-07-14 15:48:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+402,https://rowsandall.com/rowers/workout/3040/emailcsv,https://rowsandall.com/rowers/workout/3040/emailtcx,0,37,None,2018-07-15 06:10:01+00:00,4233,00:29:17,C2 Import Workout from 2018-07-15 06:10:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+403,https://rowsandall.com/rowers/workout/3039/emailcsv,https://rowsandall.com/rowers/workout/3039/emailtcx,0,66,None,2018-07-15 09:01:01+00:00,4978,00:41:45,C2 Import Workout from 2018-07-15 09:01:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+404,https://rowsandall.com/rowers/workout/3038/emailcsv,https://rowsandall.com/rowers/workout/3038/emailtcx,116,29,None,2018-07-18 05:00:01+00:00,11159,00:59:58,C2 Import Workout from 2018-07-18 05:00:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+405,https://rowsandall.com/rowers/workout/3037/emailcsv,https://rowsandall.com/rowers/workout/3037/emailtcx,80,56,None,2018-07-20 09:29:01+00:00,8436,00:45:44.500000,C2 Import Workout from 2018-07-20 09:29:01+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+406,https://rowsandall.com/rowers/workout/3036/emailcsv,https://rowsandall.com/rowers/workout/3036/emailtcx,65,45,None,2018-07-21 05:13:03+00:00,9639,00:54:19.500000,C2 Import Workout from 2018-07-21 05:13:03+00:00,imported from Concept2 log,UTC,water,80.0,lwt
+407,https://rowsandall.com/rowers/workout/3281/emailcsv,https://rowsandall.com/rowers/workout/3281/emailtcx,0,0,None,2018-07-28 06:55:03+00:00,5390,00:39:17.200000,Ranking Pieces (3),,Europe/Berlin,water,80.0,hwt
+408,https://rowsandall.com/rowers/workout/3282/emailcsv,https://rowsandall.com/rowers/workout/3282/emailtcx,0,0,None,2018-08-17 05:16:03+00:00,8315,00:45:11.400000,Ranking Pieces (4),,Europe/Prague,water,80.0,hwt
+409,https://rowsandall.com/rowers/workout/3075/emailcsv,https://rowsandall.com/rowers/workout/3075/emailtcx,83,28,None,2018-08-18 07:54:04+00:00,9590,00:55:08,Technique 2x, ,Europe/Prague,water,80.0,hwt
+410,https://rowsandall.com/rowers/workout/3074/emailcsv,https://rowsandall.com/rowers/workout/3074/emailtcx,94,17,None,2018-08-26 22:00:01.500000+00:00,9903,00:54:36,Imported,,Europe/Prague,bike,80.0,hwt
+411,https://rowsandall.com/rowers/workout/3076/emailcsv,https://rowsandall.com/rowers/workout/3076/emailtcx,94,1104,None,2018-08-26 22:00:01.500000+00:00,9903,00:54:36,Imported,,Europe/Prague,bike,80.0,hwt
+412,https://rowsandall.com/rowers/workout/3072/emailcsv,https://rowsandall.com/rowers/workout/3072/emailtcx,15,4,None,2018-08-27 14:36:47+00:00,5855,00:14:58.700000,Bike Erg,,Europe/Prague,bikeerg,80.0,hwt
+413,https://rowsandall.com/rowers/workout/3073/emailcsv,https://rowsandall.com/rowers/workout/3073/emailtcx,15,4,None,2018-08-27 14:36:47+00:00,5855,00:14:58.700000,Bike Erg,,Europe/Prague,bike,80.0,hwt
+414,https://rowsandall.com/rowers/workout/3283/emailcsv,https://rowsandall.com/rowers/workout/3283/emailtcx,0,0,None,2018-08-30 14:20:05+00:00,10000,00:48:01.500000,Ranking Pieces (5),,Europe/Prague,water,80.0,hwt
+415,https://rowsandall.com/rowers/workout/3284/emailcsv,https://rowsandall.com/rowers/workout/3284/emailtcx,0,0,None,2018-09-03 16:03:05+00:00,9000,00:41:13.500000,Ranking Pieces (6),,Europe/Prague,water,80.0,hwt
+416,https://rowsandall.com/rowers/workout/3077/emailcsv,https://rowsandall.com/rowers/workout/3077/emailtcx,0,68,None,2018-09-11 05:31:02+00:00,7490,00:35:07.500000,7.5k,,Europe/Prague,water,80.0,hwt
+417,https://rowsandall.com/rowers/workout/3080/emailcsv,https://rowsandall.com/rowers/workout/3080/emailtcx,51,10,None,2018-09-12 04:17:04+00:00,5921,00:34:50,Sofia part II, ,Europe/Sofia,other,80.0,hwt
+418,https://rowsandall.com/rowers/workout/3091/emailcsv,https://rowsandall.com/rowers/workout/3091/emailtcx,52,0,None,2018-09-12 07:17:04+00:00,5890,00:34:49,Imported data,"Import from Polar Flow -
+ from tcx via rowsandall.com",Europe/Sofia,other,80.0,hwt
+419,https://rowsandall.com/rowers/workout/3079/emailcsv,https://rowsandall.com/rowers/workout/3079/emailtcx,87,60,None,2018-09-13 12:15:58+00:00,23476,00:59:59.700000,Mike 2,,Europe/Prague,rower,80.0,hwt
+420,https://rowsandall.com/rowers/workout/3078/emailcsv,https://rowsandall.com/rowers/workout/3078/emailtcx,94,59,None,2018-09-14 13:02:04+00:00,24267,00:59:57.200000,Mike,,Europe/Prague,rower,80.0,hwt
+421,https://rowsandall.com/rowers/workout/3085/emailcsv,https://rowsandall.com/rowers/workout/3085/emailtcx,0,0,None,2018-09-23 11:05:51+00:00,2207,00:09:58.600000,Quiske,,Europe/Prague,water,80.0,hwt
+422,https://rowsandall.com/rowers/workout/3061/emailcsv,https://rowsandall.com/rowers/workout/3061/emailtcx,77,43,None,2018-10-02 05:16:03+00:00,8315,00:45:11.400000,Brnenske 2k,,Europe/Prague,water,80.0,hwt
+423,https://rowsandall.com/rowers/workout/3087/emailcsv,https://rowsandall.com/rowers/workout/3087/emailtcx,18,15,None,2018-10-02 05:16:03+00:00,3003,00:16:59.900000,Brnenske 2k (1),,Europe/Prague,water,80.0,hwt
+424,https://rowsandall.com/rowers/workout/3088/emailcsv,https://rowsandall.com/rowers/workout/3088/emailtcx,59,27,None,2018-10-02 05:33:03+00:00,5312,00:28:09.700000,Brnenske 2k (2),,Europe/Prague,water,80.0,hwt
+425,https://rowsandall.com/rowers/workout/3089/emailcsv,https://rowsandall.com/rowers/workout/3089/emailtcx,85,34,None,2018-10-02 05:33:03+00:00,5312,00:45:11.400000,Fused data,,Europe/Prague,water,80.0,hwt
+426,https://rowsandall.com/rowers/workout/3090/emailcsv,https://rowsandall.com/rowers/workout/3090/emailtcx,17,1,None,2018-10-06 10:38:03.900000+00:00,2027,00:14:02.100000,Imported,,Europe/Prague,water,80.0,hwt
+427,https://rowsandall.com/rowers/workout/3084/emailcsv,https://rowsandall.com/rowers/workout/3084/emailtcx,93,48,None,2018-10-06 12:07:02+00:00,6145,00:28:57.400000,Bike Erg,"
+Failed to download METAR data
+Summary for your location at 2018-10-06T12:21:53+00:00: Breezy and Mostly Cloudy. Temperature 68.28F/20.1C. Wind: 3.34 m/s. Wind Bearing: 169 degrees",Europe/Prague,water,80.0,hwt
+428,https://rowsandall.com/rowers/workout/3093/emailcsv,https://rowsandall.com/rowers/workout/3093/emailtcx,93,61,None,2018-10-06 12:07:02+00:00,6145,00:28:57.400000,Test Upload,,Europe/Prague,rower,80.0,hwt
+429,https://rowsandall.com/rowers/workout/3285/emailcsv,https://rowsandall.com/rowers/workout/3285/emailtcx,0,0,None,2018-10-06 12:07:02+00:00,6145,00:28:57.400000,Ranking Pieces (7),,Europe/Prague,water,80.0,hwt
+430,https://rowsandall.com/rowers/workout/3275/emailcsv,https://rowsandall.com/rowers/workout/3275/emailtcx,0,0,None,2018-10-06 12:38:02+00:00,2027,00:14:02.200000,Empower Data,,Europe/Prague,water,80.0,hwt
+431,https://rowsandall.com/rowers/workout/3092/emailcsv,https://rowsandall.com/rowers/workout/3092/emailtcx,68,58,None,2018-10-07 14:50:32+00:00,8214,00:50:55.900000,Imported,,Europe/Prague,rower,80.0,hwt
+432,https://rowsandall.com/rowers/workout/3097/emailcsv,https://rowsandall.com/rowers/workout/3097/emailtcx,144,93,None,2018-10-17 06:20:02.510070+00:00,14600,01:04:15.500000,Steady,,Europe/Prague,rower,80.0,hwt
+433,https://rowsandall.com/rowers/workout/3099/emailcsv,https://rowsandall.com/rowers/workout/3099/emailtcx,32,33,None,2018-10-17 12:17:12+00:00,6473,00:34:00,Indoor,,Europe/Prague,rower,80.0,hwt
+434,https://rowsandall.com/rowers/workout/3098/emailcsv,https://rowsandall.com/rowers/workout/3098/emailtcx,92,0,None,2018-10-21 11:29:51+00:00,11083,00:59:34.500000,Test Boat,,Europe/Prague,water,80.0,hwt
+435,https://rowsandall.com/rowers/workout/3109/emailcsv,https://rowsandall.com/rowers/workout/3109/emailtcx,91,4403,None,2018-10-21 11:29:51+00:00,11083,00:59:35,Steady 4x, ,Europe/Prague,water,80.0,hwt
+436,https://rowsandall.com/rowers/workout/3100/emailcsv,https://rowsandall.com/rowers/workout/3100/emailtcx,0,0,None,2018-10-22 19:45:37+00:00,16282,01:24:40.600000,Quad,,America/New_York,rower,80.0,hwt
+437,https://rowsandall.com/rowers/workout/3101/emailcsv,https://rowsandall.com/rowers/workout/3101/emailtcx,0,0,None,2018-10-22 19:48:31+00:00,4822,00:28:27.600000,Eight,,America/New_York,rower,80.0,hwt
+438,https://rowsandall.com/rowers/workout/3102/emailcsv,https://rowsandall.com/rowers/workout/3102/emailtcx,0,0,None,2018-10-22 19:53:35+00:00,16282,01:24:40.600000,Quad,,America/New_York,rower,80.0,hwt
+439,https://rowsandall.com/rowers/workout/3103/emailcsv,https://rowsandall.com/rowers/workout/3103/emailtcx,0,0,None,2018-10-22 19:56:03+00:00,4822,00:28:27.600000,Eight,,America/New_York,rower,80.0,hwt
+440,https://rowsandall.com/rowers/workout/3104/emailcsv,https://rowsandall.com/rowers/workout/3104/emailtcx,0,0,None,2018-10-22 19:58:18+00:00,16282,01:24:40.600000,Quad,,America/New_York,water,80.0,hwt
+441,https://rowsandall.com/rowers/workout/3105/emailcsv,https://rowsandall.com/rowers/workout/3105/emailtcx,0,0,None,2018-10-22 19:59:55+00:00,16282,01:24:40.600000,Quad,,America/New_York,rower,80.0,hwt
+442,https://rowsandall.com/rowers/workout/3106/emailcsv,https://rowsandall.com/rowers/workout/3106/emailtcx,0,0,None,2018-10-22 20:04:15+00:00,16282,01:24:40.600000,Test,,America/New_York,rower,80.0,hwt
+443,https://rowsandall.com/rowers/workout/3107/emailcsv,https://rowsandall.com/rowers/workout/3107/emailtcx,0,0,None,2018-10-22 20:08:10+00:00,16282,01:24:40.600000,aap,,America/New_York,rower,80.0,hwt
+444,https://rowsandall.com/rowers/workout/3116/emailcsv,https://rowsandall.com/rowers/workout/3116/emailtcx,8,8,None,2018-10-25 17:20:06+00:00,10728,00:53:32.300000,5x1500m (25oct),,Europe/Prague,rower,80.0,hwt
+445,https://rowsandall.com/rowers/workout/3117/emailcsv,https://rowsandall.com/rowers/workout/3117/emailtcx,8,8,None,2018-10-25 17:20:06+00:00,10728,00:53:32.300000,5x1500,,Europe/Prague,rower,80.0,hwt
+446,https://rowsandall.com/rowers/workout/3118/emailcsv,https://rowsandall.com/rowers/workout/3118/emailtcx,8,8,None,2018-10-25 17:20:06+00:00,10728,00:53:32.300000,,,Europe/Prague,rower,80.0,hwt
+447,https://rowsandall.com/rowers/workout/3119/emailcsv,https://rowsandall.com/rowers/workout/3119/emailtcx,8,74,None,2018-10-25 17:20:06+00:00,10728,00:53:32.300000,,,Europe/Prague,rower,80.0,hwt
+448,https://rowsandall.com/rowers/workout/3122/emailcsv,https://rowsandall.com/rowers/workout/3122/emailtcx,102,71,None,2018-10-25 17:20:06+00:00,10728,00:53:32.300000,25oct,,Europe/Prague,rower,80.0,hwt
+449,https://rowsandall.com/rowers/workout/3111/emailcsv,https://rowsandall.com/rowers/workout/3111/emailtcx,196,119,None,2018-10-26 14:23:10+00:00,21102,01:29:22,Steady HM, ,Europe/Prague,rower,80.0,hwt
+450,https://rowsandall.com/rowers/workout/3198/emailcsv,https://rowsandall.com/rowers/workout/3198/emailtcx,106,0,None,2018-10-28 09:40:58+00:00,11896,01:05:44,Morning Run, ,Europe/Prague,Run,80.0,hwt
+451,https://rowsandall.com/rowers/workout/3112/emailcsv,https://rowsandall.com/rowers/workout/3112/emailtcx,0,0,None,2018-10-28 12:23:05+00:00,16282,01:24:40.600000,Quad,,America/New_York,water,80.0,hwt
+452,https://rowsandall.com/rowers/workout/3115/emailcsv,https://rowsandall.com/rowers/workout/3115/emailtcx,10,12,None,2018-10-31 18:52:37+00:00,10470,00:48:46.600000,5c1500m (31oct),,Europe/Prague,rower,80.0,hwt
+453,https://rowsandall.com/rowers/workout/3120/emailcsv,https://rowsandall.com/rowers/workout/3120/emailtcx,126,50,None,2018-10-31 18:52:37+00:00,10470,00:48:46.600000,,,Europe/Prague,rower,80.0,hwt
+454,https://rowsandall.com/rowers/workout/3121/emailcsv,https://rowsandall.com/rowers/workout/3121/emailtcx,96,61,None,2018-10-31 18:52:37+00:00,10470,00:48:46.600000,31oct,,Europe/Prague,rower,80.0,hwt
+455,https://rowsandall.com/rowers/workout/3178/emailcsv,https://rowsandall.com/rowers/workout/3178/emailtcx,98,0,None,2018-10-31 18:52:37+00:00,10470,00:48:47,5x1500m, ,Europe/Prague,rower,80.0,hwt
+456,https://rowsandall.com/rowers/workout/3195/emailcsv,https://rowsandall.com/rowers/workout/3195/emailtcx,0,0,None,2018-11-02 19:00:56+00:00,544,00:02:21,Steady in Naarden, ,Europe/Prague,rower,80.0,hwt
+457,https://rowsandall.com/rowers/workout/3196/emailcsv,https://rowsandall.com/rowers/workout/3196/emailtcx,184,0,None,2018-11-03 07:07:28+00:00,14893,01:31:16,BoatCoach Raw Workout Data,,Europe/Amsterdam,water,80.0,hwt
+458,https://rowsandall.com/rowers/workout/3190/emailcsv,https://rowsandall.com/rowers/workout/3190/emailtcx,32,0,None,2018-11-04 15:19:03+00:00,4064,00:16:09,Fwd: November vieren 4*, ,Europe/Amsterdam,water,80.0,hwt
+459,https://rowsandall.com/rowers/workout/3191/emailcsv,https://rowsandall.com/rowers/workout/3191/emailtcx,7,0,None,2018-11-04 15:19:03+00:00,1227,00:05:00,Fwd: November vieren 4* (1), ,Europe/Amsterdam,water,80.0,hwt
+460,https://rowsandall.com/rowers/workout/3192/emailcsv,https://rowsandall.com/rowers/workout/3192/emailtcx,24,0,None,2018-11-04 15:24:03+00:00,2828,00:11:07,Fwd: November vieren 4* (2), ,Europe/Amsterdam,water,80.0,hwt
+461,https://rowsandall.com/rowers/workout/3193/emailcsv,https://rowsandall.com/rowers/workout/3193/emailtcx,112,0,None,2018-11-05 13:00:00+00:00,12000,03:00:00,Snow Shoe,,Europe/Prague,Snowshoe,80.0,hwt
+462,https://rowsandall.com/rowers/workout/3194/emailcsv,https://rowsandall.com/rowers/workout/3194/emailtcx,112,0,None,2018-11-05 13:00:00+00:00,12000,03:00:00,Snow Shoe, ,Europe/Prague,Snowshoe,80.0,hwt
+463,https://rowsandall.com/rowers/workout/3200/emailcsv,https://rowsandall.com/rowers/workout/3200/emailtcx,112,0,None,2018-11-05 13:00:00+00:00,12000,03:00:00,Snow Shoe, ,Europe/Prague,rower,80.0,hwt
+464,https://rowsandall.com/rowers/workout/3201/emailcsv,https://rowsandall.com/rowers/workout/3201/emailtcx,112,0,None,2018-11-05 13:00:00+00:00,12000,03:00:00,Snow Shoe, ,Europe/Prague,other,80.0,hwt
+465,https://rowsandall.com/rowers/workout/3123/emailcsv,https://rowsandall.com/rowers/workout/3123/emailtcx,3,2,None,2018-11-09 09:22:17+00:00,500,00:02:00,Manual Entry Form,test,Europe/Prague,rower,80.0,hwt
+466,https://rowsandall.com/rowers/workout/3124/emailcsv,https://rowsandall.com/rowers/workout/3124/emailtcx,97,58,None,2018-11-09 10:00:50+00:00,10000,00:41:14,Manual Entry,,Europe/Prague,rower,80.0,hwt
+467,https://rowsandall.com/rowers/workout/3125/emailcsv,https://rowsandall.com/rowers/workout/3125/emailtcx,0,2,None,2018-11-09 10:04:05+00:00,500,00:02:00,Manual Entry,,Europe/Prague,rower,80.0,hwt
+468,https://rowsandall.com/rowers/workout/3171/emailcsv,https://rowsandall.com/rowers/workout/3171/emailtcx,75,68,None,2018-11-10 13:32:04+00:00,8635,00:38:04,5x5min/3min, ,Europe/Prague,rower,80.0,hwt
+469,https://rowsandall.com/rowers/workout/3197/emailcsv,https://rowsandall.com/rowers/workout/3197/emailtcx,0,60,None,2018-11-11 12:16:38+00:00,11961,00:54:08.600000,Imported,,Europe/Prague,Run,80.0,hwt
+470,https://rowsandall.com/rowers/workout/3170/emailcsv,https://rowsandall.com/rowers/workout/3170/emailtcx,0,5,None,2018-11-11 13:10:01+00:00,1188,00:05:05,Steady - low back problem, ,Europe/Prague,rower,80.0,hwt
+471,https://rowsandall.com/rowers/workout/3169/emailcsv,https://rowsandall.com/rowers/workout/3169/emailtcx,0,62,None,2018-11-11 13:16:36+00:00,11961,00:54:09,Steady - low back problem, ,Europe/Prague,rower,80.0,hwt
+472,https://rowsandall.com/rowers/workout/3177/emailcsv,https://rowsandall.com/rowers/workout/3177/emailtcx,0,0,None,2018-11-11 13:16:36+00:00,11961,00:54:09,Steady - low back problem, ,Europe/Prague,rower,80.0,hwt
+473,https://rowsandall.com/rowers/workout/3179/emailcsv,https://rowsandall.com/rowers/workout/3179/emailtcx,48,0,None,2018-11-13 06:31:45+00:00,0,00:55:44,Morning Activity, ,Europe/Prague,other,80.0,hwt
+474,https://rowsandall.com/rowers/workout/3172/emailcsv,https://rowsandall.com/rowers/workout/3172/emailtcx,0,22,None,2018-11-13 11:39:35+00:00,30000,03:00:00,Langst,,Europe/Prague,rower,80.0,hwt
+475,https://rowsandall.com/rowers/workout/3173/emailcsv,https://rowsandall.com/rowers/workout/3173/emailtcx,0,62,None,2018-11-13 11:40:03+00:00,20000,01:30:00,Lang,,Europe/Prague,rower,80.0,hwt
+476,https://rowsandall.com/rowers/workout/3174/emailcsv,https://rowsandall.com/rowers/workout/3174/emailtcx,0,17,None,2018-11-13 11:40:33+00:00,5000,00:22:00,Kort,,Europe/Prague,rower,80.0,hwt
+477,https://rowsandall.com/rowers/workout/3175/emailcsv,https://rowsandall.com/rowers/workout/3175/emailtcx,0,0,None,2018-11-13 11:44:27+00:00,500,00:40:00,40,,Europe/Prague,rower,80.0,hwt
+478,https://rowsandall.com/rowers/workout/3176/emailcsv,https://rowsandall.com/rowers/workout/3176/emailtcx,0,0,None,2018-11-13 11:44:43+00:00,500,01:31:00,91,,Europe/Prague,rower,80.0,hwt
+479,https://rowsandall.com/rowers/workout/3205/emailcsv,https://rowsandall.com/rowers/workout/3205/emailtcx,23,0,None,2018-11-22 14:46:38+00:00,0,01:03:33,Afternoon Activity, ,Europe/Prague,other,80.0,hwt
+480,https://rowsandall.com/rowers/workout/3204/emailcsv,https://rowsandall.com/rowers/workout/3204/emailtcx,6,0,None,2018-11-23 16:55:19+00:00,990,00:05:04,6x6min, ,Europe/Prague,water,80.0,hwt
+481,https://rowsandall.com/rowers/workout/3202/emailcsv,https://rowsandall.com/rowers/workout/3202/emailtcx,0,0,None,2018-11-26 15:47:25+00:00,2000,01:00:00,Een UUr Gezwommen,,Europe/Prague,Swim,80.0,hwt
+482,https://rowsandall.com/rowers/workout/3203/emailcsv,https://rowsandall.com/rowers/workout/3203/emailtcx,0,0,None,2018-11-26 15:53:33+00:00,500,00:02:00,Rennen,,Europe/Prague,Run,80.0,hwt
+483,https://rowsandall.com/rowers/workout/3208/emailcsv,https://rowsandall.com/rowers/workout/3208/emailtcx,0,0,None,2018-11-27 06:35:35+00:00,0,00:02:00,Manual Entry,,Europe/Prague,rower,80.0,hwt
+484,https://rowsandall.com/rowers/workout/3209/emailcsv,https://rowsandall.com/rowers/workout/3209/emailtcx,0,0,None,2018-11-27 07:38:13+00:00,0,00:00:59.300000,Manual Entry,,Europe/Prague,rower,80.0,hwt
+485,https://rowsandall.com/rowers/workout/3218/emailcsv,https://rowsandall.com/rowers/workout/3218/emailtcx,0,0,None,2018-11-29 06:49:34+00:00,100,00:00:18.600000,100,,Europe/Prague,rower,80.0,hwt
+486,https://rowsandall.com/rowers/workout/3219/emailcsv,https://rowsandall.com/rowers/workout/3219/emailtcx,0,6,None,2018-11-29 06:49:56+00:00,500,00:01:40.400000,500,,Europe/Prague,rower,80.0,hwt
+487,https://rowsandall.com/rowers/workout/3220/emailcsv,https://rowsandall.com/rowers/workout/3220/emailtcx,0,9,None,2018-11-29 06:50:20+00:00,1000,00:03:37.400000,1000,,Europe/Prague,rower,80.0,hwt
+488,https://rowsandall.com/rowers/workout/3221/emailcsv,https://rowsandall.com/rowers/workout/3221/emailtcx,0,23,None,2018-11-29 06:50:52+00:00,5000,00:20:48,5000,,Europe/Prague,rower,80.0,hwt
+489,https://rowsandall.com/rowers/workout/3222/emailcsv,https://rowsandall.com/rowers/workout/3222/emailtcx,0,15,None,2018-11-30 15:03:28+00:00,1000,00:03:17.100000,duizend,,Europe/Prague,rower,80.0,hwt
+490,https://rowsandall.com/rowers/workout/3223/emailcsv,https://rowsandall.com/rowers/workout/3223/emailtcx,0,2,None,2018-12-02 09:47:44+00:00,500,00:02:00,Test,,Europe/Prague,rower,80.0,hwt
+491,https://rowsandall.com/rowers/workout/3224/emailcsv,https://rowsandall.com/rowers/workout/3224/emailtcx,0,14,None,2018-12-02 10:14:42+00:00,1000,00:03:17.500000,Duzend,,Europe/Prague,rower,80.0,hwt
+492,https://rowsandall.com/rowers/workout/3226/emailcsv,https://rowsandall.com/rowers/workout/3226/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Duzend 3,,Europe/Prague,rower,80.0,hwt
+493,https://rowsandall.com/rowers/workout/3227/emailcsv,https://rowsandall.com/rowers/workout/3227/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Duzend 4,,Europe/Prague,dynamic,80.0,hwt
+494,https://rowsandall.com/rowers/workout/3228/emailcsv,https://rowsandall.com/rowers/workout/3228/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Duzend 5,,Europe/Prague,rower,80.0,hwt
+495,https://rowsandall.com/rowers/workout/3229/emailcsv,https://rowsandall.com/rowers/workout/3229/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Duzend 6,,Europe/Prague,rower,80.0,hwt
+496,https://rowsandall.com/rowers/workout/3230/emailcsv,https://rowsandall.com/rowers/workout/3230/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Duzend 6,,Europe/Prague,rower,80.0,hwt
+497,https://rowsandall.com/rowers/workout/3231/emailcsv,https://rowsandall.com/rowers/workout/3231/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Duzend 6,,Europe/Prague,rower,80.0,hwt
+498,https://rowsandall.com/rowers/workout/3232/emailcsv,https://rowsandall.com/rowers/workout/3232/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,No Race,,Europe/Prague,rower,80.0,hwt
+499,https://rowsandall.com/rowers/workout/3233/emailcsv,https://rowsandall.com/rowers/workout/3233/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,No Race,,Europe/Prague,rower,80.0,hwt
+500,https://rowsandall.com/rowers/workout/3234/emailcsv,https://rowsandall.com/rowers/workout/3234/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,No Race,,Europe/Prague,rower,80.0,hwt
+501,https://rowsandall.com/rowers/workout/3235/emailcsv,https://rowsandall.com/rowers/workout/3235/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,No Race,,Europe/Prague,rower,80.0,hwt
+502,https://rowsandall.com/rowers/workout/3236/emailcsv,https://rowsandall.com/rowers/workout/3236/emailtcx,6,13,None,2018-12-02 16:18:21+00:00,1000,00:03:21,Wanneer?,,Europe/Prague,rower,80.0,hwt
+503,https://rowsandall.com/rowers/workout/3246/emailcsv,https://rowsandall.com/rowers/workout/3246/emailtcx,14,11,None,2018-12-12 00:49:28+00:00,2418,00:10:00.100000,BG Run,,Europe/Prague,Run,80.0,hwt
+504,https://rowsandall.com/rowers/workout/3238/emailcsv,https://rowsandall.com/rowers/workout/3238/emailtcx,14,11,None,2018-12-12 00:49:28.662710+00:00,2418,00:10:00.100000,3x(5min/2min)/1000m,,Europe/Prague,rower,80.0,hwt
+505,https://rowsandall.com/rowers/workout/3240/emailcsv,https://rowsandall.com/rowers/workout/3240/emailtcx,14,11,None,2018-12-12 00:49:28.662710+00:00,2418,00:10:00.100000,Test Adaptive,,Europe/Prague,rower,80.0,hwt
+506,https://rowsandall.com/rowers/workout/3241/emailcsv,https://rowsandall.com/rowers/workout/3241/emailtcx,14,11,PR1,2018-12-12 00:49:28.662710+00:00,2418,00:10:00.100000,Test Adaptive 2,,Europe/Prague,rower,80.0,hwt
+507,https://rowsandall.com/rowers/workout/3239/emailcsv,https://rowsandall.com/rowers/workout/3239/emailtcx,0,5,None,2018-12-14 07:29:08+00:00,1000,00:04:01.700000,Duizend,,Europe/Prague,rower,80.0,hwt
+508,https://rowsandall.com/rowers/workout/3245/emailcsv,https://rowsandall.com/rowers/workout/3245/emailtcx,49,0,None,2018-12-15 08:55:58+00:00,11946,00:23:40,Morning Run, ,Europe/Prague,Run,80.0,hwt
+509,https://rowsandall.com/rowers/workout/3254/emailcsv,https://rowsandall.com/rowers/workout/3254/emailtcx,103,0,PR1,2019-01-03 19:42:24+00:00,9520,00:52:56.500000,,,Europe/Prague,rower,80.0,hwt
+510,https://rowsandall.com/rowers/workout/3255/emailcsv,https://rowsandall.com/rowers/workout/3255/emailtcx,103,0,PR1,2019-01-03 19:43:32+00:00,9520,00:52:56.500000,,,Europe/Prague,water,80.0,hwt
+511,https://rowsandall.com/rowers/workout/3256/emailcsv,https://rowsandall.com/rowers/workout/3256/emailtcx,103,0,PR1,2019-01-03 19:45:04+00:00,9520,00:52:56.500000,,,Europe/Prague,rower,80.0,hwt
+512,https://rowsandall.com/rowers/workout/3257/emailcsv,https://rowsandall.com/rowers/workout/3257/emailtcx,103,0,PR1,2019-01-03 19:46:53+00:00,9520,00:52:56.500000,,,Europe/Prague,rower,80.0,hwt
+513,https://rowsandall.com/rowers/workout/3258/emailcsv,https://rowsandall.com/rowers/workout/3258/emailtcx,103,0,PR1,2019-01-03 19:48:05+00:00,9520,00:52:56.500000,,,Europe/Prague,rower,80.0,hwt
+514,https://rowsandall.com/rowers/workout/3259/emailcsv,https://rowsandall.com/rowers/workout/3259/emailtcx,103,0,PR1,2019-01-03 19:50:06+00:00,9520,00:52:56.500000,,,Europe/Prague,rower,80.0,hwt
+515,https://rowsandall.com/rowers/workout/3277/emailcsv,https://rowsandall.com/rowers/workout/3277/emailtcx,18,6,None,2019-01-06 13:38:02+00:00,2027,00:14:02.200000,Empower Data,,Europe/Prague,water,80.0,hwt
+516,https://rowsandall.com/rowers/workout/3278/emailcsv,https://rowsandall.com/rowers/workout/3278/emailtcx,0,2,None,2019-01-11 13:07:18+00:00,500,00:02:00,Sander Roosendaal,,Europe/Prague,rower,80.0,hwt
+517,https://rowsandall.com/rowers/workout/3293/emailcsv,https://rowsandall.com/rowers/workout/3293/emailtcx,98,134,None,2019-01-13 06:45:51+00:00,8829,00:45:58.700000,RP3 intervals test,,Europe/Prague,dynamic,80.0,hwt