diff --git a/.gpx b/.gpx
deleted file mode 100644
index c2d010f0..00000000
--- a/.gpx
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Garmin InternationalExport by rowingdata
-
diff --git a/.tcx b/.tcx
deleted file mode 100644
index f3a5c6af..00000000
--- a/.tcx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
- 2015-03-28T20:45:15.000Z
-
- Empty File
- 0
- 0
-
-
-
-
diff --git a/rowers/sporttracksstuff.py b/rowers/sporttracksstuff.py
index c88d47df..2420d136 100644
--- a/rowers/sporttracksstuff.py
+++ b/rowers/sporttracksstuff.py
@@ -9,6 +9,8 @@ from rowsandall_app.settings import (
SPORTTRACKS_REDIRECT_URI
)
+import mytypes
+
oauth_data = {
'client_id': SPORTTRACKS_CLIENT_ID,
'client_secret': SPORTTRACKS_CLIENT_SECRET,
@@ -346,7 +348,7 @@ def add_workout_from_data(user,importid,data,strokedata,source='sporttracks',
times_location = times_distance
latcoord = np.zeros(len(times_distance))
loncoord = np.zeros(len(times_distance))
- if workouttype in types.otwtypes:
+ if workouttype in mytypes.otwtypes:
workouttype = 'rower'
try:
diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py
index 64d0b882..8afa3418 100644
--- a/rowers/tests/mocks.py
+++ b/rowers/tests/mocks.py
@@ -532,6 +532,7 @@ def mocked_requests(*args, **kwargs):
}
ststrokesjson = json.load(open('rowers/tests/testdata/sporttracksstrokedata.txt','r'))
+ ststrokesjson_nogps = json.load(open('rowers/tests/testdata/sporttracksstrokedatanolocation.txt','r'))
rkstrokesjson = json.load(open('rowers/tests/testdata/rkstrokes.txt','r'))
@@ -606,7 +607,7 @@ def mocked_requests(*args, **kwargs):
stworkoutlistregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities$'
stworkoutlisttester = re.compile(stworkoutlistregex)
- ststrokesregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities/\d+$'
+ ststrokesregex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities/(\d+)$'
ststrokestester = re.compile(ststrokesregex)
rkuploadregex = '.*?api\.runkeeper\.com\/fitnessActivities$'
@@ -725,7 +726,10 @@ def mocked_requests(*args, **kwargs):
}
return MockResponse(json_data,200)
if ststrokestester.match(args[0]):
- return MockResponse(ststrokesjson,200)
+ if ststrokestester.match(args[0]).group(1) == '13':
+ return MockResponse(ststrokesjson_nogps,200)
+ else:
+ return MockResponse(strokesjson,200)
if stuploadtester.match(args[0]):
json_data = {
"uris": [
diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py
index 0d22e9e7..3db4e2e8 100644
--- a/rowers/tests/test_imports.py
+++ b/rowers/tests/test_imports.py
@@ -421,6 +421,17 @@ class STObjects(DjangoTestCase):
self.assertEqual(response.status_code, 200)
+ @patch('rowers.imports.requests.get', side_effect=mocked_requests)
+ def test_sporttracks_import(self, mock_get):
+
+ response = self.c.get('/rowers/workout/sporttracksimport/13/',follow=True)
+
+ self.assertRedirects(response,
+ expected_url='/rowers/workout/2/edit/',
+ status_code=302,target_status_code=200)
+
+ self.assertEqual(response.status_code, 200)
+
@patch('rowers.dataprep.create_engine')
def test_strokedata(self, mocked_sqlalchemy):
with open('rowers/tests/testdata/sporttrackstestdata.txt','r') as infile:
diff --git a/rowers/tests/testdata/sporttracksstrokedatanolocation.txt b/rowers/tests/testdata/sporttracksstrokedatanolocation.txt
new file mode 100644
index 00000000..778e4cb9
--- /dev/null
+++ b/rowers/tests/testdata/sporttracksstrokedatanolocation.txt
@@ -0,0 +1 @@
+{"heartrate": [3, 109, 29, 121, 33, 119, 36, 118, 39, 117, 42, 118, 45, 119, 48, 122, 51, 123, 54, 126, 57, 127, 60, 129, 63, 130, 66, 130, 69, 131, 72, 131, 75, 132, 78, 133, 81, 134, 84, 134, 87, 135, 90, 136, 93, 139, 96, 141, 99, 142, 102, 143, 105, 144, 108, 145, 111, 146, 114, 146, 117, 146, 120, 146, 123, 147, 126, 147, 129, 148, 132, 149, 135, 150, 138, 150, 141, 151, 144, 152, 147, 153, 150, 153, 153, 154, 156, 154, 159, 155, 162, 155, 165, 154, 168, 155, 171, 156, 175, 156, 177, 156, 181, 156, 184, 156, 187, 156, 190, 156, 193, 155, 196, 155, 199, 156, 202, 157, 205, 160, 208, 161, 211, 162, 214, 163, 217, 163, 220, 164, 223, 164, 226, 165, 229, 165, 249, 161, 252, 160, 255, 158, 259, 161, 262, 162, 265, 162, 268, 158, 271, 154, 274, 152, 278, 152, 281, 151, 284, 151, 287, 151, 290, 151, 293, 151, 296, 151, 299, 151, 302, 152, 305, 152, 308, 152, 310, 152, 313, 152, 316, 153, 319, 153, 322, 154, 324, 155, 327, 155, 330, 156, 333, 156, 336, 155, 339, 155, 341, 155, 344, 155, 347, 155, 350, 155, 354, 155, 357, 154, 360, 152, 363, 151, 366, 150, 369, 149, 372, 148, 375, 147], "max_cadence": 22, "avg_cadence": 19.8253, "duration": 375.5, "timezone": 2, "user_id": 6765, "privacy": "public", "laps": [], "elevation_loss": 0, "clock_duration": 375.5, "type": "Rowing", "cadence": [3, 21, 29, 19, 33, 20, 36, 19, 39, 19, 42, 20, 45, 19, 48, 20, 51, 20, 54, 20, 57, 20, 60, 19, 63, 20, 66, 20, 69, 20, 72, 19, 75, 20, 78, 20, 81, 20, 84, 20, 87, 20, 90, 19, 93, 20, 96, 20, 99, 20, 102, 20, 105, 20, 108, 20, 111, 20, 114, 20, 117, 20, 120, 20, 123, 20, 126, 19, 129, 20, 132, 20, 135, 20, 138, 19, 141, 20, 144, 20, 147, 19, 150, 20, 153, 19, 156, 20, 159, 19, 162, 19, 165, 19, 168, 19, 171, 20, 175, 19, 177, 20, 181, 20, 184, 20, 187, 20, 190, 20, 193, 20, 196, 20, 199, 19, 202, 19, 205, 20, 208, 20, 211, 20, 214, 20, 217, 20, 220, 20, 223, 20, 226, 20, 229, 20, 249, 22, 252, 18, 255, 18, 259, 19, 262, 19, 265, 19, 268, 19, 271, 19, 274, 19, 278, 19, 281, 19, 284, 19, 287, 19, 290, 19, 293, 19, 296, 20, 299, 21, 302, 20, 305, 21, 308, 20, 310, 21, 313, 21, 316, 21, 319, 22, 322, 21, 324, 21, 327, 21, 330, 21, 333, 21, 336, 21, 339, 22, 341, 21, 344, 20, 347, 20, 350, 19, 354, 19, 357, 18, 360, 18, 363, 19, 366, 19, 369, 19, 372, 19, 375, 21], "elevation": [3, 230.1, 29, 227, 33, 227, 36, 227, 39, 227, 42, 227, 45, 227, 48, 227, 51, 227, 54, 227, 57, 227, 60, 227, 63, 227, 66, 227, 69, 227, 72, 227, 75, 227, 78, 227, 81, 227, 84, 227, 87, 227, 90, 227, 93, 227, 96, 227, 99, 227, 102, 227, 105, 227, 108, 227, 111, 227, 114, 227, 117, 227, 120, 227, 123, 227, 126, 227, 129, 227, 132, 227, 135, 227, 138, 227, 141, 227, 144, 227, 147, 227, 150, 227, 153, 227, 156, 227, 159, 227, 162, 227, 165, 227, 168, 227, 171, 227, 175, 227, 177, 227, 181, 227, 184, 227, 187, 227, 190, 227, 193, 227, 196, 227, 199, 227, 202, 227, 205, 227, 208, 227, 211, 227, 214, 227, 217, 227, 220, 227, 223, 227, 226, 227, 229, 227, 249, 227, 252, 227, 255, 227, 259, 227, 262, 227, 265, 227, 268, 227, 271, 227, 274, 227, 278, 227, 281, 227, 284, 227, 287, 227, 290, 227, 293, 227, 296, 227, 299, 227, 302, 227, 305, 227, 308, 227, 310, 227, 313, 227, 316, 227, 319, 227, 322, 227, 324, 227, 327, 227, 330, 227, 333, 227, 336, 227, 339, 227, 341, 227, 344, 227, 347, 227, 350, 227, 354, 227, 357, 227.1, 360, 227.6, 363, 228.2, 366, 228.7, 369, 229.3, 372, 229.8, 375, 230.3], "power": [3, 0, 29, 0, 33, 0, 36, 0, 39, 0, 42, 0, 45, 0, 48, 0, 51, 0, 54, 0, 57, 0, 60, 0, 63, 0, 66, 0, 69, 0, 72, 0, 75, 0, 78, 0, 81, 0, 84, 0, 87, 0, 90, 0, 93, 0, 96, 0, 99, 0, 102, 0, 105, 0, 108, 0, 111, 0, 114, 0, 117, 0, 120, 0, 123, 0, 126, 0, 129, 0, 132, 0, 135, 0, 138, 0, 141, 0, 144, 0, 147, 0, 150, 0, 153, 0, 156, 0, 159, 0, 162, 0, 165, 0, 168, 0, 171, 0, 175, 0, 177, 0, 181, 0, 184, 0, 187, 0, 190, 0, 193, 0, 196, 0, 199, 0, 202, 0, 205, 0, 208, 0, 211, 0, 214, 0, 217, 0, 220, 0, 223, 0, 226, 0, 229, 0, 249, 0, 252, 0, 255, 0, 259, 0, 262, 0, 265, 0, 268, 0, 271, 0, 274, 0, 278, 0, 281, 0, 284, 0, 287, 0, 290, 0, 293, 0, 296, 0, 299, 0, 302, 0, 305, 0, 308, 0, 310, 0, 313, 0, 316, 0, 319, 0, 322, 0, 324, 0, 327, 0, 330, 0, 333, 0, 336, 0, 339, 0, 341, 0, 344, 0, 347, 0, 350, 0, 354, 0, 357, 0, 360, 0, 363, 0, 366, 0, 369, 0, 372, 0, 375, 0], "elevation_gain": 0, "start_time": "2018-07-02T19:24:02+02:00", "avg_heartrate": 147, "max_speed": 4.167, "total_distance": 1328, "max_heartrate": 165, "distance": [3, 14, 29, 72, 33, 81, 36, 91, 39, 102, 42, 114, 45, 126, 48, 138, 51, 151, 54, 162, 57, 175, 60, 187, 63, 200, 66, 212, 69, 224, 72, 236, 75, 248, 78, 259, 81, 271, 84, 283, 87, 294, 90, 307, 93, 320, 96, 332, 99, 343, 102, 356, 105, 368, 108, 380, 111, 392, 114, 404, 117, 416, 120, 428, 123, 441, 126, 452, 129, 465, 132, 477, 135, 489, 138, 501, 141, 514, 144, 527, 147, 539, 150, 551, 153, 563, 156, 575, 159, 588, 162, 600, 165, 612, 168, 625, 171, 637, 175, 650, 177, 661, 181, 674, 184, 686, 187, 698, 190, 710, 193, 722, 196, 734, 199, 746, 202, 759, 205, 771, 208, 783, 211, 795, 214, 808, 217, 820, 220, 832, 223, 845, 226, 857, 229, 869, 249, 910, 252, 916, 255, 923, 259, 933, 262, 944, 265, 955, 268, 966, 271, 978, 274, 990, 278, 1002, 281, 1014, 284, 1025, 287, 1037, 290, 1050, 293, 1061, 296, 1073, 299, 1084, 302, 1095, 305, 1106, 308, 1116, 310, 1127, 313, 1137, 316, 1147, 319, 1158, 322, 1168, 324, 1177, 327, 1187, 330, 1196, 333, 1207, 336, 1216, 339, 1226, 341, 1236, 344, 1246, 347, 1255, 350, 1263, 354, 1272, 357, 1280, 360, 1288, 363, 1297, 366, 1306, 369, 1313, 372, 1321, 375, 1328], "name": "2ks with focus (6)", "notes": "\n from speedcoach2v2.15 via rowsandall.com", "calories": 243.8, "uri": "https://api.sporttracks.mobi/api/v2/fitnessActivities/18113136", "activity": "https://api.sporttracks.mobi/activity/18113136", "avg_speed": 3.537}
\ No newline at end of file
diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz
index 7d6be8d7..c3dcd42c 100644
Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ
diff --git a/rowers/uploads.py b/rowers/uploads.py
index 9094d200..06f2f43e 100644
--- a/rowers/uploads.py
+++ b/rowers/uploads.py
@@ -59,7 +59,7 @@ def matchsource(line):
tester = re.compile(testert)
if tester.match(line.lower()):
- return group(1)
+ return tester.match(line.lower()).group(1)
# currently only matches one chart
def matchchart(line):