diff --git a/rowers.dot b/rowers.dot
new file mode 100644
index 00000000..2c9900b3
--- /dev/null
+++ b/rowers.dot
@@ -0,0 +1,715 @@
+digraph model_graph {
+ // Dotfile by Django-Extensions graph_models
+ // Created: 2017-01-10 16:49
+ // Cli Options: rowers
+
+ fontname = "Helvetica"
+ fontsize = 8
+ splines = true
+
+ node [
+ fontname = "Helvetica"
+ fontsize = 8
+ shape = "plaintext"
+ ]
+
+ edge [
+ fontname = "Helvetica"
+ fontsize = 8
+ ]
+
+ // Labels
+
+
+ rowers_models_Team [label=<
+
+ |
+
+ Team
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ name
+ |
+ CharField
+ |
+
+ |
+ notes
+ |
+ CharField
+ |
+
+
+ >]
+
+ rowers_models_Rower [label=<
+
+ |
+
+ Rower
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ team
+ |
+ ForeignKey (id)
+ |
+
+ |
+ user
+ |
+ OneToOneField (id)
+ |
+
+ |
+ an
+ |
+ IntegerField
+ |
+
+ |
+ at
+ |
+ IntegerField
+ |
+
+ |
+ c2refreshtoken
+ |
+ CharField
+ |
+
+ |
+ c2token
+ |
+ CharField
+ |
+
+ |
+ ftp
+ |
+ IntegerField
+ |
+
+ |
+ max
+ |
+ IntegerField
+ |
+
+ |
+ rest
+ |
+ IntegerField
+ |
+
+ |
+ rowerplan
+ |
+ CharField
+ |
+
+ |
+ sporttracksrefreshtoken
+ |
+ CharField
+ |
+
+ |
+ sporttrackstoken
+ |
+ CharField
+ |
+
+ |
+ sporttrackstokenexpirydate
+ |
+ DateTimeField
+ |
+
+ |
+ stravatoken
+ |
+ CharField
+ |
+
+ |
+ tokenexpirydate
+ |
+ DateTimeField
+ |
+
+ |
+ tr
+ |
+ IntegerField
+ |
+
+ |
+ ut1
+ |
+ IntegerField
+ |
+
+ |
+ ut2
+ |
+ IntegerField
+ |
+
+ |
+ weightcategory
+ |
+ CharField
+ |
+
+
+ >]
+
+ rowers_models_FavoriteChart [label=<
+
+ |
+
+ FavoriteChart
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ user
+ |
+ ForeignKey (id)
+ |
+
+ |
+ plottype
+ |
+ CharField
+ |
+
+ |
+ reststrokes
+ |
+ BooleanField
+ |
+
+ |
+ workouttype
+ |
+ CharField
+ |
+
+ |
+ xparam
+ |
+ CharField
+ |
+
+ |
+ yparam1
+ |
+ CharField
+ |
+
+ |
+ yparam2
+ |
+ CharField
+ |
+
+
+ >]
+
+ rowers_models_Workout [label=<
+
+ |
+
+ Workout
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ team
+ |
+ ForeignKey (id)
+ |
+
+ |
+ user
+ |
+ ForeignKey (id)
+ |
+
+ |
+ averagehr
+ |
+ IntegerField
+ |
+
+ |
+ boattype
+ |
+ CharField
+ |
+
+ |
+ csvfilename
+ |
+ CharField
+ |
+
+ |
+ date
+ |
+ DateField
+ |
+
+ |
+ distance
+ |
+ IntegerField
+ |
+
+ |
+ duration
+ |
+ TimeField
+ |
+
+ |
+ maxhr
+ |
+ IntegerField
+ |
+
+ |
+ name
+ |
+ CharField
+ |
+
+ |
+ notes
+ |
+ CharField
+ |
+
+ |
+ startdatetime
+ |
+ DateTimeField
+ |
+
+ |
+ starttime
+ |
+ TimeField
+ |
+
+ |
+ summary
+ |
+ TextField
+ |
+
+ |
+ uploadedtoc2
+ |
+ IntegerField
+ |
+
+ |
+ uploadedtosporttracks
+ |
+ IntegerField
+ |
+
+ |
+ uploadedtostrava
+ |
+ IntegerField
+ |
+
+ |
+ weightcategory
+ |
+ CharField
+ |
+
+ |
+ weightvalue
+ |
+ FloatField
+ |
+
+ |
+ workouttype
+ |
+ CharField
+ |
+
+
+ >]
+
+ rowers_models_StrokeData [label=<
+
+ |
+
+ StrokeData
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ averageforce
+ |
+ FloatField
+ |
+
+ |
+ catch
+ |
+ FloatField
+ |
+
+ |
+ cumdist
+ |
+ FloatField
+ |
+
+ |
+ distance
+ |
+ FloatField
+ |
+
+ |
+ driveenergy
+ |
+ FloatField
+ |
+
+ |
+ drivelength
+ |
+ FloatField
+ |
+
+ |
+ drivespeed
+ |
+ FloatField
+ |
+
+ |
+ equivergpower
+ |
+ FloatField
+ |
+
+ |
+ ergpace
+ |
+ FloatField
+ |
+
+ |
+ fergpace
+ |
+ CharField
+ |
+
+ |
+ finish
+ |
+ FloatField
+ |
+
+ |
+ fnowindpace
+ |
+ CharField
+ |
+
+ |
+ forceratio
+ |
+ FloatField
+ |
+
+ |
+ fpace
+ |
+ CharField
+ |
+
+ |
+ ftime
+ |
+ CharField
+ |
+
+ |
+ hr
+ |
+ IntegerField
+ |
+
+ |
+ hr_an
+ |
+ IntegerField
+ |
+
+ |
+ hr_at
+ |
+ IntegerField
+ |
+
+ |
+ hr_bottom
+ |
+ IntegerField
+ |
+
+ |
+ hr_max
+ |
+ IntegerField
+ |
+
+ |
+ hr_tr
+ |
+ IntegerField
+ |
+
+ |
+ hr_ut1
+ |
+ IntegerField
+ |
+
+ |
+ hr_ut2
+ |
+ IntegerField
+ |
+
+ |
+ nowindpace
+ |
+ FloatField
+ |
+
+ |
+ pace
+ |
+ FloatField
+ |
+
+ |
+ peakforce
+ |
+ FloatField
+ |
+
+ |
+ peakforceangle
+ |
+ FloatField
+ |
+
+ |
+ power
+ |
+ FloatField
+ |
+
+ |
+ slip
+ |
+ FloatField
+ |
+
+ |
+ spm
+ |
+ FloatField
+ |
+
+ |
+ time
+ |
+ FloatField
+ |
+
+ |
+ wash
+ |
+ FloatField
+ |
+
+ |
+ workoutid
+ |
+ IntegerField
+ |
+
+ |
+ workoutstate
+ |
+ IntegerField
+ |
+
+ |
+ x_right
+ |
+ FloatField
+ |
+
+
+ >]
+
+ rowers_models_GraphImage [label=<
+
+ |
+
+ GraphImage
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ workout
+ |
+ ForeignKey (id)
+ |
+
+ |
+ creationdatetime
+ |
+ DateTimeField
+ |
+
+ |
+ filename
+ |
+ CharField
+ |
+
+
+ >]
+
+ rowers_models_SiteAnnouncement [label=<
+
+ |
+
+ SiteAnnouncement
+ |
+
+ |
+ id
+ |
+ AutoField
+ |
+
+ |
+ announcement
+ |
+ TextField
+ |
+
+ |
+ created
+ |
+ DateField
+ |
+
+ |
+ dotweet
+ |
+ BooleanField
+ |
+
+ |
+ expires
+ |
+ DateField
+ |
+
+ |
+ modified
+ |
+ DateField
+ |
+
+
+ >]
+
+
+
+
+ // Relations
+ django_contrib_auth_models_User [label=<
+
+ >]
+ rowers_models_Rower -> django_contrib_auth_models_User
+ [label="user (rower)"] [arrowhead=none, arrowtail=none, dir=both];
+
+ rowers_models_Rower -> rowers_models_Team
+ [label="team (rower)"] [arrowhead=none, arrowtail=dot, dir=both];
+
+ rowers_models_Rower -> rowers_models_Rower
+ [label="friends (friends_rel_+)"] [arrowhead=dot arrowtail=dot, dir=both];
+
+ rowers_models_FavoriteChart -> rowers_models_Rower
+ [label="user (favoritechart)"] [arrowhead=none, arrowtail=dot, dir=both];
+
+ rowers_models_Workout -> rowers_models_Rower
+ [label="user (workout)"] [arrowhead=none, arrowtail=dot, dir=both];
+
+ rowers_models_Workout -> rowers_models_Team
+ [label="team (workout)"] [arrowhead=none, arrowtail=dot, dir=both];
+
+ rowers_models_GraphImage -> rowers_models_Workout
+ [label="workout (graphimage)"] [arrowhead=none, arrowtail=dot, dir=both];
+
+}
+
diff --git a/rowers.png b/rowers.png
new file mode 100644
index 00000000..7e314125
Binary files /dev/null and b/rowers.png differ
diff --git a/rowers/views.py b/rowers/views.py
index 1c9afaa5..320e4112 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -3698,10 +3698,11 @@ def workout_getc2workout_view(request,c2id):
if (res.status_code == 200):
data = res.json()['data']
splitdata = None
- if 'splits' in data['workout']:
- splitdata = data['workout']['splits']
- if 'intervals' in data['workout']:
- splitdata = data['workout']['intervals']
+ if 'workout' in data:
+ if 'splits' in data['workout']:
+ splitdata = data['workout']['splits']
+ if 'intervals' in data['workout']:
+ splitdata = data['workout']['intervals']
if data['stroke_data']:
res2 = c2stuff.get_c2_workout_strokes(request.user,c2id)