diff --git a/cvkbrno/migrations/0001_initial.py b/cvkbrno/migrations/0001_initial.py deleted file mode 100644 index 29303c73..00000000 --- a/cvkbrno/migrations/0001_initial.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-13 15:14 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Boat', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('boatname', models.CharField(max_length=30)), - ('boatcode', models.CharField(max_length=10)), - ('nrseats', models.IntegerField()), - ('status', models.CharField(choices=[('water', 'water'), ('hangar', 'hangar'), ('damaged', 'damaged'), ('races', 'races')], default='hangar', max_length=30)), - ('comment', models.CharField(blank=True, max_length=100)), - ], - ), - migrations.CreateModel( - name='BoatCategory', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ], - ), - migrations.CreateModel( - name='Member', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('contributions', models.BooleanField(default=True)), - ('status', models.CharField(choices=[('coach', 'coach'), ('member', 'member'), ('administrator', 'administrator')], default='member', max_length=30)), - ('categories', models.ManyToManyField(to='cvkbrno.BoatCategory')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Outing', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('starttime', models.DateTimeField()), - ('endtime', models.DateTimeField()), - ('distance', models.FloatField()), - ('comment', models.CharField(blank=True, max_length=100)), - ('status', models.CharField(choices=[('reservation', 'reservation'), ('active', 'active'), ('completed', 'completed'), ('race', 'race')], default='active', max_length=30)), - ('boat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cvkbrno.Boat')), - ('rower', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cvkbrno.Member')), - ], - ), - migrations.AddField( - model_name='boat', - name='categories', - field=models.ManyToManyField(to='cvkbrno.BoatCategory'), - ), - ] diff --git a/cvkbrno/migrations/0002_auto_20160515_0910.py b/cvkbrno/migrations/0002_auto_20160515_0910.py deleted file mode 100644 index 217be114..00000000 --- a/cvkbrno/migrations/0002_auto_20160515_0910.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-15 07:10 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='outing', - name='endtime', - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/cvkbrno/migrations/0003_member_club.py b/cvkbrno/migrations/0003_member_club.py deleted file mode 100644 index a2045c74..00000000 --- a/cvkbrno/migrations/0003_member_club.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-17 09:52 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0002_auto_20160515_0910'), - ] - - operations = [ - migrations.AddField( - model_name='member', - name='club', - field=models.CharField(default='cvkbrno', max_length=30), - preserve_default=False, - ), - ] diff --git a/cvkbrno/migrations/0004_auto_20160518_2001.py b/cvkbrno/migrations/0004_auto_20160518_2001.py deleted file mode 100644 index ef1dbf43..00000000 --- a/cvkbrno/migrations/0004_auto_20160518_2001.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-18 18:01 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0003_member_club'), - ] - - operations = [ - migrations.CreateModel( - name='MemberWork', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateField()), - ('hours', models.FloatField()), - ('name', models.CharField(max_length=30)), - ('status', models.CharField(choices=[('planned', 'planned'), ('executed', 'executed')], default='planned', max_length=30)), - ], - ), - migrations.AddField( - model_name='member', - name='hoursworked', - field=models.FloatField(default=0), - preserve_default=False, - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 18, 20, 1, 10, 126000)), - ), - migrations.AddField( - model_name='memberwork', - name='worker', - field=models.ManyToManyField(to='cvkbrno.Member'), - ), - ] diff --git a/cvkbrno/migrations/0005_auto_20160519_0750.py b/cvkbrno/migrations/0005_auto_20160519_0750.py deleted file mode 100644 index f83f251b..00000000 --- a/cvkbrno/migrations/0005_auto_20160519_0750.py +++ /dev/null @@ -1,86 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-19 05:50 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0004_auto_20160518_2001'), - ] - - operations = [ - migrations.AlterField( - model_name='boat', - name='boatcode', - field=models.CharField(max_length=10, verbose_name='Boat Code'), - ), - migrations.AlterField( - model_name='boat', - name='boatname', - field=models.CharField(max_length=30, verbose_name='Boat Name'), - ), - migrations.AlterField( - model_name='boat', - name='nrseats', - field=models.IntegerField(verbose_name='Nr of Seats'), - ), - migrations.AlterField( - model_name='boatcategory', - name='name', - field=models.CharField(max_length=30, verbose_name='Boat Category'), - ), - migrations.AlterField( - model_name='member', - name='club', - field=models.CharField(max_length=30, verbose_name='Club'), - ), - migrations.AlterField( - model_name='member', - name='hoursworked', - field=models.FloatField(verbose_name='Hours Worked'), - ), - migrations.AlterField( - model_name='memberwork', - name='date', - field=models.DateField(verbose_name='Date'), - ), - migrations.AlterField( - model_name='memberwork', - name='hours', - field=models.FloatField(verbose_name='Hours'), - ), - migrations.AlterField( - model_name='memberwork', - name='name', - field=models.CharField(max_length=30, verbose_name='Work Event Name'), - ), - migrations.AlterField( - model_name='outing', - name='comment', - field=models.CharField(blank=True, max_length=100, verbose_name='Comment'), - ), - migrations.AlterField( - model_name='outing', - name='distance', - field=models.FloatField(verbose_name='Distance'), - ), - migrations.AlterField( - model_name='outing', - name='endtime', - field=models.DateTimeField(blank=True, null=True, verbose_name='End Date/Time'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 19, 7, 50, 27, 933000), verbose_name='Start Date/Time'), - ), - migrations.AlterField( - model_name='outing', - name='status', - field=models.CharField(choices=[('reservation', 'reservation'), ('active', 'active'), ('completed', 'completed'), ('race', 'race')], default='active', max_length=30, verbose_name='Status'), - ), - ] diff --git a/cvkbrno/migrations/0006_auto_20160519_0805.py b/cvkbrno/migrations/0006_auto_20160519_0805.py deleted file mode 100644 index ad1be0e4..00000000 --- a/cvkbrno/migrations/0006_auto_20160519_0805.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-19 06:05 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0005_auto_20160519_0750'), - ] - - operations = [ - migrations.AlterField( - model_name='member', - name='categories', - field=models.ManyToManyField(to='cvkbrno.BoatCategory', verbose_name='Boat Categories'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 19, 8, 5, 40, 950000), verbose_name='Start Date/Time'), - ), - ] diff --git a/cvkbrno/migrations/0007_auto_20160519_1103.py b/cvkbrno/migrations/0007_auto_20160519_1103.py deleted file mode 100644 index 87c6b100..00000000 --- a/cvkbrno/migrations/0007_auto_20160519_1103.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-19 09:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0006_auto_20160519_0805'), - ] - - operations = [ - migrations.AlterModelOptions( - name='boat', - options={'verbose_name': 'boat', 'verbose_name_plural': 'boats'}, - ), - migrations.AlterModelOptions( - name='boatcategory', - options={'verbose_name': 'boat category', 'verbose_name_plural': 'boat categories'}, - ), - migrations.AlterModelOptions( - name='member', - options={'verbose_name': 'member', 'verbose_name_plural': 'members'}, - ), - migrations.AlterModelOptions( - name='memberwork', - options={'verbose_name': 'member work', 'verbose_name_plural': 'member work'}, - ), - migrations.AlterModelOptions( - name='outing', - options={'verbose_name': 'outing', 'verbose_name_plural': 'outings'}, - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 19, 11, 3, 18, 858000), verbose_name='Start Date/Time'), - ), - migrations.AlterField( - model_name='outing', - name='status', - field=models.CharField(choices=[('reservation', 'reservation'), ('active', 'aktivn\xed'), ('completed', 'completed'), ('race', 'race')], default='active', max_length=30, verbose_name='Status'), - ), - ] diff --git a/cvkbrno/migrations/0008_auto_20160519_1204.py b/cvkbrno/migrations/0008_auto_20160519_1204.py deleted file mode 100644 index 9396d812..00000000 --- a/cvkbrno/migrations/0008_auto_20160519_1204.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-19 10:04 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0007_auto_20160519_1103'), - ] - - operations = [ - migrations.AlterModelOptions( - name='boat', - options={'verbose_name': 'lod', 'verbose_name_plural': 'lode'}, - ), - migrations.AlterModelOptions( - name='boatcategory', - options={'verbose_name': 'kategorie lod\xed', 'verbose_name_plural': 'kategorie lod\xed'}, - ), - migrations.AlterModelOptions( - name='member', - options={'verbose_name': 'clen', 'verbose_name_plural': 'clenove'}, - ), - migrations.AlterModelOptions( - name='memberwork', - options={'verbose_name': 'brigady', 'verbose_name_plural': 'brigady'}, - ), - migrations.AlterModelOptions( - name='outing', - options={'verbose_name': 'vyjezd', 'verbose_name_plural': 'vyjezdy'}, - ), - migrations.AlterField( - model_name='boat', - name='boatcode', - field=models.CharField(max_length=10, verbose_name='K\xf3d Lode'), - ), - migrations.AlterField( - model_name='boat', - name='boatname', - field=models.CharField(max_length=30, verbose_name='n\xe1zev lodi'), - ), - migrations.AlterField( - model_name='boat', - name='nrseats', - field=models.IntegerField(verbose_name='Pocet m\xedst'), - ), - migrations.AlterField( - model_name='boat', - name='status', - field=models.CharField(choices=[('water', 'voda'), ('hangar', 'lodenice'), ('damaged', 'po\u0161kozen\xe1'), ('races', 'zavody')], default='hangar', max_length=30), - ), - migrations.AlterField( - model_name='boatcategory', - name='name', - field=models.CharField(max_length=30, verbose_name='kategorie lod\xed'), - ), - migrations.AlterField( - model_name='member', - name='categories', - field=models.ManyToManyField(to='cvkbrno.BoatCategory', verbose_name='kategorie lod\xed'), - ), - migrations.AlterField( - model_name='member', - name='club', - field=models.CharField(max_length=30, verbose_name='Klub'), - ), - migrations.AlterField( - model_name='member', - name='hoursworked', - field=models.FloatField(verbose_name='Odpracovan\xe9 hodiny'), - ), - migrations.AlterField( - model_name='member', - name='status', - field=models.CharField(choices=[('coach', 'tren\xe9r'), ('member', 'clen'), ('administrator', 'spr\xe1vce')], default='member', max_length=30), - ), - migrations.AlterField( - model_name='memberwork', - name='date', - field=models.DateField(verbose_name='Datum'), - ), - migrations.AlterField( - model_name='memberwork', - name='hours', - field=models.FloatField(verbose_name='Hodiny'), - ), - migrations.AlterField( - model_name='memberwork', - name='name', - field=models.CharField(max_length=30, verbose_name='N\xe1zev Brig\xe1dy'), - ), - migrations.AlterField( - model_name='memberwork', - name='status', - field=models.CharField(choices=[('planned', 'planovane'), ('executed', 'hotov\xe1')], default='planned', max_length=30), - ), - migrations.AlterField( - model_name='outing', - name='comment', - field=models.CharField(blank=True, max_length=100, verbose_name='Koment\xe1r'), - ), - migrations.AlterField( - model_name='outing', - name='distance', - field=models.FloatField(verbose_name='Vzd\xe1lenost'), - ), - migrations.AlterField( - model_name='outing', - name='endtime', - field=models.DateTimeField(blank=True, null=True, verbose_name='Datum/Cas ukoncen\xed'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 19, 12, 4, 16, 852000), verbose_name='Startovn\xed Datum/Cas'), - ), - migrations.AlterField( - model_name='outing', - name='status', - field=models.CharField(choices=[('reservation', 'rezervace'), ('active', 'aktivn\xed'), ('completed', 'dokoncen\xfd'), ('race', 'zavod')], default='active', max_length=30, verbose_name='Status'), - ), - ] diff --git a/cvkbrno/migrations/0009_auto_20160519_1207.py b/cvkbrno/migrations/0009_auto_20160519_1207.py deleted file mode 100644 index dc62d860..00000000 --- a/cvkbrno/migrations/0009_auto_20160519_1207.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-19 10:07 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0008_auto_20160519_1204'), - ] - - operations = [ - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 5, 19, 12, 7, 34, 316000), verbose_name='Startovn\xed Datum/Cas'), - ), - ] diff --git a/cvkbrno/migrations/0010_auto_20160608_0811.py b/cvkbrno/migrations/0010_auto_20160608_0811.py deleted file mode 100644 index 203e70c9..00000000 --- a/cvkbrno/migrations/0010_auto_20160608_0811.py +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-08 06:11 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0009_auto_20160519_1207'), - ] - - operations = [ - migrations.AlterModelOptions( - name='boat', - options={'verbose_name': 'lo\u010f', 'verbose_name_plural': 'lod\u011b'}, - ), - migrations.AlterModelOptions( - name='member', - options={'verbose_name': '\u010dlen', 'verbose_name_plural': '\u010dlenov\xe9'}, - ), - migrations.AlterModelOptions( - name='memberwork', - options={'verbose_name': 'Brig\xe1da', 'verbose_name_plural': 'Brig\xe1da'}, - ), - migrations.AlterModelOptions( - name='outing', - options={'verbose_name': 'j\xedzda', 'verbose_name_plural': 'j\xedzdy'}, - ), - migrations.AlterField( - model_name='boat', - name='boatcode', - field=models.CharField(max_length=10, verbose_name='k\xf3d lod\xed'), - ), - migrations.AlterField( - model_name='boat', - name='nrseats', - field=models.IntegerField(verbose_name='po\u010det m\xedst'), - ), - migrations.AlterField( - model_name='boat', - name='status', - field=models.CharField(choices=[('water', 'voda'), ('hangar', 'lod\u011bnice'), ('damaged', 'po\u0161kozen\xe1'), ('races', 'z\xe1vody')], default='hangar', max_length=30), - ), - migrations.AlterField( - model_name='member', - name='club', - field=models.CharField(max_length=30, verbose_name='klub'), - ), - migrations.AlterField( - model_name='member', - name='hoursworked', - field=models.FloatField(verbose_name='odpracovan\xe9 hodiny'), - ), - migrations.AlterField( - model_name='member', - name='status', - field=models.CharField(choices=[('coach', 'tren\xe9r'), ('member', '\u010dlen'), ('administrator', 'spr\xe1vce')], default='member', max_length=30), - ), - migrations.AlterField( - model_name='memberwork', - name='date', - field=models.DateField(verbose_name='datum'), - ), - migrations.AlterField( - model_name='memberwork', - name='hours', - field=models.FloatField(verbose_name='hodiny'), - ), - migrations.AlterField( - model_name='memberwork', - name='name', - field=models.CharField(max_length=30, verbose_name='n\xe1zev brig\xe1dy'), - ), - migrations.AlterField( - model_name='memberwork', - name='status', - field=models.CharField(choices=[('planned', 'pl\xe1novan\xfd'), ('executed', 'proveden\xfd')], default='planned', max_length=30), - ), - migrations.AlterField( - model_name='outing', - name='comment', - field=models.CharField(blank=True, max_length=100, verbose_name='koment\xe1\u0159'), - ), - migrations.AlterField( - model_name='outing', - name='distance', - field=models.FloatField(default=12, verbose_name='vzd\xe1lenost'), - ), - migrations.AlterField( - model_name='outing', - name='endtime', - field=models.DateTimeField(blank=True, null=True, verbose_name='P\u0159edpokl\xe1dan\xfd \u010das ukon\u010den\xed'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 8, 8, 11, 2, 709000), verbose_name='\u010cas'), - ), - migrations.AlterField( - model_name='outing', - name='status', - field=models.CharField(choices=[('reservation', 'rezervace'), ('active', 'aktivn\xed'), ('completed', 'dokon\u010den\xfd'), ('race', 'z\xe1vod')], default='active', max_length=30, verbose_name='status'), - ), - ] diff --git a/cvkbrno/migrations/0011_auto_20160613_1640.py b/cvkbrno/migrations/0011_auto_20160613_1640.py deleted file mode 100644 index aacafbef..00000000 --- a/cvkbrno/migrations/0011_auto_20160613_1640.py +++ /dev/null @@ -1,144 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-13 14:40 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0010_auto_20160608_0811'), - ] - - operations = [ - migrations.CreateModel( - name='Races', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('starttime', models.DateTimeField(verbose_name='Start Time')), - ('endtime', models.DateTimeField(verbose_name='End Time')), - ], - options={ - 'verbose_name': 'race', - 'verbose_name_plural': 'races', - }, - ), - migrations.AlterModelOptions( - name='boat', - options={'verbose_name': 'boat', 'verbose_name_plural': 'boats'}, - ), - migrations.AlterModelOptions( - name='boatcategory', - options={'verbose_name': 'boat category', 'verbose_name_plural': 'boat categories'}, - ), - migrations.AlterModelOptions( - name='member', - options={'verbose_name': 'member', 'verbose_name_plural': 'members'}, - ), - migrations.AlterModelOptions( - name='memberwork', - options={'verbose_name': 'member work', 'verbose_name_plural': 'member work'}, - ), - migrations.AlterModelOptions( - name='outing', - options={'verbose_name': 'outing', 'verbose_name_plural': 'outings'}, - ), - migrations.AlterField( - model_name='boat', - name='boatcode', - field=models.CharField(max_length=10, verbose_name='Boat Code'), - ), - migrations.AlterField( - model_name='boat', - name='boatname', - field=models.CharField(max_length=30, verbose_name='Boat Name'), - ), - migrations.AlterField( - model_name='boat', - name='nrseats', - field=models.IntegerField(verbose_name='Nr of Seats'), - ), - migrations.AlterField( - model_name='boat', - name='status', - field=models.CharField(choices=[('water', 'water'), ('hangar', 'hangar'), ('damaged', 'damaged'), ('races', 'races')], default='hangar', max_length=30), - ), - migrations.AlterField( - model_name='boatcategory', - name='name', - field=models.CharField(max_length=30, verbose_name='Boat Category'), - ), - migrations.AlterField( - model_name='member', - name='categories', - field=models.ManyToManyField(to='cvkbrno.BoatCategory', verbose_name='Boat Categories'), - ), - migrations.AlterField( - model_name='member', - name='club', - field=models.CharField(max_length=30, verbose_name='Club'), - ), - migrations.AlterField( - model_name='member', - name='hoursworked', - field=models.FloatField(verbose_name='Hours Worked'), - ), - migrations.AlterField( - model_name='member', - name='status', - field=models.CharField(choices=[('coach', 'coach'), ('member', 'member'), ('administrator', 'administrator')], default='member', max_length=30), - ), - migrations.AlterField( - model_name='memberwork', - name='date', - field=models.DateField(verbose_name='Date'), - ), - migrations.AlterField( - model_name='memberwork', - name='hours', - field=models.FloatField(verbose_name='Hours'), - ), - migrations.AlterField( - model_name='memberwork', - name='name', - field=models.CharField(max_length=30, verbose_name='Work Event Name'), - ), - migrations.AlterField( - model_name='memberwork', - name='status', - field=models.CharField(choices=[('planned', 'planned'), ('executed', 'executed')], default='planned', max_length=30), - ), - migrations.AlterField( - model_name='outing', - name='comment', - field=models.CharField(blank=True, max_length=100, verbose_name='Comment'), - ), - migrations.AlterField( - model_name='outing', - name='distance', - field=models.FloatField(default=12, verbose_name='Distance'), - ), - migrations.AlterField( - model_name='outing', - name='endtime', - field=models.DateTimeField(blank=True, null=True, verbose_name='End Time'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 6, 13, 16, 40, 26, 888000), verbose_name='Start Time'), - ), - migrations.AlterField( - model_name='outing', - name='status', - field=models.CharField(choices=[('reservation', 'reservation'), ('active', 'active'), ('completed', 'completed'), ('race', 'race')], default='active', max_length=30, verbose_name='Status'), - ), - migrations.AddField( - model_name='races', - name='boats', - field=models.ManyToManyField(to='cvkbrno.Boat'), - ), - ] diff --git a/cvkbrno/migrations/0012_auto_20160719_2240.py b/cvkbrno/migrations/0012_auto_20160719_2240.py deleted file mode 100644 index 4dea6028..00000000 --- a/cvkbrno/migrations/0012_auto_20160719_2240.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-19 20:40 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0011_auto_20160613_1640'), - ] - - operations = [ - migrations.RemoveField( - model_name='races', - name='endtime', - ), - migrations.RemoveField( - model_name='races', - name='starttime', - ), - migrations.AddField( - model_name='races', - name='enddatetime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 22, 40, 1, 937000), verbose_name='End Time'), - ), - migrations.AddField( - model_name='races', - name='startdatetime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 22, 40, 1, 937000), verbose_name='Start Time'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 22, 40, 1, 935000), verbose_name='Start Time'), - ), - ] diff --git a/cvkbrno/migrations/0013_auto_20160719_2245.py b/cvkbrno/migrations/0013_auto_20160719_2245.py deleted file mode 100644 index b978baf1..00000000 --- a/cvkbrno/migrations/0013_auto_20160719_2245.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-19 20:45 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0012_auto_20160719_2240'), - ] - - operations = [ - migrations.RenameField( - model_name='races', - old_name='boats', - new_name='transportboats', - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 22, 45, 43, 357000), verbose_name='Start Time'), - ), - migrations.AlterField( - model_name='races', - name='enddatetime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 22, 45, 43, 359000), verbose_name='End Time'), - ), - migrations.AlterField( - model_name='races', - name='startdatetime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 22, 45, 43, 359000), verbose_name='Start Time'), - ), - ] diff --git a/cvkbrno/migrations/0014_auto_20160719_2313.py b/cvkbrno/migrations/0014_auto_20160719_2313.py deleted file mode 100644 index c8dbd2a3..00000000 --- a/cvkbrno/migrations/0014_auto_20160719_2313.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-19 21:13 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0013_auto_20160719_2245'), - ] - - operations = [ - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 23, 13, 32, 498000), verbose_name='Start Time'), - ), - migrations.AlterField( - model_name='races', - name='enddatetime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 23, 13, 32, 499000), verbose_name='End Time'), - ), - migrations.AlterField( - model_name='races', - name='startdatetime', - field=models.DateTimeField(default=datetime.datetime(2016, 7, 19, 23, 13, 32, 499000), verbose_name='Start Time'), - ), - ] diff --git a/cvkbrno/migrations/0015_auto_20160720_1741.py b/cvkbrno/migrations/0015_auto_20160720_1741.py deleted file mode 100644 index d99d410c..00000000 --- a/cvkbrno/migrations/0015_auto_20160720_1741.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-20 15:41 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0014_auto_20160719_2313'), - ] - - operations = [ - migrations.AddField( - model_name='outing', - name='otherrowers', - field=models.ManyToManyField(related_name='otherrowers', to='cvkbrno.Member'), - ), - migrations.AlterField( - model_name='outing', - name='starttime', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Start Time'), - ), - migrations.AlterField( - model_name='races', - name='enddatetime', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='End Time'), - ), - migrations.AlterField( - model_name='races', - name='startdatetime', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Start Time'), - ), - ] diff --git a/cvkbrno/migrations/0016_outing_race.py b/cvkbrno/migrations/0016_outing_race.py deleted file mode 100644 index 348caa01..00000000 --- a/cvkbrno/migrations/0016_outing_race.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-21 06:53 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0015_auto_20160720_1741'), - ] - - operations = [ - migrations.AddField( - model_name='outing', - name='race', - field=models.ManyToManyField(blank=True, to='cvkbrno.Races'), - ), - ] diff --git a/cvkbrno/migrations/0017_auto_20160721_1621.py b/cvkbrno/migrations/0017_auto_20160721_1621.py deleted file mode 100644 index 2a4d7816..00000000 --- a/cvkbrno/migrations/0017_auto_20160721_1621.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-21 14:21 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0016_outing_race'), - ] - - operations = [ - migrations.AlterField( - model_name='outing', - name='distance', - field=models.FloatField(default=12, verbose_name='Distance (km)'), - ), - ] diff --git a/cvkbrno/migrations/0018_auto_20160722_1043.py b/cvkbrno/migrations/0018_auto_20160722_1043.py deleted file mode 100644 index 9be625fe..00000000 --- a/cvkbrno/migrations/0018_auto_20160722_1043.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-22 08:43 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0017_auto_20160721_1621'), - ] - - operations = [ - migrations.AlterField( - model_name='boat', - name='comment', - field=models.CharField(blank=True, max_length=100, verbose_name='Comment'), - ), - ] diff --git a/cvkbrno/migrations/0019_boatcategory_club.py b/cvkbrno/migrations/0019_boatcategory_club.py deleted file mode 100644 index 3b1fedea..00000000 --- a/cvkbrno/migrations/0019_boatcategory_club.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-22 08:44 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0018_auto_20160722_1043'), - ] - - operations = [ - migrations.AddField( - model_name='boatcategory', - name='club', - field=models.CharField(default='cvkbrno', max_length=30, verbose_name='Club'), - preserve_default=False, - ), - ] diff --git a/cvkbrno/migrations/0020_remove_member_club.py b/cvkbrno/migrations/0020_remove_member_club.py deleted file mode 100644 index 433fefbc..00000000 --- a/cvkbrno/migrations/0020_remove_member_club.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-22 08:46 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0019_boatcategory_club'), - ] - - operations = [ - migrations.RemoveField( - model_name='member', - name='club', - ), - ] diff --git a/cvkbrno/migrations/0021_member_club.py b/cvkbrno/migrations/0021_member_club.py deleted file mode 100644 index 19ece38b..00000000 --- a/cvkbrno/migrations/0021_member_club.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-22 08:47 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0020_remove_member_club'), - ] - - operations = [ - migrations.AddField( - model_name='member', - name='club', - field=models.CharField(default='cvkbrno', max_length=30, verbose_name='Club'), - preserve_default=False, - ), - ] diff --git a/cvkbrno/migrations/0022_auto_20160723_1502.py b/cvkbrno/migrations/0022_auto_20160723_1502.py deleted file mode 100644 index 80651758..00000000 --- a/cvkbrno/migrations/0022_auto_20160723_1502.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-23 13:02 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0021_member_club'), - ] - - operations = [ - migrations.AlterField( - model_name='memberwork', - name='worker', - field=models.ManyToManyField(related_name='Worker', to='cvkbrno.Member'), - ), - ] diff --git a/cvkbrno/migrations/0023_memberwork_comment.py b/cvkbrno/migrations/0023_memberwork_comment.py deleted file mode 100644 index b799c982..00000000 --- a/cvkbrno/migrations/0023_memberwork_comment.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-24 06:33 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cvkbrno', '0022_auto_20160723_1502'), - ] - - operations = [ - migrations.AddField( - model_name='memberwork', - name='comment', - field=models.CharField(blank=True, max_length=100, verbose_name='Comment'), - ), - ] diff --git a/cvkbrno/migrations/__init__.py b/cvkbrno/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/paidplans.json b/paidplans.json new file mode 100644 index 00000000..2abd7eb6 --- /dev/null +++ b/paidplans.json @@ -0,0 +1 @@ +[{"model": "rowers.paidplan", "pk": 1, "fields": {"shortname": "basic", "name": "Basic", "external_id": null, "price": 0.0, "paymentprocessor": "paypal", "paymenttype": "single", "active": true, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 2, "fields": {"shortname": "pro", "name": "Pro (recurring)", "external_id": "pv5r", "price": 25.0, "paymentprocessor": "braintree", "paymenttype": "recurring", "active": true, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 3, "fields": {"shortname": "pro", "name": "Pro (one year)", "external_id": null, "price": 25.0, "paymentprocessor": "paypal", "paymenttype": "single", "active": false, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 4, "fields": {"shortname": "coach", "name": "Coach (4 athletes or less - recurring)", "external_id": null, "price": 90.0, "paymentprocessor": "paypal", "paymenttype": "recurring", "active": true, "clubsize": 4}}, {"model": "rowers.paidplan", "pk": 5, "fields": {"shortname": "plan", "name": "Self-Coach (recurring)", "external_id": null, "price": 75.0, "paymentprocessor": "paypal", "paymenttype": "recurring", "active": true, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 6, "fields": {"shortname": "coach", "name": "Coach (4-10 athletes, recurring)", "external_id": null, "price": 200.0, "paymentprocessor": "paypal", "paymenttype": "recurring", "active": true, "clubsize": 10}}, {"model": "rowers.paidplan", "pk": 7, "fields": {"shortname": "coach", "name": "Coach (more than 10 athletes, recurring)", "external_id": null, "price": 450.0, "paymentprocessor": "paypal", "paymenttype": "recurring", "active": true, "clubsize": 100}}, {"model": "rowers.paidplan", "pk": 8, "fields": {"shortname": "plan", "name": "Self-Coach (one year)", "external_id": null, "price": 75.0, "paymentprocessor": "paypal", "paymenttype": "single", "active": false, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 9, "fields": {"shortname": "coach", "name": "Coach (4 athletes or less - one year)", "external_id": null, "price": 120.0, "paymentprocessor": "paypal", "paymenttype": "single", "active": false, "clubsize": 4}}, {"model": "rowers.paidplan", "pk": 10, "fields": {"shortname": "coach", "name": "Coach (4-10 athletes, one year)", "external_id": null, "price": 250.0, "paymentprocessor": "paypal", "paymenttype": "single", "active": false, "clubsize": 10}}, {"model": "rowers.paidplan", "pk": 11, "fields": {"shortname": "coach", "name": "Coach (more than 10 athletes, one year)", "external_id": null, "price": 500.0, "paymentprocessor": "paypal", "paymenttype": "single", "active": false, "clubsize": 100}}, {"model": "rowers.paidplan", "pk": 12, "fields": {"shortname": "basic", "name": "Basic", "external_id": null, "price": 0.0, "paymentprocessor": "braintree", "paymenttype": "single", "active": true, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 13, "fields": {"shortname": "pro", "name": "Pro (recurring)", "external_id": null, "price": 25.0, "paymentprocessor": "paypal", "paymenttype": "recurring", "active": true, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 14, "fields": {"shortname": "pro", "name": "Pro (one year)", "external_id": "c6ww", "price": 25.0, "paymentprocessor": "braintree", "paymenttype": "single", "active": false, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 15, "fields": {"shortname": "coach", "name": "Coach (4 athletes or less - recurring)", "external_id": "hp9r", "price": 90.0, "paymentprocessor": "braintree", "paymenttype": "recurring", "active": true, "clubsize": 4}}, {"model": "rowers.paidplan", "pk": 16, "fields": {"shortname": "plan", "name": "Self-Coach (recurring)", "external_id": "s596", "price": 75.0, "paymentprocessor": "braintree", "paymenttype": "recurring", "active": true, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 17, "fields": {"shortname": "coach", "name": "Coach (4-10 athletes, recurring)", "external_id": "qngw", "price": 200.0, "paymentprocessor": "braintree", "paymenttype": "recurring", "active": true, "clubsize": 10}}, {"model": "rowers.paidplan", "pk": 18, "fields": {"shortname": "coach", "name": "Coach (more than 10 athletes, recurring)", "external_id": "mnwb", "price": 450.0, "paymentprocessor": "braintree", "paymenttype": "recurring", "active": true, "clubsize": 100}}, {"model": "rowers.paidplan", "pk": 19, "fields": {"shortname": "plan", "name": "Self-Coach (one year)", "external_id": "3qxg", "price": 75.0, "paymentprocessor": "braintree", "paymenttype": "single", "active": false, "clubsize": 0}}, {"model": "rowers.paidplan", "pk": 20, "fields": {"shortname": "coach", "name": "Coach (4 athletes or less - one year)", "external_id": "9q4m", "price": 120.0, "paymentprocessor": "braintree", "paymenttype": "single", "active": false, "clubsize": 4}}, {"model": "rowers.paidplan", "pk": 21, "fields": {"shortname": "coach", "name": "Coach (4-10 athletes, one year)", "external_id": "6qj2", "price": 250.0, "paymentprocessor": "braintree", "paymenttype": "single", "active": false, "clubsize": 10}}, {"model": "rowers.paidplan", "pk": 22, "fields": {"shortname": "coach", "name": "Coach (more than 10 athletes, one year)", "external_id": "dpq6", "price": 500.0, "paymentprocessor": "braintree", "paymenttype": "single", "active": false, "clubsize": 100}}] \ No newline at end of file diff --git a/rowers/migrations/0001_initial.py b/rowers/migrations/0001_initial.py index fb9476fe..c5a586e6 100644 --- a/rowers/migrations/0001_initial.py +++ b/rowers/migrations/0001_initial.py @@ -1,10 +1,13 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 08:42 -from __future__ import unicode_literals +# Generated by Django 2.2 on 2019-04-14 15:15 +import datetime from django.conf import settings +import django.core.validators from django.db import migrations, models import django.db.models.deletion +import django.utils.timezone +import django_countries.fields +import rowers.models class Migration(migrations.Migration): @@ -16,22 +19,674 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='CalcAgePerformance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('weightcategory', models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=30)), + ('sex', models.CharField(choices=[('male', 'male'), ('female', 'female')], default='female', max_length=30)), + ('age', models.IntegerField(default=19, verbose_name='Age')), + ('duration', models.FloatField(blank=True, default=1)), + ('power', models.IntegerField(default=200)), + ], + options={ + 'db_table': 'calcagegrouprecords', + }, + ), + migrations.CreateModel( + name='CoachingGroup', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, default='group', max_length=30, null=True)), + ], + ), + migrations.CreateModel( + name='GeoCourse', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('distance', models.IntegerField(default=0)), + ('name', models.CharField(blank=True, max_length=150)), + ('country', models.CharField(blank=True, max_length=150)), + ('notes', models.CharField(blank=True, max_length=200, verbose_name='Course Notes')), + ], + ), + migrations.CreateModel( + name='PaidPlan', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('shortname', models.CharField(choices=[('basic', 'basic'), ('pro', 'pro'), ('plan', 'plan'), ('coach', 'coach')], max_length=50)), + ('name', models.CharField(max_length=200)), + ('external_id', models.CharField(blank=True, default=None, max_length=200, null=True)), + ('price', models.FloatField(blank=True, default=None, null=True)), + ('paymentprocessor', models.CharField(choices=[('paypal', 'PayPal'), ('braintree', 'BrainTree')], default='braintree', max_length=50)), + ('paymenttype', models.CharField(choices=[('single', 'single'), ('recurring', 'recurring')], default='single', max_length=30, verbose_name='Payment Type')), + ('active', models.BooleanField(default=True)), + ('clubsize', models.IntegerField(default=0)), + ], + ), + migrations.CreateModel( + name='PlannedSession', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150, verbose_name='Name')), + ('comment', models.TextField(blank=True, max_length=500)), + ('startdate', models.DateField(default=rowers.models.current_day, verbose_name='On or After')), + ('enddate', models.DateField(default=rowers.models.a_week_from_now, verbose_name='On or Before')), + ('preferreddate', models.DateField(default=rowers.models.a_week_from_now, verbose_name='Preferred Date')), + ('sessiontype', models.CharField(choices=[('session', 'Training Session'), ('challenge', 'Challenge'), ('test', 'Mandatory Test'), ('cycletarget', 'Total for a time period'), ('coursetest', 'OTW test over a course'), ('race', 'Virtual Race'), ('indoorrace', 'Indoor Virtual Race')], default='session', max_length=150, verbose_name='Session Type')), + ('sessionvalue', models.IntegerField(default=60, verbose_name='Value')), + ('max_nr_of_workouts', models.IntegerField(default=0, verbose_name='Maximum number of workouts')), + ('sessionunit', models.CharField(choices=[('min', 'minutes'), ('m', 'meters'), ('None', None)], default='min', max_length=150, verbose_name='Unit')), + ('criterium', models.CharField(choices=[('none', 'Approximately'), ('minimum', 'At Least'), ('exact', 'Exactly')], default='none', max_length=150, verbose_name='Criteria')), + ('verification', models.CharField(choices=[('none', 'None'), ('automatic', 'Automatic'), ('manual', 'Manual')], default='none', max_length=150)), + ('sessionmode', models.CharField(choices=[('distance', 'Distance'), ('time', 'Time'), ('rScore', 'rScore'), ('TRIMP', 'TRIMP')], default='time', max_length=150, verbose_name='Session Mode')), + ('hasranking', models.BooleanField(default=False)), + ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rowers.GeoCourse', verbose_name='OTW Course')), + ('manager', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ], + ), migrations.CreateModel( name='Rower', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('max', models.IntegerField()), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('country', django_countries.fields.CountryField(blank=True, default=None, max_length=2, null=True)), + ('street_address', models.CharField(blank=True, default='', max_length=200, null=True)), + ('city', models.CharField(blank=True, default='', max_length=200, null=True)), + ('postal_code', models.CharField(blank=True, default='', max_length=200, null=True)), + ('customer_id', models.CharField(blank=True, default=None, max_length=200, null=True)), + ('subscription_id', models.CharField(blank=True, default=None, max_length=200, null=True)), + ('rowerplan', models.CharField(choices=[('basic', 'basic'), ('pro', 'pro'), ('plan', 'plan'), ('coach', 'coach')], default='basic', max_length=30)), + ('paymenttype', models.CharField(choices=[('single', 'single'), ('recurring', 'recurring')], default='single', max_length=30, verbose_name='Payment Type')), + ('paymentprocessor', models.CharField(blank=True, choices=[('paypal', 'PayPal'), ('braintree', 'BrainTree')], default='braintree', max_length=50, null=True)), + ('planexpires', models.DateField(default=rowers.models.current_day)), + ('teamplanexpires', models.DateField(default=rowers.models.current_day)), + ('clubsize', models.IntegerField(default=0)), + ('protrialexpires', models.DateField(default=datetime.date(1970, 1, 1))), + ('plantrialexpires', models.DateField(default=datetime.date(1970, 1, 1))), + ('offercoaching', models.BooleanField(default=False, verbose_name='Offer Remote Coaching')), + ('gdproptin', models.BooleanField(default=False)), + ('gdproptindate', models.DateTimeField(blank=True, null=True)), + ('max', models.IntegerField(default=192, verbose_name='Max Heart Rate')), + ('rest', models.IntegerField(default=48, verbose_name='Resting Heart Rate')), + ('ut2', models.IntegerField(default=105, verbose_name='UT2 band lower HR')), + ('ut1', models.IntegerField(default=146, verbose_name='UT1 band lower HR')), + ('at', models.IntegerField(default=160, verbose_name='AT band lower HR')), + ('tr', models.IntegerField(default=167, verbose_name='TR band lower HR')), + ('an', models.IntegerField(default=180, verbose_name='AN band lower HR')), + ('hrftp', models.IntegerField(default=0, verbose_name='FTP heart rate')), + ('weightcategory', models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=30)), + ('sex', models.CharField(choices=[('male', 'male'), ('female', 'female'), ('not specified', 'not specified')], default='not specified', max_length=30)), + ('adaptiveclass', models.CharField(choices=[('None', 'None'), ('PR1', 'PR1 (Arms and Shoulders)'), ('PR2', 'PR2 (Trunk and Arms)'), ('PR3', 'PR3 (Leg Trunk and Arms)'), ('FES', 'FES (Functional Electrical Stimulation)')], default='None', max_length=50, verbose_name='Adaptive Classification')), + ('birthdate', models.DateField(blank=True, null=True)), + ('ftp', models.IntegerField(default=226, verbose_name='Functional Threshold Power')), + ('p0', models.FloatField(default=1.0, verbose_name='CP p1')), + ('p1', models.FloatField(default=1.0, verbose_name='CP p2')), + ('p2', models.FloatField(default=1.0, verbose_name='CP p3')), + ('p3', models.FloatField(default=1.0, verbose_name='CP p4')), + ('cpratio', models.FloatField(default=1.0, verbose_name='CP fit ratio')), + ('ep0', models.FloatField(default=1.0, verbose_name='erg CP p1')), + ('ep1', models.FloatField(default=1.0, verbose_name='erg CP p2')), + ('ep2', models.FloatField(default=1.0, verbose_name='erg CP p3')), + ('ep3', models.FloatField(default=1.0, verbose_name='erg CP p4')), + ('ecpratio', models.FloatField(default=1.0, verbose_name='erg CP fit ratio')), + ('otwslack', models.IntegerField(default=0, verbose_name='OTW Power slack')), + ('pw_ut2', models.IntegerField(default=124, verbose_name='UT2 Power')), + ('pw_ut1', models.IntegerField(default=171, verbose_name='UT1 Power')), + ('pw_at', models.IntegerField(default=203, verbose_name='AT Power')), + ('pw_tr', models.IntegerField(default=237, verbose_name='TR Power')), + ('pw_an', models.IntegerField(default=273, verbose_name='AN Power')), + ('powerzones', rowers.models.PowerZonesField(default=['Rest', 'Pwr UT2', 'Pwr UT1', 'Pwr AT', 'Pwr TR', 'Pwr AN'])), + ('workflowleftpanel', rowers.models.TemplateListField(default=['panel_navigationheader.html', 'panel_editbuttons.html', 'panel_advancededit.html', 'panel_editintervals.html', 'panel_stats.html', 'panel_staticchart.html', 'panel_uploadimage.html'])), + ('workflowmiddlepanel', rowers.models.TemplateListField(default=['panel_middlesocial.html', 'panel_statcharts.html', 'flexthumbnails.html', 'panel_summary.html', 'panel_map.html'])), + ('defaultlandingpage', models.CharField(choices=[('workout_edit_view', 'Edit View'), ('workout_workflow_view', 'Workflow View'), ('workout_stats_view', 'Stats View'), ('workout_data_view', 'Data Explore View'), ('workout_summary_edit_view', 'Intervals Editor')], default='workout_edit_view', max_length=200, verbose_name='Default Landing Page')), + ('c2token', models.CharField(blank=True, default='', max_length=200, null=True)), + ('tokenexpirydate', models.DateTimeField(blank=True, null=True)), + ('c2refreshtoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('c2_auto_export', models.BooleanField(default=False)), + ('c2_auto_import', models.BooleanField(default=False)), + ('sporttrackstoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('sporttrackstokenexpirydate', models.DateTimeField(blank=True, null=True)), + ('sporttracksrefreshtoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('sporttracks_auto_export', models.BooleanField(default=False)), + ('underarmourtoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('underarmourtokenexpirydate', models.DateTimeField(blank=True, null=True)), + ('underarmourrefreshtoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('mapmyfitness_auto_export', models.BooleanField(default=False)), + ('tptoken', models.CharField(blank=True, default='', max_length=1000, null=True)), + ('tptokenexpirydate', models.DateTimeField(blank=True, null=True)), + ('tprefreshtoken', models.CharField(blank=True, default='', max_length=1000, null=True)), + ('trainingpeaks_auto_export', models.BooleanField(default=False)), + ('polartoken', models.CharField(blank=True, default='', max_length=1000, null=True)), + ('polartokenexpirydate', models.DateTimeField(blank=True, null=True)), + ('polarrefreshtoken', models.CharField(blank=True, default='', max_length=1000, null=True)), + ('polaruserid', models.IntegerField(default=0)), + ('polar_auto_import', models.BooleanField(default=False)), + ('stravatoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('stravatokenexpirydate', models.DateTimeField(blank=True, null=True)), + ('stravarefreshtoken', models.CharField(blank=True, default='', max_length=1000, null=True)), + ('stravaexportas', models.CharField(choices=[('Ride', 'Ride'), ('Kitesurf', 'Kitesurf'), ('Run', 'Run'), ('NordicSki', 'NordicSki'), ('Swim', 'Swim'), ('RockClimbing', 'RockClimbing'), ('Hike', 'Hike'), ('RollerSki', 'RollerSki'), ('Walk', 'Walk'), ('Rowing', 'Rowing'), ('AlpineSki', 'AlpineSki'), ('Snowboard', 'Snowboard'), ('BackcountrySki', 'BackcountrySki'), ('Snowshoe', 'Snowshoe'), ('Canoeing', 'Canoeing'), ('StairStepper', 'StairStepper'), ('Crossfit', 'Crossfit'), ('StandUpPaddling', 'StandUpPaddling'), ('EBikeRide', 'EBikeRide'), ('Surfing', 'Surfing'), ('Elliptical', 'Elliptical'), ('VirtualRide', 'VirtualRide'), ('IceSkate', 'IceSkate'), ('WeightTraining', 'WeightTraining'), ('InlineSkate', 'InlineSkate'), ('Windsurf', 'Windsurf'), ('Kayaking', 'Kayaking'), ('Workout', 'Workout'), ('Yoga', 'Yoga')], default='Rowing', max_length=30, verbose_name='Export Workouts to Strava as')), + ('strava_auto_export', models.BooleanField(default=False)), + ('strava_auto_import', models.BooleanField(default=False)), + ('runkeepertoken', models.CharField(blank=True, default='', max_length=200, null=True)), + ('runkeeper_auto_export', models.BooleanField(default=False)), + ('getemailnotifications', models.BooleanField(default=False, verbose_name='Receive email notifications')), + ('emailbounced', models.BooleanField(default=False, verbose_name='Email Address Bounced')), + ('getimportantemails', models.BooleanField(default=True, verbose_name='Get Important Emails')), + ('privacy', models.CharField(choices=[('visible', 'Visible'), ('hidden', 'Hidden')], default='visible', max_length=30)), + ('defaulttimezone', models.CharField(choices=[('Africa/Abidjan', 'Africa/Abidjan'), ('Africa/Accra', 'Africa/Accra'), ('Africa/Addis_Ababa', 'Africa/Addis_Ababa'), ('Africa/Algiers', 'Africa/Algiers'), ('Africa/Asmara', 'Africa/Asmara'), ('Africa/Bamako', 'Africa/Bamako'), ('Africa/Bangui', 'Africa/Bangui'), ('Africa/Banjul', 'Africa/Banjul'), ('Africa/Bissau', 'Africa/Bissau'), ('Africa/Blantyre', 'Africa/Blantyre'), ('Africa/Brazzaville', 'Africa/Brazzaville'), ('Africa/Bujumbura', 'Africa/Bujumbura'), ('Africa/Cairo', 'Africa/Cairo'), ('Africa/Casablanca', 'Africa/Casablanca'), ('Africa/Ceuta', 'Africa/Ceuta'), ('Africa/Conakry', 'Africa/Conakry'), ('Africa/Dakar', 'Africa/Dakar'), ('Africa/Dar_es_Salaam', 'Africa/Dar_es_Salaam'), ('Africa/Djibouti', 'Africa/Djibouti'), ('Africa/Douala', 'Africa/Douala'), ('Africa/El_Aaiun', 'Africa/El_Aaiun'), ('Africa/Freetown', 'Africa/Freetown'), ('Africa/Gaborone', 'Africa/Gaborone'), ('Africa/Harare', 'Africa/Harare'), ('Africa/Johannesburg', 'Africa/Johannesburg'), ('Africa/Juba', 'Africa/Juba'), ('Africa/Kampala', 'Africa/Kampala'), ('Africa/Khartoum', 'Africa/Khartoum'), ('Africa/Kigali', 'Africa/Kigali'), ('Africa/Kinshasa', 'Africa/Kinshasa'), ('Africa/Lagos', 'Africa/Lagos'), ('Africa/Libreville', 'Africa/Libreville'), ('Africa/Lome', 'Africa/Lome'), ('Africa/Luanda', 'Africa/Luanda'), ('Africa/Lubumbashi', 'Africa/Lubumbashi'), ('Africa/Lusaka', 'Africa/Lusaka'), ('Africa/Malabo', 'Africa/Malabo'), ('Africa/Maputo', 'Africa/Maputo'), ('Africa/Maseru', 'Africa/Maseru'), ('Africa/Mbabane', 'Africa/Mbabane'), ('Africa/Mogadishu', 'Africa/Mogadishu'), ('Africa/Monrovia', 'Africa/Monrovia'), ('Africa/Nairobi', 'Africa/Nairobi'), ('Africa/Ndjamena', 'Africa/Ndjamena'), ('Africa/Niamey', 'Africa/Niamey'), ('Africa/Nouakchott', 'Africa/Nouakchott'), ('Africa/Ouagadougou', 'Africa/Ouagadougou'), ('Africa/Porto-Novo', 'Africa/Porto-Novo'), ('Africa/Sao_Tome', 'Africa/Sao_Tome'), ('Africa/Tripoli', 'Africa/Tripoli'), ('Africa/Tunis', 'Africa/Tunis'), ('Africa/Windhoek', 'Africa/Windhoek'), ('America/Adak', 'America/Adak'), ('America/Anchorage', 'America/Anchorage'), ('America/Anguilla', 'America/Anguilla'), ('America/Antigua', 'America/Antigua'), ('America/Araguaina', 'America/Araguaina'), ('America/Argentina/Buenos_Aires', 'America/Argentina/Buenos_Aires'), ('America/Argentina/Catamarca', 'America/Argentina/Catamarca'), ('America/Argentina/Cordoba', 'America/Argentina/Cordoba'), ('America/Argentina/Jujuy', 'America/Argentina/Jujuy'), ('America/Argentina/La_Rioja', 'America/Argentina/La_Rioja'), ('America/Argentina/Mendoza', 'America/Argentina/Mendoza'), ('America/Argentina/Rio_Gallegos', 'America/Argentina/Rio_Gallegos'), ('America/Argentina/Salta', 'America/Argentina/Salta'), ('America/Argentina/San_Juan', 'America/Argentina/San_Juan'), ('America/Argentina/San_Luis', 'America/Argentina/San_Luis'), ('America/Argentina/Tucuman', 'America/Argentina/Tucuman'), ('America/Argentina/Ushuaia', 'America/Argentina/Ushuaia'), ('America/Aruba', 'America/Aruba'), ('America/Asuncion', 'America/Asuncion'), ('America/Atikokan', 'America/Atikokan'), ('America/Bahia', 'America/Bahia'), ('America/Bahia_Banderas', 'America/Bahia_Banderas'), ('America/Barbados', 'America/Barbados'), ('America/Belem', 'America/Belem'), ('America/Belize', 'America/Belize'), ('America/Blanc-Sablon', 'America/Blanc-Sablon'), ('America/Boa_Vista', 'America/Boa_Vista'), ('America/Bogota', 'America/Bogota'), ('America/Boise', 'America/Boise'), ('America/Cambridge_Bay', 'America/Cambridge_Bay'), ('America/Campo_Grande', 'America/Campo_Grande'), ('America/Cancun', 'America/Cancun'), ('America/Caracas', 'America/Caracas'), ('America/Cayenne', 'America/Cayenne'), ('America/Cayman', 'America/Cayman'), ('America/Chicago', 'America/Chicago'), ('America/Chihuahua', 'America/Chihuahua'), ('America/Costa_Rica', 'America/Costa_Rica'), ('America/Creston', 'America/Creston'), ('America/Cuiaba', 'America/Cuiaba'), ('America/Curacao', 'America/Curacao'), ('America/Danmarkshavn', 'America/Danmarkshavn'), ('America/Dawson', 'America/Dawson'), ('America/Dawson_Creek', 'America/Dawson_Creek'), ('America/Denver', 'America/Denver'), ('America/Detroit', 'America/Detroit'), ('America/Dominica', 'America/Dominica'), ('America/Edmonton', 'America/Edmonton'), ('America/Eirunepe', 'America/Eirunepe'), ('America/El_Salvador', 'America/El_Salvador'), ('America/Fort_Nelson', 'America/Fort_Nelson'), ('America/Fortaleza', 'America/Fortaleza'), ('America/Glace_Bay', 'America/Glace_Bay'), ('America/Godthab', 'America/Godthab'), ('America/Goose_Bay', 'America/Goose_Bay'), ('America/Grand_Turk', 'America/Grand_Turk'), ('America/Grenada', 'America/Grenada'), ('America/Guadeloupe', 'America/Guadeloupe'), ('America/Guatemala', 'America/Guatemala'), ('America/Guayaquil', 'America/Guayaquil'), ('America/Guyana', 'America/Guyana'), ('America/Halifax', 'America/Halifax'), ('America/Havana', 'America/Havana'), ('America/Hermosillo', 'America/Hermosillo'), ('America/Indiana/Indianapolis', 'America/Indiana/Indianapolis'), ('America/Indiana/Knox', 'America/Indiana/Knox'), ('America/Indiana/Marengo', 'America/Indiana/Marengo'), ('America/Indiana/Petersburg', 'America/Indiana/Petersburg'), ('America/Indiana/Tell_City', 'America/Indiana/Tell_City'), ('America/Indiana/Vevay', 'America/Indiana/Vevay'), ('America/Indiana/Vincennes', 'America/Indiana/Vincennes'), ('America/Indiana/Winamac', 'America/Indiana/Winamac'), ('America/Inuvik', 'America/Inuvik'), ('America/Iqaluit', 'America/Iqaluit'), ('America/Jamaica', 'America/Jamaica'), ('America/Juneau', 'America/Juneau'), ('America/Kentucky/Louisville', 'America/Kentucky/Louisville'), ('America/Kentucky/Monticello', 'America/Kentucky/Monticello'), ('America/Kralendijk', 'America/Kralendijk'), ('America/La_Paz', 'America/La_Paz'), ('America/Lima', 'America/Lima'), ('America/Los_Angeles', 'America/Los_Angeles'), ('America/Lower_Princes', 'America/Lower_Princes'), ('America/Maceio', 'America/Maceio'), ('America/Managua', 'America/Managua'), ('America/Manaus', 'America/Manaus'), ('America/Marigot', 'America/Marigot'), ('America/Martinique', 'America/Martinique'), ('America/Matamoros', 'America/Matamoros'), ('America/Mazatlan', 'America/Mazatlan'), ('America/Menominee', 'America/Menominee'), ('America/Merida', 'America/Merida'), ('America/Metlakatla', 'America/Metlakatla'), ('America/Mexico_City', 'America/Mexico_City'), ('America/Miquelon', 'America/Miquelon'), ('America/Moncton', 'America/Moncton'), ('America/Monterrey', 'America/Monterrey'), ('America/Montevideo', 'America/Montevideo'), ('America/Montserrat', 'America/Montserrat'), ('America/Nassau', 'America/Nassau'), ('America/New_York', 'America/New_York'), ('America/Nipigon', 'America/Nipigon'), ('America/Nome', 'America/Nome'), ('America/Noronha', 'America/Noronha'), ('America/North_Dakota/Beulah', 'America/North_Dakota/Beulah'), ('America/North_Dakota/Center', 'America/North_Dakota/Center'), ('America/North_Dakota/New_Salem', 'America/North_Dakota/New_Salem'), ('America/Ojinaga', 'America/Ojinaga'), ('America/Panama', 'America/Panama'), ('America/Pangnirtung', 'America/Pangnirtung'), ('America/Paramaribo', 'America/Paramaribo'), ('America/Phoenix', 'America/Phoenix'), ('America/Port-au-Prince', 'America/Port-au-Prince'), ('America/Port_of_Spain', 'America/Port_of_Spain'), ('America/Porto_Velho', 'America/Porto_Velho'), ('America/Puerto_Rico', 'America/Puerto_Rico'), ('America/Punta_Arenas', 'America/Punta_Arenas'), ('America/Rainy_River', 'America/Rainy_River'), ('America/Rankin_Inlet', 'America/Rankin_Inlet'), ('America/Recife', 'America/Recife'), ('America/Regina', 'America/Regina'), ('America/Resolute', 'America/Resolute'), ('America/Rio_Branco', 'America/Rio_Branco'), ('America/Santarem', 'America/Santarem'), ('America/Santiago', 'America/Santiago'), ('America/Santo_Domingo', 'America/Santo_Domingo'), ('America/Sao_Paulo', 'America/Sao_Paulo'), ('America/Scoresbysund', 'America/Scoresbysund'), ('America/Sitka', 'America/Sitka'), ('America/St_Barthelemy', 'America/St_Barthelemy'), ('America/St_Johns', 'America/St_Johns'), ('America/St_Kitts', 'America/St_Kitts'), ('America/St_Lucia', 'America/St_Lucia'), ('America/St_Thomas', 'America/St_Thomas'), ('America/St_Vincent', 'America/St_Vincent'), ('America/Swift_Current', 'America/Swift_Current'), ('America/Tegucigalpa', 'America/Tegucigalpa'), ('America/Thule', 'America/Thule'), ('America/Thunder_Bay', 'America/Thunder_Bay'), ('America/Tijuana', 'America/Tijuana'), ('America/Toronto', 'America/Toronto'), ('America/Tortola', 'America/Tortola'), ('America/Vancouver', 'America/Vancouver'), ('America/Whitehorse', 'America/Whitehorse'), ('America/Winnipeg', 'America/Winnipeg'), ('America/Yakutat', 'America/Yakutat'), ('America/Yellowknife', 'America/Yellowknife'), ('Antarctica/Casey', 'Antarctica/Casey'), ('Antarctica/Davis', 'Antarctica/Davis'), ('Antarctica/DumontDUrville', 'Antarctica/DumontDUrville'), ('Antarctica/Macquarie', 'Antarctica/Macquarie'), ('Antarctica/Mawson', 'Antarctica/Mawson'), ('Antarctica/McMurdo', 'Antarctica/McMurdo'), ('Antarctica/Palmer', 'Antarctica/Palmer'), ('Antarctica/Rothera', 'Antarctica/Rothera'), ('Antarctica/Syowa', 'Antarctica/Syowa'), ('Antarctica/Troll', 'Antarctica/Troll'), ('Antarctica/Vostok', 'Antarctica/Vostok'), ('Arctic/Longyearbyen', 'Arctic/Longyearbyen'), ('Asia/Aden', 'Asia/Aden'), ('Asia/Almaty', 'Asia/Almaty'), ('Asia/Amman', 'Asia/Amman'), ('Asia/Anadyr', 'Asia/Anadyr'), ('Asia/Aqtau', 'Asia/Aqtau'), ('Asia/Aqtobe', 'Asia/Aqtobe'), ('Asia/Ashgabat', 'Asia/Ashgabat'), ('Asia/Atyrau', 'Asia/Atyrau'), ('Asia/Baghdad', 'Asia/Baghdad'), ('Asia/Bahrain', 'Asia/Bahrain'), ('Asia/Baku', 'Asia/Baku'), ('Asia/Bangkok', 'Asia/Bangkok'), ('Asia/Barnaul', 'Asia/Barnaul'), ('Asia/Beirut', 'Asia/Beirut'), ('Asia/Bishkek', 'Asia/Bishkek'), ('Asia/Brunei', 'Asia/Brunei'), ('Asia/Chita', 'Asia/Chita'), ('Asia/Choibalsan', 'Asia/Choibalsan'), ('Asia/Colombo', 'Asia/Colombo'), ('Asia/Damascus', 'Asia/Damascus'), ('Asia/Dhaka', 'Asia/Dhaka'), ('Asia/Dili', 'Asia/Dili'), ('Asia/Dubai', 'Asia/Dubai'), ('Asia/Dushanbe', 'Asia/Dushanbe'), ('Asia/Famagusta', 'Asia/Famagusta'), ('Asia/Gaza', 'Asia/Gaza'), ('Asia/Hebron', 'Asia/Hebron'), ('Asia/Ho_Chi_Minh', 'Asia/Ho_Chi_Minh'), ('Asia/Hong_Kong', 'Asia/Hong_Kong'), ('Asia/Hovd', 'Asia/Hovd'), ('Asia/Irkutsk', 'Asia/Irkutsk'), ('Asia/Jakarta', 'Asia/Jakarta'), ('Asia/Jayapura', 'Asia/Jayapura'), ('Asia/Jerusalem', 'Asia/Jerusalem'), ('Asia/Kabul', 'Asia/Kabul'), ('Asia/Kamchatka', 'Asia/Kamchatka'), ('Asia/Karachi', 'Asia/Karachi'), ('Asia/Kathmandu', 'Asia/Kathmandu'), ('Asia/Khandyga', 'Asia/Khandyga'), ('Asia/Kolkata', 'Asia/Kolkata'), ('Asia/Krasnoyarsk', 'Asia/Krasnoyarsk'), ('Asia/Kuala_Lumpur', 'Asia/Kuala_Lumpur'), ('Asia/Kuching', 'Asia/Kuching'), ('Asia/Kuwait', 'Asia/Kuwait'), ('Asia/Macau', 'Asia/Macau'), ('Asia/Magadan', 'Asia/Magadan'), ('Asia/Makassar', 'Asia/Makassar'), ('Asia/Manila', 'Asia/Manila'), ('Asia/Muscat', 'Asia/Muscat'), ('Asia/Nicosia', 'Asia/Nicosia'), ('Asia/Novokuznetsk', 'Asia/Novokuznetsk'), ('Asia/Novosibirsk', 'Asia/Novosibirsk'), ('Asia/Omsk', 'Asia/Omsk'), ('Asia/Oral', 'Asia/Oral'), ('Asia/Phnom_Penh', 'Asia/Phnom_Penh'), ('Asia/Pontianak', 'Asia/Pontianak'), ('Asia/Pyongyang', 'Asia/Pyongyang'), ('Asia/Qatar', 'Asia/Qatar'), ('Asia/Qostanay', 'Asia/Qostanay'), ('Asia/Qyzylorda', 'Asia/Qyzylorda'), ('Asia/Riyadh', 'Asia/Riyadh'), ('Asia/Sakhalin', 'Asia/Sakhalin'), ('Asia/Samarkand', 'Asia/Samarkand'), ('Asia/Seoul', 'Asia/Seoul'), ('Asia/Shanghai', 'Asia/Shanghai'), ('Asia/Singapore', 'Asia/Singapore'), ('Asia/Srednekolymsk', 'Asia/Srednekolymsk'), ('Asia/Taipei', 'Asia/Taipei'), ('Asia/Tashkent', 'Asia/Tashkent'), ('Asia/Tbilisi', 'Asia/Tbilisi'), ('Asia/Tehran', 'Asia/Tehran'), ('Asia/Thimphu', 'Asia/Thimphu'), ('Asia/Tokyo', 'Asia/Tokyo'), ('Asia/Tomsk', 'Asia/Tomsk'), ('Asia/Ulaanbaatar', 'Asia/Ulaanbaatar'), ('Asia/Urumqi', 'Asia/Urumqi'), ('Asia/Ust-Nera', 'Asia/Ust-Nera'), ('Asia/Vientiane', 'Asia/Vientiane'), ('Asia/Vladivostok', 'Asia/Vladivostok'), ('Asia/Yakutsk', 'Asia/Yakutsk'), ('Asia/Yangon', 'Asia/Yangon'), ('Asia/Yekaterinburg', 'Asia/Yekaterinburg'), ('Asia/Yerevan', 'Asia/Yerevan'), ('Atlantic/Azores', 'Atlantic/Azores'), ('Atlantic/Bermuda', 'Atlantic/Bermuda'), ('Atlantic/Canary', 'Atlantic/Canary'), ('Atlantic/Cape_Verde', 'Atlantic/Cape_Verde'), ('Atlantic/Faroe', 'Atlantic/Faroe'), ('Atlantic/Madeira', 'Atlantic/Madeira'), ('Atlantic/Reykjavik', 'Atlantic/Reykjavik'), ('Atlantic/South_Georgia', 'Atlantic/South_Georgia'), ('Atlantic/St_Helena', 'Atlantic/St_Helena'), ('Atlantic/Stanley', 'Atlantic/Stanley'), ('Australia/Adelaide', 'Australia/Adelaide'), ('Australia/Brisbane', 'Australia/Brisbane'), ('Australia/Broken_Hill', 'Australia/Broken_Hill'), ('Australia/Currie', 'Australia/Currie'), ('Australia/Darwin', 'Australia/Darwin'), ('Australia/Eucla', 'Australia/Eucla'), ('Australia/Hobart', 'Australia/Hobart'), ('Australia/Lindeman', 'Australia/Lindeman'), ('Australia/Lord_Howe', 'Australia/Lord_Howe'), ('Australia/Melbourne', 'Australia/Melbourne'), ('Australia/Perth', 'Australia/Perth'), ('Australia/Sydney', 'Australia/Sydney'), ('Canada/Atlantic', 'Canada/Atlantic'), ('Canada/Central', 'Canada/Central'), ('Canada/Eastern', 'Canada/Eastern'), ('Canada/Mountain', 'Canada/Mountain'), ('Canada/Newfoundland', 'Canada/Newfoundland'), ('Canada/Pacific', 'Canada/Pacific'), ('Europe/Amsterdam', 'Europe/Amsterdam'), ('Europe/Andorra', 'Europe/Andorra'), ('Europe/Astrakhan', 'Europe/Astrakhan'), ('Europe/Athens', 'Europe/Athens'), ('Europe/Belgrade', 'Europe/Belgrade'), ('Europe/Berlin', 'Europe/Berlin'), ('Europe/Bratislava', 'Europe/Bratislava'), ('Europe/Brussels', 'Europe/Brussels'), ('Europe/Bucharest', 'Europe/Bucharest'), ('Europe/Budapest', 'Europe/Budapest'), ('Europe/Busingen', 'Europe/Busingen'), ('Europe/Chisinau', 'Europe/Chisinau'), ('Europe/Copenhagen', 'Europe/Copenhagen'), ('Europe/Dublin', 'Europe/Dublin'), ('Europe/Gibraltar', 'Europe/Gibraltar'), ('Europe/Guernsey', 'Europe/Guernsey'), ('Europe/Helsinki', 'Europe/Helsinki'), ('Europe/Isle_of_Man', 'Europe/Isle_of_Man'), ('Europe/Istanbul', 'Europe/Istanbul'), ('Europe/Jersey', 'Europe/Jersey'), ('Europe/Kaliningrad', 'Europe/Kaliningrad'), ('Europe/Kiev', 'Europe/Kiev'), ('Europe/Kirov', 'Europe/Kirov'), ('Europe/Lisbon', 'Europe/Lisbon'), ('Europe/Ljubljana', 'Europe/Ljubljana'), ('Europe/London', 'Europe/London'), ('Europe/Luxembourg', 'Europe/Luxembourg'), ('Europe/Madrid', 'Europe/Madrid'), ('Europe/Malta', 'Europe/Malta'), ('Europe/Mariehamn', 'Europe/Mariehamn'), ('Europe/Minsk', 'Europe/Minsk'), ('Europe/Monaco', 'Europe/Monaco'), ('Europe/Moscow', 'Europe/Moscow'), ('Europe/Oslo', 'Europe/Oslo'), ('Europe/Paris', 'Europe/Paris'), ('Europe/Podgorica', 'Europe/Podgorica'), ('Europe/Prague', 'Europe/Prague'), ('Europe/Riga', 'Europe/Riga'), ('Europe/Rome', 'Europe/Rome'), ('Europe/Samara', 'Europe/Samara'), ('Europe/San_Marino', 'Europe/San_Marino'), ('Europe/Sarajevo', 'Europe/Sarajevo'), ('Europe/Saratov', 'Europe/Saratov'), ('Europe/Simferopol', 'Europe/Simferopol'), ('Europe/Skopje', 'Europe/Skopje'), ('Europe/Sofia', 'Europe/Sofia'), ('Europe/Stockholm', 'Europe/Stockholm'), ('Europe/Tallinn', 'Europe/Tallinn'), ('Europe/Tirane', 'Europe/Tirane'), ('Europe/Ulyanovsk', 'Europe/Ulyanovsk'), ('Europe/Uzhgorod', 'Europe/Uzhgorod'), ('Europe/Vaduz', 'Europe/Vaduz'), ('Europe/Vatican', 'Europe/Vatican'), ('Europe/Vienna', 'Europe/Vienna'), ('Europe/Vilnius', 'Europe/Vilnius'), ('Europe/Volgograd', 'Europe/Volgograd'), ('Europe/Warsaw', 'Europe/Warsaw'), ('Europe/Zagreb', 'Europe/Zagreb'), ('Europe/Zaporozhye', 'Europe/Zaporozhye'), ('Europe/Zurich', 'Europe/Zurich'), ('GMT', 'GMT'), ('Indian/Antananarivo', 'Indian/Antananarivo'), ('Indian/Chagos', 'Indian/Chagos'), ('Indian/Christmas', 'Indian/Christmas'), ('Indian/Cocos', 'Indian/Cocos'), ('Indian/Comoro', 'Indian/Comoro'), ('Indian/Kerguelen', 'Indian/Kerguelen'), ('Indian/Mahe', 'Indian/Mahe'), ('Indian/Maldives', 'Indian/Maldives'), ('Indian/Mauritius', 'Indian/Mauritius'), ('Indian/Mayotte', 'Indian/Mayotte'), ('Indian/Reunion', 'Indian/Reunion'), ('Pacific/Apia', 'Pacific/Apia'), ('Pacific/Auckland', 'Pacific/Auckland'), ('Pacific/Bougainville', 'Pacific/Bougainville'), ('Pacific/Chatham', 'Pacific/Chatham'), ('Pacific/Chuuk', 'Pacific/Chuuk'), ('Pacific/Easter', 'Pacific/Easter'), ('Pacific/Efate', 'Pacific/Efate'), ('Pacific/Enderbury', 'Pacific/Enderbury'), ('Pacific/Fakaofo', 'Pacific/Fakaofo'), ('Pacific/Fiji', 'Pacific/Fiji'), ('Pacific/Funafuti', 'Pacific/Funafuti'), ('Pacific/Galapagos', 'Pacific/Galapagos'), ('Pacific/Gambier', 'Pacific/Gambier'), ('Pacific/Guadalcanal', 'Pacific/Guadalcanal'), ('Pacific/Guam', 'Pacific/Guam'), ('Pacific/Honolulu', 'Pacific/Honolulu'), ('Pacific/Kiritimati', 'Pacific/Kiritimati'), ('Pacific/Kosrae', 'Pacific/Kosrae'), ('Pacific/Kwajalein', 'Pacific/Kwajalein'), ('Pacific/Majuro', 'Pacific/Majuro'), ('Pacific/Marquesas', 'Pacific/Marquesas'), ('Pacific/Midway', 'Pacific/Midway'), ('Pacific/Nauru', 'Pacific/Nauru'), ('Pacific/Niue', 'Pacific/Niue'), ('Pacific/Norfolk', 'Pacific/Norfolk'), ('Pacific/Noumea', 'Pacific/Noumea'), ('Pacific/Pago_Pago', 'Pacific/Pago_Pago'), ('Pacific/Palau', 'Pacific/Palau'), ('Pacific/Pitcairn', 'Pacific/Pitcairn'), ('Pacific/Pohnpei', 'Pacific/Pohnpei'), ('Pacific/Port_Moresby', 'Pacific/Port_Moresby'), ('Pacific/Rarotonga', 'Pacific/Rarotonga'), ('Pacific/Saipan', 'Pacific/Saipan'), ('Pacific/Tahiti', 'Pacific/Tahiti'), ('Pacific/Tarawa', 'Pacific/Tarawa'), ('Pacific/Tongatapu', 'Pacific/Tongatapu'), ('Pacific/Wake', 'Pacific/Wake'), ('Pacific/Wallis', 'Pacific/Wallis'), ('US/Alaska', 'US/Alaska'), ('US/Arizona', 'US/Arizona'), ('US/Central', 'US/Central'), ('US/Eastern', 'US/Eastern'), ('US/Hawaii', 'US/Hawaii'), ('US/Mountain', 'US/Mountain'), ('US/Pacific', 'US/Pacific'), ('UTC', 'UTC')], default='UTC', max_length=100, verbose_name='Default Time Zone')), + ('showfavoritechartnotes', models.BooleanField(default=True, verbose_name='Show Notes for Favorite Charts')), + ('coachinggroups', models.ManyToManyField(related_name='coaches', to='rowers.CoachingGroup')), + ('friends', models.ManyToManyField(blank=True, related_name='_rower_friends_+', to='rowers.Rower')), + ('mycoachgroup', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='coachingrole', to='rowers.CoachingGroup')), + ('paidplan', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rowers.PaidPlan')), + ], + ), + migrations.CreateModel( + name='SiteAnnouncement', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateField(default=rowers.models.current_day)), + ('announcement', models.TextField(max_length=280)), + ('expires', models.DateField(default=rowers.models.current_day)), + ('modified', models.DateField(default=rowers.models.current_day)), + ('dotweet', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='Team', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=150, unique=True, verbose_name='Team Name')), + ('notes', models.CharField(blank=True, max_length=200, verbose_name='Team Purpose')), + ('private', models.CharField(choices=[('private', 'private'), ('open', 'open')], default='open', max_length=30, verbose_name='Team Type')), + ('viewing', models.CharField(choices=[('coachonly', 'Coach Only'), ('allmembers', 'All Members')], default='allmembers', max_length=30, verbose_name='Sharing Behavior')), + ('manager', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='TrainingMacroCycle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150)), + ('startdate', models.DateField(default=rowers.models.current_day)), + ('enddate', models.DateField(default=rowers.models.half_year_from_now)), + ('notes', models.TextField(blank=True, max_length=300)), + ('type', models.CharField(choices=[('filler', 'System Defined'), ('userdefined', 'User Defined')], default='filler', max_length=150)), + ('plantime', models.IntegerField(default=0, verbose_name='Planned Duration')), + ('plandistance', models.IntegerField(default=0, verbose_name='Planned Distance')), + ('planrscore', models.IntegerField(default=0, verbose_name='Planned rScore')), + ('plantrimp', models.IntegerField(default=0, verbose_name='Planned TRIMP')), + ('actualtime', models.IntegerField(default=0, verbose_name='Actual Duration')), + ('actualdistance', models.IntegerField(default=0, verbose_name='Actual Distance')), + ('actualrscore', models.IntegerField(default=0, verbose_name='Actual rScore')), + ('actualtrimp', models.IntegerField(default=0, verbose_name='Actual TRIMP')), + ], + ), + migrations.CreateModel( + name='TrainingMesoCycle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150)), + ('startdate', models.DateField(default=rowers.models.current_day)), + ('enddate', models.DateField(default=rowers.models.half_year_from_now)), + ('notes', models.TextField(blank=True, max_length=300)), + ('type', models.CharField(choices=[('filler', 'System Defined'), ('userdefined', 'User Defined')], default='filler', max_length=150)), + ('plantime', models.IntegerField(default=0, verbose_name='Planned Duration')), + ('plandistance', models.IntegerField(default=0, verbose_name='Planned Distance')), + ('planrscore', models.IntegerField(default=0, verbose_name='Planned rScore')), + ('plantrimp', models.IntegerField(default=0, verbose_name='Planned TRIMP')), + ('actualtime', models.IntegerField(default=0, verbose_name='Actual Duration')), + ('actualdistance', models.IntegerField(default=0, verbose_name='Actual Distance')), + ('actualrscore', models.IntegerField(default=0, verbose_name='Actual rScore')), + ('actualtrimp', models.IntegerField(default=0, verbose_name='Actual TRIMP')), + ('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.TrainingMacroCycle')), ], ), migrations.CreateModel( name='Workout', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), + ('name', models.CharField(blank=True, max_length=150, null=True)), ('date', models.DateField()), - ('type', models.CharField(choices=[('OTW', 'On-water'), ('OTE', 'Indoor Rower')], max_length=30)), + ('workouttype', models.CharField(choices=[('water', 'Standard Racing Shell'), ('rower', 'Indoor Rower'), ('skierg', 'Ski Erg'), ('bike', 'Bike Erg'), ('dynamic', 'Dynamic Indoor Rower'), ('slides', 'Indoor Rower on Slides'), ('paddle', 'Paddle Adapter'), ('snow', 'On-snow'), ('coastal', 'Coastal'), ('c-boat', 'Dutch C boat'), ('churchboat', 'Finnish Church boat'), ('Ride', 'Ride'), ('Run', 'Run'), ('NordicSki', 'NordicSki'), ('Swim', 'Swim'), ('Hike', 'Hike'), ('Walk', 'Walk'), ('Canoeing', 'Canoeing'), ('Crossfit', 'Crossfit'), ('StandUpPaddling', 'StandUpPaddling'), ('IceSkate', 'IceSkate'), ('WeightTraining', 'WeightTraining'), ('InlineSkate', 'InlineSkate'), ('Kayaking', 'Kayaking'), ('Workout', 'Workout'), ('other', 'Other')], max_length=50, verbose_name='Exercise/Boat Class')), + ('workoutsource', models.CharField(default='unknown', max_length=100)), + ('boattype', models.CharField(choices=[('1x', '1x (single)'), ('2x', '2x (double)'), ('2x+', '2x+ (coxed double)'), ('2-', '2- (pair)'), ('2+', '2+ (coxed pair)'), ('3x+', '3x+ (coxed triple)'), ('3x-', '3x- (triple)'), ('4x', '4x (quad)'), ('4x+', '4x+ (coxed quad)'), ('4-', '4- (four)'), ('4+', '4+ (coxed four)'), ('8+', '8+ (eight)'), ('8x+', '8x+ (octuple scull)')], default='1x', max_length=50, verbose_name='Boat Type')), + ('adaptiveclass', models.CharField(choices=[('None', 'None'), ('PR1', 'PR1 (Arms and Shoulders)'), ('PR2', 'PR2 (Trunk and Arms)'), ('PR3', 'PR3 (Leg Trunk and Arms)'), ('FES', 'FES (Functional Electrical Stimulation)')], default='None', max_length=50, verbose_name='Adaptive Classification')), + ('starttime', models.TimeField(blank=True, null=True)), + ('startdatetime', models.DateTimeField(blank=True, null=True)), + ('timezone', models.CharField(default='UTC', max_length=100)), + ('distance', models.IntegerField(blank=True, default=0)), + ('duration', models.TimeField(blank=True, default=1)), + ('dragfactor', models.IntegerField(blank=True, default=0)), + ('trimp', models.IntegerField(blank=True, default=-1)), + ('rscore', models.IntegerField(blank=True, default=-1)), + ('hrtss', models.IntegerField(blank=True, default=-1)), + ('normp', models.IntegerField(blank=True, default=-1)), + ('normv', models.FloatField(blank=True, default=-1)), + ('normw', models.FloatField(blank=True, default=-1)), + ('weightcategory', models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=10, verbose_name='Weight Category')), + ('weightvalue', models.FloatField(blank=True, default=80.0, verbose_name='Average Crew Weight (kg)')), + ('csvfilename', models.CharField(blank=True, max_length=150)), + ('uploadedtoc2', models.IntegerField(default=0)), + ('averagehr', models.IntegerField(blank=True, null=True)), + ('maxhr', models.BigIntegerField(blank=True, null=True)), + ('uploadedtostrava', models.BigIntegerField(default=0)), + ('uploadedtosporttracks', models.BigIntegerField(default=0)), + ('uploadedtounderarmour', models.BigIntegerField(default=0)), + ('uploadedtotp', models.BigIntegerField(default=0)), + ('uploadedtorunkeeper', models.BigIntegerField(default=0)), + ('forceunit', models.CharField(choices=[('lbs', 'lbs'), ('N', 'N')], default='lbs', max_length=100)), + ('inboard', models.FloatField(default=0.88)), + ('oarlength', models.FloatField(default=2.89)), + ('notes', models.CharField(blank=True, max_length=1000, null=True)), + ('summary', models.TextField(blank=True)), + ('privacy', models.CharField(choices=[('private', 'Private'), ('visible', 'Visible')], default='visible', max_length=30)), + ('rankingpiece', models.BooleanField(default=False, verbose_name='Ranking Piece')), + ('duplicate', models.BooleanField(default=False, verbose_name='Duplicate Workout')), + ('plannedsession', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rowers.PlannedSession', verbose_name='Session')), + ('team', models.ManyToManyField(blank=True, to='rowers.Team')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Rower')), ], ), + migrations.CreateModel( + name='VirtualRace', + fields=[ + ('plannedsession_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='rowers.PlannedSession')), + ('registration_form', models.CharField(choices=[('windowstart', 'Start of Race Window'), ('windowend', 'End of Race Window'), ('deadline', 'Evaluation Closure Deadline'), ('manual', 'Manual - select below')], default='windowstart', max_length=100, verbose_name='Registration Closure Quick Selector')), + ('registration_closure', models.DateTimeField(blank=True, null=True)), + ('evaluation_closure', models.DateTimeField(blank=True, null=True)), + ('start_time', models.TimeField(blank=True, null=True)), + ('end_time', models.TimeField(blank=True, null=True)), + ('country', models.CharField(blank=True, max_length=100)), + ('timezone', models.CharField(choices=[('Africa/Abidjan', 'Africa/Abidjan'), ('Africa/Accra', 'Africa/Accra'), ('Africa/Addis_Ababa', 'Africa/Addis_Ababa'), ('Africa/Algiers', 'Africa/Algiers'), ('Africa/Asmara', 'Africa/Asmara'), ('Africa/Bamako', 'Africa/Bamako'), ('Africa/Bangui', 'Africa/Bangui'), ('Africa/Banjul', 'Africa/Banjul'), ('Africa/Bissau', 'Africa/Bissau'), ('Africa/Blantyre', 'Africa/Blantyre'), ('Africa/Brazzaville', 'Africa/Brazzaville'), ('Africa/Bujumbura', 'Africa/Bujumbura'), ('Africa/Cairo', 'Africa/Cairo'), ('Africa/Casablanca', 'Africa/Casablanca'), ('Africa/Ceuta', 'Africa/Ceuta'), ('Africa/Conakry', 'Africa/Conakry'), ('Africa/Dakar', 'Africa/Dakar'), ('Africa/Dar_es_Salaam', 'Africa/Dar_es_Salaam'), ('Africa/Djibouti', 'Africa/Djibouti'), ('Africa/Douala', 'Africa/Douala'), ('Africa/El_Aaiun', 'Africa/El_Aaiun'), ('Africa/Freetown', 'Africa/Freetown'), ('Africa/Gaborone', 'Africa/Gaborone'), ('Africa/Harare', 'Africa/Harare'), ('Africa/Johannesburg', 'Africa/Johannesburg'), ('Africa/Juba', 'Africa/Juba'), ('Africa/Kampala', 'Africa/Kampala'), ('Africa/Khartoum', 'Africa/Khartoum'), ('Africa/Kigali', 'Africa/Kigali'), ('Africa/Kinshasa', 'Africa/Kinshasa'), ('Africa/Lagos', 'Africa/Lagos'), ('Africa/Libreville', 'Africa/Libreville'), ('Africa/Lome', 'Africa/Lome'), ('Africa/Luanda', 'Africa/Luanda'), ('Africa/Lubumbashi', 'Africa/Lubumbashi'), ('Africa/Lusaka', 'Africa/Lusaka'), ('Africa/Malabo', 'Africa/Malabo'), ('Africa/Maputo', 'Africa/Maputo'), ('Africa/Maseru', 'Africa/Maseru'), ('Africa/Mbabane', 'Africa/Mbabane'), ('Africa/Mogadishu', 'Africa/Mogadishu'), ('Africa/Monrovia', 'Africa/Monrovia'), ('Africa/Nairobi', 'Africa/Nairobi'), ('Africa/Ndjamena', 'Africa/Ndjamena'), ('Africa/Niamey', 'Africa/Niamey'), ('Africa/Nouakchott', 'Africa/Nouakchott'), ('Africa/Ouagadougou', 'Africa/Ouagadougou'), ('Africa/Porto-Novo', 'Africa/Porto-Novo'), ('Africa/Sao_Tome', 'Africa/Sao_Tome'), ('Africa/Tripoli', 'Africa/Tripoli'), ('Africa/Tunis', 'Africa/Tunis'), ('Africa/Windhoek', 'Africa/Windhoek'), ('America/Adak', 'America/Adak'), ('America/Anchorage', 'America/Anchorage'), ('America/Anguilla', 'America/Anguilla'), ('America/Antigua', 'America/Antigua'), ('America/Araguaina', 'America/Araguaina'), ('America/Argentina/Buenos_Aires', 'America/Argentina/Buenos_Aires'), ('America/Argentina/Catamarca', 'America/Argentina/Catamarca'), ('America/Argentina/Cordoba', 'America/Argentina/Cordoba'), ('America/Argentina/Jujuy', 'America/Argentina/Jujuy'), ('America/Argentina/La_Rioja', 'America/Argentina/La_Rioja'), ('America/Argentina/Mendoza', 'America/Argentina/Mendoza'), ('America/Argentina/Rio_Gallegos', 'America/Argentina/Rio_Gallegos'), ('America/Argentina/Salta', 'America/Argentina/Salta'), ('America/Argentina/San_Juan', 'America/Argentina/San_Juan'), ('America/Argentina/San_Luis', 'America/Argentina/San_Luis'), ('America/Argentina/Tucuman', 'America/Argentina/Tucuman'), ('America/Argentina/Ushuaia', 'America/Argentina/Ushuaia'), ('America/Aruba', 'America/Aruba'), ('America/Asuncion', 'America/Asuncion'), ('America/Atikokan', 'America/Atikokan'), ('America/Bahia', 'America/Bahia'), ('America/Bahia_Banderas', 'America/Bahia_Banderas'), ('America/Barbados', 'America/Barbados'), ('America/Belem', 'America/Belem'), ('America/Belize', 'America/Belize'), ('America/Blanc-Sablon', 'America/Blanc-Sablon'), ('America/Boa_Vista', 'America/Boa_Vista'), ('America/Bogota', 'America/Bogota'), ('America/Boise', 'America/Boise'), ('America/Cambridge_Bay', 'America/Cambridge_Bay'), ('America/Campo_Grande', 'America/Campo_Grande'), ('America/Cancun', 'America/Cancun'), ('America/Caracas', 'America/Caracas'), ('America/Cayenne', 'America/Cayenne'), ('America/Cayman', 'America/Cayman'), ('America/Chicago', 'America/Chicago'), ('America/Chihuahua', 'America/Chihuahua'), ('America/Costa_Rica', 'America/Costa_Rica'), ('America/Creston', 'America/Creston'), ('America/Cuiaba', 'America/Cuiaba'), ('America/Curacao', 'America/Curacao'), ('America/Danmarkshavn', 'America/Danmarkshavn'), ('America/Dawson', 'America/Dawson'), ('America/Dawson_Creek', 'America/Dawson_Creek'), ('America/Denver', 'America/Denver'), ('America/Detroit', 'America/Detroit'), ('America/Dominica', 'America/Dominica'), ('America/Edmonton', 'America/Edmonton'), ('America/Eirunepe', 'America/Eirunepe'), ('America/El_Salvador', 'America/El_Salvador'), ('America/Fort_Nelson', 'America/Fort_Nelson'), ('America/Fortaleza', 'America/Fortaleza'), ('America/Glace_Bay', 'America/Glace_Bay'), ('America/Godthab', 'America/Godthab'), ('America/Goose_Bay', 'America/Goose_Bay'), ('America/Grand_Turk', 'America/Grand_Turk'), ('America/Grenada', 'America/Grenada'), ('America/Guadeloupe', 'America/Guadeloupe'), ('America/Guatemala', 'America/Guatemala'), ('America/Guayaquil', 'America/Guayaquil'), ('America/Guyana', 'America/Guyana'), ('America/Halifax', 'America/Halifax'), ('America/Havana', 'America/Havana'), ('America/Hermosillo', 'America/Hermosillo'), ('America/Indiana/Indianapolis', 'America/Indiana/Indianapolis'), ('America/Indiana/Knox', 'America/Indiana/Knox'), ('America/Indiana/Marengo', 'America/Indiana/Marengo'), ('America/Indiana/Petersburg', 'America/Indiana/Petersburg'), ('America/Indiana/Tell_City', 'America/Indiana/Tell_City'), ('America/Indiana/Vevay', 'America/Indiana/Vevay'), ('America/Indiana/Vincennes', 'America/Indiana/Vincennes'), ('America/Indiana/Winamac', 'America/Indiana/Winamac'), ('America/Inuvik', 'America/Inuvik'), ('America/Iqaluit', 'America/Iqaluit'), ('America/Jamaica', 'America/Jamaica'), ('America/Juneau', 'America/Juneau'), ('America/Kentucky/Louisville', 'America/Kentucky/Louisville'), ('America/Kentucky/Monticello', 'America/Kentucky/Monticello'), ('America/Kralendijk', 'America/Kralendijk'), ('America/La_Paz', 'America/La_Paz'), ('America/Lima', 'America/Lima'), ('America/Los_Angeles', 'America/Los_Angeles'), ('America/Lower_Princes', 'America/Lower_Princes'), ('America/Maceio', 'America/Maceio'), ('America/Managua', 'America/Managua'), ('America/Manaus', 'America/Manaus'), ('America/Marigot', 'America/Marigot'), ('America/Martinique', 'America/Martinique'), ('America/Matamoros', 'America/Matamoros'), ('America/Mazatlan', 'America/Mazatlan'), ('America/Menominee', 'America/Menominee'), ('America/Merida', 'America/Merida'), ('America/Metlakatla', 'America/Metlakatla'), ('America/Mexico_City', 'America/Mexico_City'), ('America/Miquelon', 'America/Miquelon'), ('America/Moncton', 'America/Moncton'), ('America/Monterrey', 'America/Monterrey'), ('America/Montevideo', 'America/Montevideo'), ('America/Montserrat', 'America/Montserrat'), ('America/Nassau', 'America/Nassau'), ('America/New_York', 'America/New_York'), ('America/Nipigon', 'America/Nipigon'), ('America/Nome', 'America/Nome'), ('America/Noronha', 'America/Noronha'), ('America/North_Dakota/Beulah', 'America/North_Dakota/Beulah'), ('America/North_Dakota/Center', 'America/North_Dakota/Center'), ('America/North_Dakota/New_Salem', 'America/North_Dakota/New_Salem'), ('America/Ojinaga', 'America/Ojinaga'), ('America/Panama', 'America/Panama'), ('America/Pangnirtung', 'America/Pangnirtung'), ('America/Paramaribo', 'America/Paramaribo'), ('America/Phoenix', 'America/Phoenix'), ('America/Port-au-Prince', 'America/Port-au-Prince'), ('America/Port_of_Spain', 'America/Port_of_Spain'), ('America/Porto_Velho', 'America/Porto_Velho'), ('America/Puerto_Rico', 'America/Puerto_Rico'), ('America/Punta_Arenas', 'America/Punta_Arenas'), ('America/Rainy_River', 'America/Rainy_River'), ('America/Rankin_Inlet', 'America/Rankin_Inlet'), ('America/Recife', 'America/Recife'), ('America/Regina', 'America/Regina'), ('America/Resolute', 'America/Resolute'), ('America/Rio_Branco', 'America/Rio_Branco'), ('America/Santarem', 'America/Santarem'), ('America/Santiago', 'America/Santiago'), ('America/Santo_Domingo', 'America/Santo_Domingo'), ('America/Sao_Paulo', 'America/Sao_Paulo'), ('America/Scoresbysund', 'America/Scoresbysund'), ('America/Sitka', 'America/Sitka'), ('America/St_Barthelemy', 'America/St_Barthelemy'), ('America/St_Johns', 'America/St_Johns'), ('America/St_Kitts', 'America/St_Kitts'), ('America/St_Lucia', 'America/St_Lucia'), ('America/St_Thomas', 'America/St_Thomas'), ('America/St_Vincent', 'America/St_Vincent'), ('America/Swift_Current', 'America/Swift_Current'), ('America/Tegucigalpa', 'America/Tegucigalpa'), ('America/Thule', 'America/Thule'), ('America/Thunder_Bay', 'America/Thunder_Bay'), ('America/Tijuana', 'America/Tijuana'), ('America/Toronto', 'America/Toronto'), ('America/Tortola', 'America/Tortola'), ('America/Vancouver', 'America/Vancouver'), ('America/Whitehorse', 'America/Whitehorse'), ('America/Winnipeg', 'America/Winnipeg'), ('America/Yakutat', 'America/Yakutat'), ('America/Yellowknife', 'America/Yellowknife'), ('Antarctica/Casey', 'Antarctica/Casey'), ('Antarctica/Davis', 'Antarctica/Davis'), ('Antarctica/DumontDUrville', 'Antarctica/DumontDUrville'), ('Antarctica/Macquarie', 'Antarctica/Macquarie'), ('Antarctica/Mawson', 'Antarctica/Mawson'), ('Antarctica/McMurdo', 'Antarctica/McMurdo'), ('Antarctica/Palmer', 'Antarctica/Palmer'), ('Antarctica/Rothera', 'Antarctica/Rothera'), ('Antarctica/Syowa', 'Antarctica/Syowa'), ('Antarctica/Troll', 'Antarctica/Troll'), ('Antarctica/Vostok', 'Antarctica/Vostok'), ('Arctic/Longyearbyen', 'Arctic/Longyearbyen'), ('Asia/Aden', 'Asia/Aden'), ('Asia/Almaty', 'Asia/Almaty'), ('Asia/Amman', 'Asia/Amman'), ('Asia/Anadyr', 'Asia/Anadyr'), ('Asia/Aqtau', 'Asia/Aqtau'), ('Asia/Aqtobe', 'Asia/Aqtobe'), ('Asia/Ashgabat', 'Asia/Ashgabat'), ('Asia/Atyrau', 'Asia/Atyrau'), ('Asia/Baghdad', 'Asia/Baghdad'), ('Asia/Bahrain', 'Asia/Bahrain'), ('Asia/Baku', 'Asia/Baku'), ('Asia/Bangkok', 'Asia/Bangkok'), ('Asia/Barnaul', 'Asia/Barnaul'), ('Asia/Beirut', 'Asia/Beirut'), ('Asia/Bishkek', 'Asia/Bishkek'), ('Asia/Brunei', 'Asia/Brunei'), ('Asia/Chita', 'Asia/Chita'), ('Asia/Choibalsan', 'Asia/Choibalsan'), ('Asia/Colombo', 'Asia/Colombo'), ('Asia/Damascus', 'Asia/Damascus'), ('Asia/Dhaka', 'Asia/Dhaka'), ('Asia/Dili', 'Asia/Dili'), ('Asia/Dubai', 'Asia/Dubai'), ('Asia/Dushanbe', 'Asia/Dushanbe'), ('Asia/Famagusta', 'Asia/Famagusta'), ('Asia/Gaza', 'Asia/Gaza'), ('Asia/Hebron', 'Asia/Hebron'), ('Asia/Ho_Chi_Minh', 'Asia/Ho_Chi_Minh'), ('Asia/Hong_Kong', 'Asia/Hong_Kong'), ('Asia/Hovd', 'Asia/Hovd'), ('Asia/Irkutsk', 'Asia/Irkutsk'), ('Asia/Jakarta', 'Asia/Jakarta'), ('Asia/Jayapura', 'Asia/Jayapura'), ('Asia/Jerusalem', 'Asia/Jerusalem'), ('Asia/Kabul', 'Asia/Kabul'), ('Asia/Kamchatka', 'Asia/Kamchatka'), ('Asia/Karachi', 'Asia/Karachi'), ('Asia/Kathmandu', 'Asia/Kathmandu'), ('Asia/Khandyga', 'Asia/Khandyga'), ('Asia/Kolkata', 'Asia/Kolkata'), ('Asia/Krasnoyarsk', 'Asia/Krasnoyarsk'), ('Asia/Kuala_Lumpur', 'Asia/Kuala_Lumpur'), ('Asia/Kuching', 'Asia/Kuching'), ('Asia/Kuwait', 'Asia/Kuwait'), ('Asia/Macau', 'Asia/Macau'), ('Asia/Magadan', 'Asia/Magadan'), ('Asia/Makassar', 'Asia/Makassar'), ('Asia/Manila', 'Asia/Manila'), ('Asia/Muscat', 'Asia/Muscat'), ('Asia/Nicosia', 'Asia/Nicosia'), ('Asia/Novokuznetsk', 'Asia/Novokuznetsk'), ('Asia/Novosibirsk', 'Asia/Novosibirsk'), ('Asia/Omsk', 'Asia/Omsk'), ('Asia/Oral', 'Asia/Oral'), ('Asia/Phnom_Penh', 'Asia/Phnom_Penh'), ('Asia/Pontianak', 'Asia/Pontianak'), ('Asia/Pyongyang', 'Asia/Pyongyang'), ('Asia/Qatar', 'Asia/Qatar'), ('Asia/Qostanay', 'Asia/Qostanay'), ('Asia/Qyzylorda', 'Asia/Qyzylorda'), ('Asia/Riyadh', 'Asia/Riyadh'), ('Asia/Sakhalin', 'Asia/Sakhalin'), ('Asia/Samarkand', 'Asia/Samarkand'), ('Asia/Seoul', 'Asia/Seoul'), ('Asia/Shanghai', 'Asia/Shanghai'), ('Asia/Singapore', 'Asia/Singapore'), ('Asia/Srednekolymsk', 'Asia/Srednekolymsk'), ('Asia/Taipei', 'Asia/Taipei'), ('Asia/Tashkent', 'Asia/Tashkent'), ('Asia/Tbilisi', 'Asia/Tbilisi'), ('Asia/Tehran', 'Asia/Tehran'), ('Asia/Thimphu', 'Asia/Thimphu'), ('Asia/Tokyo', 'Asia/Tokyo'), ('Asia/Tomsk', 'Asia/Tomsk'), ('Asia/Ulaanbaatar', 'Asia/Ulaanbaatar'), ('Asia/Urumqi', 'Asia/Urumqi'), ('Asia/Ust-Nera', 'Asia/Ust-Nera'), ('Asia/Vientiane', 'Asia/Vientiane'), ('Asia/Vladivostok', 'Asia/Vladivostok'), ('Asia/Yakutsk', 'Asia/Yakutsk'), ('Asia/Yangon', 'Asia/Yangon'), ('Asia/Yekaterinburg', 'Asia/Yekaterinburg'), ('Asia/Yerevan', 'Asia/Yerevan'), ('Atlantic/Azores', 'Atlantic/Azores'), ('Atlantic/Bermuda', 'Atlantic/Bermuda'), ('Atlantic/Canary', 'Atlantic/Canary'), ('Atlantic/Cape_Verde', 'Atlantic/Cape_Verde'), ('Atlantic/Faroe', 'Atlantic/Faroe'), ('Atlantic/Madeira', 'Atlantic/Madeira'), ('Atlantic/Reykjavik', 'Atlantic/Reykjavik'), ('Atlantic/South_Georgia', 'Atlantic/South_Georgia'), ('Atlantic/St_Helena', 'Atlantic/St_Helena'), ('Atlantic/Stanley', 'Atlantic/Stanley'), ('Australia/Adelaide', 'Australia/Adelaide'), ('Australia/Brisbane', 'Australia/Brisbane'), ('Australia/Broken_Hill', 'Australia/Broken_Hill'), ('Australia/Currie', 'Australia/Currie'), ('Australia/Darwin', 'Australia/Darwin'), ('Australia/Eucla', 'Australia/Eucla'), ('Australia/Hobart', 'Australia/Hobart'), ('Australia/Lindeman', 'Australia/Lindeman'), ('Australia/Lord_Howe', 'Australia/Lord_Howe'), ('Australia/Melbourne', 'Australia/Melbourne'), ('Australia/Perth', 'Australia/Perth'), ('Australia/Sydney', 'Australia/Sydney'), ('Canada/Atlantic', 'Canada/Atlantic'), ('Canada/Central', 'Canada/Central'), ('Canada/Eastern', 'Canada/Eastern'), ('Canada/Mountain', 'Canada/Mountain'), ('Canada/Newfoundland', 'Canada/Newfoundland'), ('Canada/Pacific', 'Canada/Pacific'), ('Europe/Amsterdam', 'Europe/Amsterdam'), ('Europe/Andorra', 'Europe/Andorra'), ('Europe/Astrakhan', 'Europe/Astrakhan'), ('Europe/Athens', 'Europe/Athens'), ('Europe/Belgrade', 'Europe/Belgrade'), ('Europe/Berlin', 'Europe/Berlin'), ('Europe/Bratislava', 'Europe/Bratislava'), ('Europe/Brussels', 'Europe/Brussels'), ('Europe/Bucharest', 'Europe/Bucharest'), ('Europe/Budapest', 'Europe/Budapest'), ('Europe/Busingen', 'Europe/Busingen'), ('Europe/Chisinau', 'Europe/Chisinau'), ('Europe/Copenhagen', 'Europe/Copenhagen'), ('Europe/Dublin', 'Europe/Dublin'), ('Europe/Gibraltar', 'Europe/Gibraltar'), ('Europe/Guernsey', 'Europe/Guernsey'), ('Europe/Helsinki', 'Europe/Helsinki'), ('Europe/Isle_of_Man', 'Europe/Isle_of_Man'), ('Europe/Istanbul', 'Europe/Istanbul'), ('Europe/Jersey', 'Europe/Jersey'), ('Europe/Kaliningrad', 'Europe/Kaliningrad'), ('Europe/Kiev', 'Europe/Kiev'), ('Europe/Kirov', 'Europe/Kirov'), ('Europe/Lisbon', 'Europe/Lisbon'), ('Europe/Ljubljana', 'Europe/Ljubljana'), ('Europe/London', 'Europe/London'), ('Europe/Luxembourg', 'Europe/Luxembourg'), ('Europe/Madrid', 'Europe/Madrid'), ('Europe/Malta', 'Europe/Malta'), ('Europe/Mariehamn', 'Europe/Mariehamn'), ('Europe/Minsk', 'Europe/Minsk'), ('Europe/Monaco', 'Europe/Monaco'), ('Europe/Moscow', 'Europe/Moscow'), ('Europe/Oslo', 'Europe/Oslo'), ('Europe/Paris', 'Europe/Paris'), ('Europe/Podgorica', 'Europe/Podgorica'), ('Europe/Prague', 'Europe/Prague'), ('Europe/Riga', 'Europe/Riga'), ('Europe/Rome', 'Europe/Rome'), ('Europe/Samara', 'Europe/Samara'), ('Europe/San_Marino', 'Europe/San_Marino'), ('Europe/Sarajevo', 'Europe/Sarajevo'), ('Europe/Saratov', 'Europe/Saratov'), ('Europe/Simferopol', 'Europe/Simferopol'), ('Europe/Skopje', 'Europe/Skopje'), ('Europe/Sofia', 'Europe/Sofia'), ('Europe/Stockholm', 'Europe/Stockholm'), ('Europe/Tallinn', 'Europe/Tallinn'), ('Europe/Tirane', 'Europe/Tirane'), ('Europe/Ulyanovsk', 'Europe/Ulyanovsk'), ('Europe/Uzhgorod', 'Europe/Uzhgorod'), ('Europe/Vaduz', 'Europe/Vaduz'), ('Europe/Vatican', 'Europe/Vatican'), ('Europe/Vienna', 'Europe/Vienna'), ('Europe/Vilnius', 'Europe/Vilnius'), ('Europe/Volgograd', 'Europe/Volgograd'), ('Europe/Warsaw', 'Europe/Warsaw'), ('Europe/Zagreb', 'Europe/Zagreb'), ('Europe/Zaporozhye', 'Europe/Zaporozhye'), ('Europe/Zurich', 'Europe/Zurich'), ('GMT', 'GMT'), ('Indian/Antananarivo', 'Indian/Antananarivo'), ('Indian/Chagos', 'Indian/Chagos'), ('Indian/Christmas', 'Indian/Christmas'), ('Indian/Cocos', 'Indian/Cocos'), ('Indian/Comoro', 'Indian/Comoro'), ('Indian/Kerguelen', 'Indian/Kerguelen'), ('Indian/Mahe', 'Indian/Mahe'), ('Indian/Maldives', 'Indian/Maldives'), ('Indian/Mauritius', 'Indian/Mauritius'), ('Indian/Mayotte', 'Indian/Mayotte'), ('Indian/Reunion', 'Indian/Reunion'), ('Pacific/Apia', 'Pacific/Apia'), ('Pacific/Auckland', 'Pacific/Auckland'), ('Pacific/Bougainville', 'Pacific/Bougainville'), ('Pacific/Chatham', 'Pacific/Chatham'), ('Pacific/Chuuk', 'Pacific/Chuuk'), ('Pacific/Easter', 'Pacific/Easter'), ('Pacific/Efate', 'Pacific/Efate'), ('Pacific/Enderbury', 'Pacific/Enderbury'), ('Pacific/Fakaofo', 'Pacific/Fakaofo'), ('Pacific/Fiji', 'Pacific/Fiji'), ('Pacific/Funafuti', 'Pacific/Funafuti'), ('Pacific/Galapagos', 'Pacific/Galapagos'), ('Pacific/Gambier', 'Pacific/Gambier'), ('Pacific/Guadalcanal', 'Pacific/Guadalcanal'), ('Pacific/Guam', 'Pacific/Guam'), ('Pacific/Honolulu', 'Pacific/Honolulu'), ('Pacific/Kiritimati', 'Pacific/Kiritimati'), ('Pacific/Kosrae', 'Pacific/Kosrae'), ('Pacific/Kwajalein', 'Pacific/Kwajalein'), ('Pacific/Majuro', 'Pacific/Majuro'), ('Pacific/Marquesas', 'Pacific/Marquesas'), ('Pacific/Midway', 'Pacific/Midway'), ('Pacific/Nauru', 'Pacific/Nauru'), ('Pacific/Niue', 'Pacific/Niue'), ('Pacific/Norfolk', 'Pacific/Norfolk'), ('Pacific/Noumea', 'Pacific/Noumea'), ('Pacific/Pago_Pago', 'Pacific/Pago_Pago'), ('Pacific/Palau', 'Pacific/Palau'), ('Pacific/Pitcairn', 'Pacific/Pitcairn'), ('Pacific/Pohnpei', 'Pacific/Pohnpei'), ('Pacific/Port_Moresby', 'Pacific/Port_Moresby'), ('Pacific/Rarotonga', 'Pacific/Rarotonga'), ('Pacific/Saipan', 'Pacific/Saipan'), ('Pacific/Tahiti', 'Pacific/Tahiti'), ('Pacific/Tarawa', 'Pacific/Tarawa'), ('Pacific/Tongatapu', 'Pacific/Tongatapu'), ('Pacific/Wake', 'Pacific/Wake'), ('Pacific/Wallis', 'Pacific/Wallis'), ('US/Alaska', 'US/Alaska'), ('US/Arizona', 'US/Arizona'), ('US/Central', 'US/Central'), ('US/Eastern', 'US/Eastern'), ('US/Hawaii', 'US/Hawaii'), ('US/Mountain', 'US/Mountain'), ('US/Pacific', 'US/Pacific'), ('UTC', 'UTC')], default='UTC', max_length=100)), + ('contact_phone', models.CharField(blank=True, max_length=17, validators=[django.core.validators.RegexValidator(message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.", regex='^\\+?1?\\d{9,15}$')])), + ('contact_email', models.EmailField(blank=True, max_length=254, validators=[django.core.validators.EmailValidator()])), + ], + bases=('rowers.plannedsession',), + ), + migrations.CreateModel( + name='WorkoutComment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('comment', models.TextField(max_length=300)), + ('created', models.DateTimeField(default=django.utils.timezone.now)), + ('read', models.BooleanField(default=False)), + ('notification', models.BooleanField(default=True, verbose_name='Subscribe to new comment notifications')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ('workout', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Workout')), + ], + ), + migrations.CreateModel( + name='TrainingTarget', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150)), + ('date', models.DateField(default=rowers.models.half_year_from_now)), + ('notes', models.TextField(blank=True, max_length=300)), + ('manager', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='targetmanager', to='rowers.Rower')), + ('rowers', models.ManyToManyField(related_name='targetathletes', to='rowers.Rower', verbose_name='Athletes')), + ], + ), + migrations.CreateModel( + name='TrainingPlan', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150)), + ('status', models.BooleanField(default=True, verbose_name='Active')), + ('startdate', models.DateField(default=rowers.models.current_day)), + ('enddate', models.DateField(default=rowers.models.half_year_from_now)), + ('manager', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='planmanager', to='rowers.Rower')), + ('rowers', models.ManyToManyField(related_name='planathletes', to='rowers.Rower', verbose_name='Athletes')), + ('target', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rowers.TrainingTarget')), + ], + ), + migrations.CreateModel( + name='TrainingMicroCycle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150)), + ('startdate', models.DateField(default=rowers.models.current_day)), + ('enddate', models.DateField(default=rowers.models.half_year_from_now)), + ('notes', models.TextField(blank=True, max_length=300)), + ('type', models.CharField(choices=[('filler', 'System Defined'), ('userdefined', 'User Defined')], default='filler', max_length=150)), + ('plantime', models.IntegerField(default=0, verbose_name='Planned Duration')), + ('plandistance', models.IntegerField(default=0, verbose_name='Planned Distance')), + ('planrscore', models.IntegerField(default=0, verbose_name='Planned rScore')), + ('plantrimp', models.IntegerField(default=0, verbose_name='Planned TRIMP')), + ('actualtime', models.IntegerField(default=0, verbose_name='Actual Duration')), + ('actualdistance', models.IntegerField(default=0, verbose_name='Actual Distance')), + ('actualrscore', models.IntegerField(default=0, verbose_name='Actual rScore')), + ('actualtrimp', models.IntegerField(default=0, verbose_name='Actual TRIMP')), + ('plan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.TrainingMesoCycle')), + ], + ), + migrations.AddField( + model_name='trainingmacrocycle', + name='plan', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.TrainingPlan'), + ), + migrations.CreateModel( + name='TombStone', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('uploadedtoc2', models.IntegerField(default=0)), + ('uploadedtostrava', models.BigIntegerField(default=0)), + ('uploadedtosporttracks', models.BigIntegerField(default=0)), + ('uploadedtounderarmour', models.BigIntegerField(default=0)), + ('uploadedtotp', models.BigIntegerField(default=0)), + ('uploadedtorunkeeper', models.BigIntegerField(default=0)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Rower')), + ], + ), + migrations.CreateModel( + name='TeamRequest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('issuedate', models.DateField(default=rowers.models.current_day)), + ('code', models.CharField(max_length=150, unique=True)), + ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Team')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='TeamInvite', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('issuedate', models.DateField(default=rowers.models.current_day)), + ('code', models.CharField(max_length=150, unique=True)), + ('email', models.CharField(blank=True, max_length=150, null=True)), + ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Team')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='StrokeData', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('workoutid', models.IntegerField(null=True)), + ('workoutstate', models.IntegerField(default=1, null=True)), + ('ftime', models.CharField(max_length=30)), + ('fpace', models.CharField(max_length=30)), + ('hr_ut2', models.IntegerField(null=True)), + ('hr_ut1', models.IntegerField(null=True)), + ('hr_at', models.IntegerField(null=True)), + ('hr_tr', models.IntegerField(null=True)), + ('hr_an', models.IntegerField(null=True)), + ('hr_max', models.IntegerField(null=True)), + ('hr_bottom', models.IntegerField(null=True)), + ('x_right', models.FloatField(null=True)), + ('ergpace', models.FloatField(null=True)), + ('nowindpace', models.FloatField(null=True)), + ('equivergpower', models.FloatField(null=True)), + ('fergpace', models.CharField(max_length=30)), + ('fnowindpace', models.CharField(max_length=30)), + ('time', models.FloatField(null=True, verbose_name='Time')), + ('hr', models.IntegerField(null=True, verbose_name='Heart Rate (bpm)')), + ('pace', models.FloatField(null=True, verbose_name='Pace (/500m)')), + ('velo', models.FloatField(default=0, null=True, verbose_name='Boat Speed (m/s)')), + ('spm', models.FloatField(null=True, verbose_name='Stroke Rate (spm)')), + ('driveenergy', models.FloatField(null=True, verbose_name='Work Per Stroke (J)')), + ('power', models.FloatField(null=True, verbose_name='Power (W)')), + ('averageforce', models.FloatField(null=True, verbose_name='Average Drive Force (N)')), + ('peakforce', models.FloatField(null=True, verbose_name='Peak Drive Force (N)')), + ('drivelength', models.FloatField(null=True, verbose_name='Drive Length (m)')), + ('forceratio', models.FloatField(null=True, verbose_name='Average/Peak Force Ratio')), + ('distance', models.FloatField(null=True, verbose_name='Distance (m)')), + ('cumdist', models.FloatField(null=True, verbose_name='Cumulative Distance (m)')), + ('drivespeed', models.FloatField(default=0, null=True, verbose_name='Drive Speed (m/s)')), + ('catch', models.FloatField(default=0, null=True, verbose_name='Catch Angle (degrees)')), + ('slip', models.FloatField(default=0, null=True, verbose_name='Slip (degrees)')), + ('finish', models.FloatField(default=0, null=True, verbose_name='Finish Angle (degrees)')), + ('wash', models.FloatField(default=0, null=True, verbose_name='Wash (degrees)')), + ('peakforceangle', models.FloatField(default=0, null=True, verbose_name='Peak Force Angle')), + ('totalangle', models.FloatField(default=0, null=True, verbose_name='Drive Length (deg)')), + ('effectiveangle', models.FloatField(default=0, null=True, verbose_name='Effective Drive Length (deg)')), + ('rhythm', models.FloatField(default=1.0, null=True, verbose_name='Stroke Rhythm')), + ('efficiency', models.FloatField(default=0, null=True, verbose_name='OTW Efficiency (%)')), + ('distanceperstroke', models.FloatField(default=0, null=True, verbose_name='Distance per Stroke (m)')), + ], + options={ + 'db_table': 'strokedata', + 'index_together': {('workoutid',)}, + }, + ), + migrations.AddField( + model_name='rower', + name='team', + field=models.ManyToManyField(blank=True, to='rowers.Team'), + ), + migrations.AddField( + model_name='rower', + name='user', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.CreateModel( + name='PowerTimeFitnessMetric', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField(default=rowers.models.current_day)), + ('last_workout', models.IntegerField(default=0)), + ('PowerFourMin', models.FloatField(default=0)), + ('PowerTwoK', models.FloatField(default=0)), + ('PowerOneHour', models.FloatField(default=0)), + ('workoutmode', models.CharField(choices=[('rower', 'Rower'), ('water', 'On the water')], default='rower', max_length=40)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'powertimefitnessmetric', + }, + ), + migrations.CreateModel( + name='PlannedSessionComment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('comment', models.TextField(max_length=300)), + ('created', models.DateTimeField(default=django.utils.timezone.now)), + ('read', models.BooleanField(default=False)), + ('notification', models.BooleanField(default=True, verbose_name='Subscribe to new comment notifications')), + ('plannedsession', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.PlannedSession')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='plannedsession', + name='rower', + field=models.ManyToManyField(blank=True, to='rowers.Rower'), + ), + migrations.AddField( + model_name='plannedsession', + name='team', + field=models.ManyToManyField(blank=True, to='rowers.Team'), + ), + migrations.CreateModel( + name='GraphImage', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('filename', models.CharField(blank=True, default='', max_length=150, null=True)), + ('creationdatetime', models.DateTimeField()), + ('width', models.IntegerField(default=1200)), + ('height', models.IntegerField(default=600)), + ('workout', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Workout')), + ], + ), + migrations.CreateModel( + name='GeoPolygon', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=150)), + ('order_in_course', models.IntegerField(default=0)), + ('course', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='rowers.GeoCourse')), + ], + ), + migrations.CreateModel( + name='GeoPoint', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('latitude', models.FloatField(default=0)), + ('longitude', models.FloatField(default=0)), + ('order_in_poly', models.IntegerField(default=0)), + ('polygon', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='rowers.GeoPolygon')), + ], + ), + migrations.AddField( + model_name='geocourse', + name='manager', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='rowers.Rower'), + ), + migrations.CreateModel( + name='FavoriteChart', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('yparam1', models.CharField(choices=[('averageforce', 'Average Drive Force (N)'), ('forceratio', 'Average/Peak Force Ratio'), ('velo', 'Boat Speed (m/s)'), ('catch', 'Catch Angle (degrees)'), ('cumdist', 'Cumulative Distance (m)'), ('distance', 'Distance (m)'), ('distanceperstroke', 'Distance per Stroke (m)'), ('totalangle', 'Drive Length (deg)'), ('drivelength', 'Drive Length (m)'), ('drivespeed', 'Drive Speed (m/s)'), ('effectiveangle', 'Effective Drive Length (deg)'), ('finish', 'Finish Angle (degrees)'), ('hr', 'Heart Rate (bpm)'), ('efficiency', 'OTW Efficiency (%)'), ('pace', 'Pace (/500m)'), ('peakforce', 'Peak Drive Force (N)'), ('peakforceangle', 'Peak Force Angle'), ('power', 'Power (W)'), ('slip', 'Slip (degrees)'), ('spm', 'Stroke Rate (spm)'), ('rhythm', 'Stroke Rhythm'), ('time', 'Time'), ('wash', 'Wash (degrees)'), ('driveenergy', 'Work Per Stroke (J)')], max_length=50, verbose_name='Y1')), + ('yparam2', models.CharField(blank=True, choices=[('None', ''), ('averageforce', 'Average Drive Force (N)'), ('forceratio', 'Average/Peak Force Ratio'), ('velo', 'Boat Speed (m/s)'), ('catch', 'Catch Angle (degrees)'), ('cumdist', 'Cumulative Distance (m)'), ('distance', 'Distance (m)'), ('distanceperstroke', 'Distance per Stroke (m)'), ('totalangle', 'Drive Length (deg)'), ('drivelength', 'Drive Length (m)'), ('drivespeed', 'Drive Speed (m/s)'), ('effectiveangle', 'Effective Drive Length (deg)'), ('finish', 'Finish Angle (degrees)'), ('hr', 'Heart Rate (bpm)'), ('efficiency', 'OTW Efficiency (%)'), ('pace', 'Pace (/500m)'), ('peakforce', 'Peak Drive Force (N)'), ('peakforceangle', 'Peak Force Angle'), ('power', 'Power (W)'), ('slip', 'Slip (degrees)'), ('spm', 'Stroke Rate (spm)'), ('rhythm', 'Stroke Rhythm'), ('time', 'Time'), ('wash', 'Wash (degrees)'), ('driveenergy', 'Work Per Stroke (J)')], default='None', max_length=50, verbose_name='Y2')), + ('xparam', models.CharField(choices=[('None', ''), ('averageforce', 'Average Drive Force (N)'), ('forceratio', 'Average/Peak Force Ratio'), ('velo', 'Boat Speed (m/s)'), ('catch', 'Catch Angle (degrees)'), ('cumdist', 'Cumulative Distance (m)'), ('distance', 'Distance (m)'), ('distanceperstroke', 'Distance per Stroke (m)'), ('totalangle', 'Drive Length (deg)'), ('drivelength', 'Drive Length (m)'), ('drivespeed', 'Drive Speed (m/s)'), ('effectiveangle', 'Effective Drive Length (deg)'), ('finish', 'Finish Angle (degrees)'), ('hr', 'Heart Rate (bpm)'), ('efficiency', 'OTW Efficiency (%)'), ('pace', 'Pace (/500m)'), ('peakforce', 'Peak Drive Force (N)'), ('peakforceangle', 'Peak Force Angle'), ('power', 'Power (W)'), ('slip', 'Slip (degrees)'), ('spm', 'Stroke Rate (spm)'), ('rhythm', 'Stroke Rhythm'), ('time', 'Time'), ('wash', 'Wash (degrees)'), ('driveenergy', 'Work Per Stroke (J)')], max_length=50, verbose_name='X')), + ('plottype', models.CharField(choices=[('line', 'Line Chart'), ('scatter', 'Scatter Chart')], default='line', max_length=50, verbose_name='Chart Type')), + ('workouttype', models.CharField(choices=[('ote', 'Erg/SkiErg'), ('otw', 'On The Water'), ('all', 'All'), ('strava', 'strava'), ('concept2', 'concept2'), ('sporttracks', 'sporttracks'), ('runkeeper', 'runkeeper'), ('mapmyfitness', 'mapmyfitness'), ('csv', 'painsled'), ('tcx', 'tcx'), ('rp', 'rowperfect'), ('mystery', 'mystery'), ('rowperfect3', 'rowperfect3'), ('ergdata', 'ergdata'), ('boatcoach', 'boatcoach'), ('boatcoachotw', 'boatcoachotw'), ('painsleddesktop', 'painsleddesktop'), ('speedcoach', 'speedcoach'), ('speedcoach2', 'speedcoach2'), ('ergstick', 'ergstick'), ('fit', 'fit'), ('unknown', 'unknown')], default='both', max_length=50, verbose_name='Workout Type')), + ('reststrokes', models.BooleanField(default=True, verbose_name='Incl. Rest')), + ('notes', models.CharField(blank=True, default='Flex Chart Notes', max_length=300, verbose_name='Chart Notes')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Rower')), + ], + ), + migrations.CreateModel( + name='ergcpdata', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('delta', models.IntegerField(default=0)), + ('cp', models.FloatField(default=0)), + ('distance', models.FloatField(default=0)), + ('user', models.IntegerField(default=0)), + ], + options={ + 'db_table': 'ergcpdata', + 'index_together': {('user',)}, + }, + ), + migrations.CreateModel( + name='cpergdata', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('delta', models.IntegerField(default=0)), + ('cp', models.FloatField(default=0)), + ('user', models.IntegerField(default=0)), + ], + options={ + 'db_table': 'cpergdata', + 'index_together': {('user',)}, + }, + ), + migrations.CreateModel( + name='cpdata', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('delta', models.IntegerField(default=0)), + ('cp', models.FloatField(default=0)), + ('user', models.IntegerField(default=0)), + ], + options={ + 'db_table': 'cpdata', + 'index_together': {('user',)}, + }, + ), + migrations.CreateModel( + name='CourseTestResult', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('userid', models.IntegerField(default=0)), + ('workoutid', models.IntegerField(null=True)), + ('duration', models.TimeField(default=datetime.time(1, 0))), + ('distance', models.IntegerField(default=0)), + ('coursecompleted', models.BooleanField(default=False)), + ('plannedsession', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.PlannedSession')), + ], + ), + migrations.CreateModel( + name='CoachRequest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('issuedate', models.DateField(default=rowers.models.current_day)), + ('code', models.CharField(max_length=150, unique=True)), + ('coach', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Rower')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='CoachOffer', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('issuedate', models.DateField(default=rowers.models.current_day)), + ('code', models.CharField(max_length=150, unique=True)), + ('coach', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Rower')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='C2WorldClassAgePerformance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('weightcategory', models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=30)), + ('sex', models.CharField(choices=[('male', 'male'), ('female', 'female')], default='female', max_length=30)), + ('age', models.IntegerField(default=19, verbose_name='Age')), + ('distance', models.IntegerField(default=2000)), + ('name', models.CharField(blank=True, max_length=200)), + ('duration', models.FloatField(blank=True, default=1)), + ('season', models.IntegerField(default=2013)), + ('power', models.IntegerField(default=200)), + ], + options={ + 'unique_together': {('age', 'sex', 'weightcategory', 'distance')}, + }, + ), + migrations.CreateModel( + name='VirtualRaceResult', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('userid', models.IntegerField(default=0)), + ('teamname', models.CharField(blank=True, max_length=80, null=True, verbose_name='Team Name')), + ('username', models.CharField(max_length=150)), + ('workoutid', models.IntegerField(null=True)), + ('weightcategory', models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=10, verbose_name='Weight Category')), + ('adaptiveclass', models.CharField(choices=[('None', 'None'), ('PR1', 'PR1 (Arms and Shoulders)'), ('PR2', 'PR2 (Trunk and Arms)'), ('PR3', 'PR3 (Leg Trunk and Arms)'), ('FES', 'FES (Functional Electrical Stimulation)')], default='None', max_length=50, verbose_name='Adaptive Class')), + ('duration', models.TimeField(default=datetime.time(1, 0))), + ('distance', models.IntegerField(default=0)), + ('boatclass', models.CharField(choices=[('water', 'Standard Racing Shell'), ('coastal', 'Coastal'), ('c-boat', 'Dutch C boat'), ('churchboat', 'Finnish Church boat')], default='water', max_length=40, verbose_name='Boat Class')), + ('boattype', models.CharField(choices=[('1x', '1x (single)'), ('2x', '2x (double)'), ('2x+', '2x+ (coxed double)'), ('2-', '2- (pair)'), ('2+', '2+ (coxed pair)'), ('3x+', '3x+ (coxed triple)'), ('3x-', '3x- (triple)'), ('4x', '4x (quad)'), ('4x+', '4x+ (coxed quad)'), ('4-', '4- (four)'), ('4+', '4+ (coxed four)'), ('8+', '8+ (eight)'), ('8x+', '8x+ (octuple scull)')], default='1x', max_length=40, verbose_name='Boat Type')), + ('coursecompleted', models.BooleanField(default=False)), + ('sex', models.CharField(choices=[('male', 'male'), ('female', 'female'), ('not specified', 'not specified')], default='not specified', max_length=30, verbose_name='Gender')), + ('age', models.IntegerField(null=True)), + ('emailnotifications', models.BooleanField(default=True, verbose_name='Receive race notifications by email')), + ('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.VirtualRace')), + ], + ), + migrations.CreateModel( + name='RaceLogo', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('filename', models.CharField(default='', max_length=150)), + ('creationdatetime', models.DateTimeField()), + ('width', models.IntegerField(default=1200)), + ('height', models.IntegerField(default=600)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ('race', models.ManyToManyField(related_name='logos', to='rowers.VirtualRace')), + ], + ), + migrations.CreateModel( + name='IndoorVirtualRaceResult', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('userid', models.IntegerField(default=0)), + ('teamname', models.CharField(blank=True, max_length=80, null=True, verbose_name='Team Name')), + ('username', models.CharField(max_length=150)), + ('workoutid', models.IntegerField(null=True)), + ('weightcategory', models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=10, verbose_name='Weight Category')), + ('adaptiveclass', models.CharField(choices=[('None', 'None'), ('PR1', 'PR1 (Arms and Shoulders)'), ('PR2', 'PR2 (Trunk and Arms)'), ('PR3', 'PR3 (Leg Trunk and Arms)'), ('FES', 'FES (Functional Electrical Stimulation)')], default='None', max_length=50, verbose_name='Adaptive Class')), + ('duration', models.TimeField(default=datetime.time(1, 0))), + ('distance', models.IntegerField(default=0)), + ('boatclass', models.CharField(choices=[('rower', 'Indoor Rower'), ('dynamic', 'Dynamic Indoor Rower'), ('slides', 'Indoor Rower on Slides')], default='rower', max_length=40, verbose_name='Ergometer Class')), + ('coursecompleted', models.BooleanField(default=False)), + ('sex', models.CharField(choices=[('male', 'male'), ('female', 'female'), ('not specified', 'not specified')], default='not specified', max_length=30, verbose_name='Gender')), + ('age', models.IntegerField(null=True)), + ('emailnotifications', models.BooleanField(default=True, verbose_name='Receive race notifications by email')), + ('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.VirtualRace')), + ], + ), ] diff --git a/rowers/migrations/0002_auto_20160426_1043.py b/rowers/migrations/0002_auto_20160426_1043.py deleted file mode 100644 index 46f09592..00000000 --- a/rowers/migrations/0002_auto_20160426_1043.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 08:43 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0001_initial'), - ] - - operations = [ - migrations.RenameField( - model_name='workout', - old_name='type', - new_name='workouttype', - ), - ] diff --git a/rowers/migrations/0003_auto_20160426_1048.py b/rowers/migrations/0003_auto_20160426_1048.py deleted file mode 100644 index 74bd095a..00000000 --- a/rowers/migrations/0003_auto_20160426_1048.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 08:48 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0002_auto_20160426_1043'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='workouttype', - field=models.CharField(choices=[('water', 'On-water'), ('rower', 'Indoor Rower'), ('skierg', 'Ski Erg'), ('dynamic', 'Dynamic Indoor Rower'), ('slides', 'Indoor Rower on Slides'), ('paddle', 'Paddle Adapter'), ('snow', 'On-snow')], max_length=30), - ), - ] diff --git a/rowers/migrations/0004_auto_20160426_1441.py b/rowers/migrations/0004_auto_20160426_1441.py deleted file mode 100644 index 4c6f854e..00000000 --- a/rowers/migrations/0004_auto_20160426_1441.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:41 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0003_auto_20160426_1048'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='an', - field=models.IntegerField(default=180), - ), - migrations.AddField( - model_name='rower', - name='at', - field=models.IntegerField(default=160), - ), - migrations.AddField( - model_name='rower', - name='rest', - field=models.IntegerField(default=48), - ), - migrations.AddField( - model_name='rower', - name='tr', - field=models.IntegerField(default=167), - ), - migrations.AddField( - model_name='rower', - name='ut1', - field=models.IntegerField(default=146), - ), - migrations.AddField( - model_name='rower', - name='ut2', - field=models.IntegerField(default=105), - ), - migrations.AlterField( - model_name='rower', - name='max', - field=models.IntegerField(default=192), - ), - ] diff --git a/rowers/migrations/0005_auto_20160426_1446.py b/rowers/migrations/0005_auto_20160426_1446.py deleted file mode 100644 index c61ffb79..00000000 --- a/rowers/migrations/0005_auto_20160426_1446.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-26 12:46 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0004_auto_20160426_1441'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='c2token', - field=models.CharField(default='', max_length=50), - ), - migrations.AddField( - model_name='rower', - name='tokenexpirydate', - field=models.DateField(blank=True, null=True), - ), - migrations.AddField( - model_name='rower', - name='weightcategory', - field=models.CharField(default='hwt', max_length=30), - ), - ] diff --git a/rowers/migrations/0006_auto_20160427_1350.py b/rowers/migrations/0006_auto_20160427_1350.py deleted file mode 100644 index 5ba06faf..00000000 --- a/rowers/migrations/0006_auto_20160427_1350.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-27 11:50 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0005_auto_20160426_1446'), - ] - - operations = [ - migrations.AlterField( - model_name='rower', - name='c2token', - field=models.CharField(blank=True, default='', max_length=50, null=True), - ), - ] diff --git a/rowers/migrations/0007_auto_20160428_1153.py b/rowers/migrations/0007_auto_20160428_1153.py deleted file mode 100644 index 5a0784e9..00000000 --- a/rowers/migrations/0007_auto_20160428_1153.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 09:53 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0006_auto_20160427_1350'), - ] - - operations = [ - migrations.CreateModel( - name='GraphImage', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('filename', models.CharField(blank=True, default='', max_length=50, null=True)), - ('creationdatetime', models.DateTimeField()), - ('workout', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rowers.Workout')), - ], - ), - migrations.AlterField( - model_name='rower', - name='weightcategory', - field=models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'leight-weight')], default='hwt', max_length=30), - ), - ] diff --git a/rowers/migrations/0008_auto_20160428_1154.py b/rowers/migrations/0008_auto_20160428_1154.py deleted file mode 100644 index 16c7a05b..00000000 --- a/rowers/migrations/0008_auto_20160428_1154.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 09:54 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0007_auto_20160428_1153'), - ] - - operations = [ - migrations.AlterField( - model_name='rower', - name='weightcategory', - field=models.CharField(choices=[('hwt', 'heavy-weight'), ('lwt', 'light-weight')], default='hwt', max_length=30), - ), - ] diff --git a/rowers/migrations/0009_auto_20160428_1955.py b/rowers/migrations/0009_auto_20160428_1955.py deleted file mode 100644 index e406694a..00000000 --- a/rowers/migrations/0009_auto_20160428_1955.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 17:55 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0008_auto_20160428_1154'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='starttime', - field=models.TimeField(blank=True, null=True), - ), - migrations.AlterField( - model_name='rower', - name='an', - field=models.IntegerField(default=180, verbose_name='AN band lower HR'), - ), - migrations.AlterField( - model_name='rower', - name='at', - field=models.IntegerField(default=160, verbose_name='AT band lower HR'), - ), - migrations.AlterField( - model_name='rower', - name='max', - field=models.IntegerField(default=192, verbose_name='Max Heart Rate'), - ), - migrations.AlterField( - model_name='rower', - name='rest', - field=models.IntegerField(default=48, verbose_name='Resting Heart Rate'), - ), - migrations.AlterField( - model_name='rower', - name='tr', - field=models.IntegerField(default=167, verbose_name='TR band lower HR'), - ), - migrations.AlterField( - model_name='rower', - name='ut1', - field=models.IntegerField(default=146, verbose_name='UT1 band lower HR'), - ), - migrations.AlterField( - model_name='rower', - name='ut2', - field=models.IntegerField(default=105, verbose_name='UT2 band lower HR'), - ), - ] diff --git a/rowers/migrations/0010_workout_distance.py b/rowers/migrations/0010_workout_distance.py deleted file mode 100644 index 85ac5657..00000000 --- a/rowers/migrations/0010_workout_distance.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 17:58 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0009_auto_20160428_1955'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='distance', - field=models.IntegerField(blank=True, default=0), - ), - ] diff --git a/rowers/migrations/0011_auto_20160428_2009.py b/rowers/migrations/0011_auto_20160428_2009.py deleted file mode 100644 index a68306a5..00000000 --- a/rowers/migrations/0011_auto_20160428_2009.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 18:09 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0010_workout_distance'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='csvfilename', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='workout', - name='duration', - field=models.IntegerField(blank=True, default=0), - preserve_default=False, - ), - migrations.AddField( - model_name='workout', - name='notes', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='workout', - name='uploadedtoc2', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='workout', - name='weightclass', - field=models.CharField(default='hwt', max_length=10), - ), - ] diff --git a/rowers/migrations/0012_auto_20160428_2010.py b/rowers/migrations/0012_auto_20160428_2010.py deleted file mode 100644 index 8ef16d4a..00000000 --- a/rowers/migrations/0012_auto_20160428_2010.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 18:10 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0011_auto_20160428_2009'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='duration', - field=models.IntegerField(blank=True, default=1), - ), - ] diff --git a/rowers/migrations/0013_auto_20160428_2021.py b/rowers/migrations/0013_auto_20160428_2021.py deleted file mode 100644 index 5e3c5111..00000000 --- a/rowers/migrations/0013_auto_20160428_2021.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 18:21 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0012_auto_20160428_2010'), - ] - - operations = [ - migrations.RenameField( - model_name='workout', - old_name='weightclass', - new_name='weightcategory', - ), - ] diff --git a/rowers/migrations/0014_auto_20160428_2251.py b/rowers/migrations/0014_auto_20160428_2251.py deleted file mode 100644 index 46a54491..00000000 --- a/rowers/migrations/0014_auto_20160428_2251.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-28 20:51 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0013_auto_20160428_2021'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='duration', - field=models.TimeField(blank=True, default=1), - ), - ] diff --git a/rowers/migrations/0015_auto_20160429_2038.py b/rowers/migrations/0015_auto_20160429_2038.py deleted file mode 100644 index ddc88015..00000000 --- a/rowers/migrations/0015_auto_20160429_2038.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-04-29 18:38 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0014_auto_20160428_2251'), - ] - - operations = [ - migrations.AlterField( - model_name='graphimage', - name='filename', - field=models.CharField(blank=True, default='', max_length=150, null=True), - ), - ] diff --git a/rowers/migrations/0016_auto_20160501_1119.py b/rowers/migrations/0016_auto_20160501_1119.py deleted file mode 100644 index 4c863795..00000000 --- a/rowers/migrations/0016_auto_20160501_1119.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-01 09:19 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0015_auto_20160429_2038'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='c2refreshtoken', - field=models.CharField(blank=True, default='', max_length=200, null=True), - ), - migrations.AlterField( - model_name='rower', - name='c2token', - field=models.CharField(blank=True, default='', max_length=200, null=True), - ), - ] diff --git a/rowers/migrations/0017_auto_20160501_1126.py b/rowers/migrations/0017_auto_20160501_1126.py deleted file mode 100644 index af96a886..00000000 --- a/rowers/migrations/0017_auto_20160501_1126.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-01 09:26 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0016_auto_20160501_1119'), - ] - - operations = [ - migrations.AlterField( - model_name='rower', - name='tokenexpirydate', - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/rowers/migrations/0018_auto_20160501_1944.py b/rowers/migrations/0018_auto_20160501_1944.py deleted file mode 100644 index 3020be4e..00000000 --- a/rowers/migrations/0018_auto_20160501_1944.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-01 17:44 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0017_auto_20160501_1126'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='uploadedtoc2', - field=models.IntegerField(default=0), - ), - ] diff --git a/rowers/migrations/0019_auto_20160522_1659.py b/rowers/migrations/0019_auto_20160522_1659.py deleted file mode 100644 index c24d0625..00000000 --- a/rowers/migrations/0019_auto_20160522_1659.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-22 14:59 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0018_auto_20160501_1944'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='stravarefreshtoken', - field=models.CharField(blank=True, default='', max_length=200, null=True), - ), - migrations.AddField( - model_name='rower', - name='stravatoken', - field=models.CharField(blank=True, default='', max_length=200, null=True), - ), - migrations.AddField( - model_name='rower', - name='stravatokenexpirydate', - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/rowers/migrations/0020_auto_20160522_1726.py b/rowers/migrations/0020_auto_20160522_1726.py deleted file mode 100644 index 52b0440a..00000000 --- a/rowers/migrations/0020_auto_20160522_1726.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-22 15:26 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0019_auto_20160522_1659'), - ] - - operations = [ - migrations.RemoveField( - model_name='rower', - name='stravarefreshtoken', - ), - migrations.RemoveField( - model_name='rower', - name='stravatokenexpirydate', - ), - ] diff --git a/rowers/migrations/0021_rower_rowerplan.py b/rowers/migrations/0021_rower_rowerplan.py deleted file mode 100644 index ebc0a422..00000000 --- a/rowers/migrations/0021_rower_rowerplan.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-25 12:50 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0020_auto_20160522_1726'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='rowerplan', - field=models.CharField(choices=[('basic', 'basic'), ('pro', 'pro')], default='basic', max_length=30), - ), - ] diff --git a/rowers/migrations/0022_auto_20160529_2115.py b/rowers/migrations/0022_auto_20160529_2115.py deleted file mode 100644 index ed585c1a..00000000 --- a/rowers/migrations/0022_auto_20160529_2115.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-29 19:15 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0021_rower_rowerplan'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='csvfilename', - field=models.CharField(blank=True, max_length=150), - ), - migrations.AlterField( - model_name='workout', - name='notes', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='workout', - name='workouttype', - field=models.CharField(choices=[('water', 'On-water'), ('rower', 'Indoor Rower'), ('skierg', 'Ski Erg'), ('dynamic', 'Dynamic Indoor Rower'), ('slides', 'Indoor Rower on Slides'), ('paddle', 'Paddle Adapter'), ('snow', 'On-snow')], max_length=50), - ), - ] diff --git a/rowers/migrations/0023_auto_20160530_0914.py b/rowers/migrations/0023_auto_20160530_0914.py deleted file mode 100644 index c240493e..00000000 --- a/rowers/migrations/0023_auto_20160530_0914.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-30 07:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0022_auto_20160529_2115'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='name', - field=models.CharField(max_length=150), - ), - ] diff --git a/rowers/migrations/0024_workout_uploadedtostrava.py b/rowers/migrations/0024_workout_uploadedtostrava.py deleted file mode 100644 index 29266b17..00000000 --- a/rowers/migrations/0024_workout_uploadedtostrava.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-02 13:56 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0023_auto_20160530_0914'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='uploadedtostrava', - field=models.IntegerField(default=0), - ), - ] diff --git a/rowers/migrations/0025_workout_summary.py b/rowers/migrations/0025_workout_summary.py deleted file mode 100644 index 5399f4a2..00000000 --- a/rowers/migrations/0025_workout_summary.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-08 06:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0024_workout_uploadedtostrava'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='summary', - field=models.TextField(blank=True), - ), - ] diff --git a/rowers/migrations/0026_auto_20160608_2137.py b/rowers/migrations/0026_auto_20160608_2137.py deleted file mode 100644 index 04c87107..00000000 --- a/rowers/migrations/0026_auto_20160608_2137.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-08 19:37 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0025_workout_summary'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='averagehr', - field=models.IntegerField(blank=True, default=0), - preserve_default=False, - ), - migrations.AddField( - model_name='workout', - name='maxhr', - field=models.IntegerField(blank=True, default=0), - preserve_default=False, - ), - ] diff --git a/rowers/migrations/0027_workout_uploadedtosporttracks.py b/rowers/migrations/0027_workout_uploadedtosporttracks.py deleted file mode 100644 index 2405cd05..00000000 --- a/rowers/migrations/0027_workout_uploadedtosporttracks.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-09 16:22 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0026_auto_20160608_2137'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='uploadedtosporttracks', - field=models.IntegerField(default=0), - ), - ] diff --git a/rowers/migrations/0028_rower_sporttrackstoken.py b/rowers/migrations/0028_rower_sporttrackstoken.py deleted file mode 100644 index fc70da44..00000000 --- a/rowers/migrations/0028_rower_sporttrackstoken.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-09 16:37 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0027_workout_uploadedtosporttracks'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='sporttrackstoken', - field=models.CharField(blank=True, default='', max_length=200, null=True), - ), - ] diff --git a/rowers/migrations/0029_auto_20160610_0825.py b/rowers/migrations/0029_auto_20160610_0825.py deleted file mode 100644 index 68c55066..00000000 --- a/rowers/migrations/0029_auto_20160610_0825.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-10 06:25 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0028_rower_sporttrackstoken'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='uploadedtosporttracks', - field=models.IntegerField(blank=True, default=0), - ), - ] diff --git a/rowers/migrations/0030_auto_20160610_0826.py b/rowers/migrations/0030_auto_20160610_0826.py deleted file mode 100644 index 601c2a41..00000000 --- a/rowers/migrations/0030_auto_20160610_0826.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-10 06:26 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0029_auto_20160610_0825'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='uploadedtosporttracks', - field=models.IntegerField(blank=True, default=0, null=True), - ), - ] diff --git a/rowers/migrations/0031_auto_20160610_0843.py b/rowers/migrations/0031_auto_20160610_0843.py deleted file mode 100644 index 9386f0e8..00000000 --- a/rowers/migrations/0031_auto_20160610_0843.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-10 06:43 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0030_auto_20160610_0826'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='averagehr', - field=models.IntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='workout', - name='maxhr', - field=models.IntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='workout', - name='uploadedtosporttracks', - field=models.IntegerField(default=0), - ), - ] diff --git a/rowers/migrations/0032_auto_20160615_1332.py b/rowers/migrations/0032_auto_20160615_1332.py deleted file mode 100644 index ced2bbeb..00000000 --- a/rowers/migrations/0032_auto_20160615_1332.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-15 11:32 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0031_auto_20160610_0843'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='sporttracksrefreshtoken', - field=models.CharField(blank=True, default='', max_length=200, null=True), - ), - migrations.AddField( - model_name='rower', - name='sporttrackstokenexpirytdata', - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/rowers/migrations/0033_auto_20160617_0927.py b/rowers/migrations/0033_auto_20160617_0927.py deleted file mode 100644 index e4192f7b..00000000 --- a/rowers/migrations/0033_auto_20160617_0927.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-17 07:27 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0032_auto_20160615_1332'), - ] - - operations = [ - migrations.RenameField( - model_name='rower', - old_name='sporttrackstokenexpirytdata', - new_name='sporttrackstokenexpirytdate', - ), - ] diff --git a/rowers/migrations/0034_auto_20160617_0929.py b/rowers/migrations/0034_auto_20160617_0929.py deleted file mode 100644 index cbfd2eef..00000000 --- a/rowers/migrations/0034_auto_20160617_0929.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-17 07:29 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0033_auto_20160617_0927'), - ] - - operations = [ - migrations.RenameField( - model_name='rower', - old_name='sporttrackstokenexpirytdate', - new_name='sporttrackstokenexpirydate', - ), - ] diff --git a/rowers/migrations/0035_auto_20160623_0815.py b/rowers/migrations/0035_auto_20160623_0815.py deleted file mode 100644 index 5a3f0332..00000000 --- a/rowers/migrations/0035_auto_20160623_0815.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-23 06:15 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0034_auto_20160617_0929'), - ] - - operations = [ - migrations.CreateModel( - name='Team', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=150)), - ('notes', models.CharField(blank=True, max_length=200)), - ], - ), - migrations.AlterField( - model_name='rower', - name='rowerplan', - field=models.CharField(choices=[('basic', 'basic'), ('pro', 'pro'), ('coach', 'coach')], default='basic', max_length=30), - ), - migrations.AddField( - model_name='workout', - name='team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rowers.Team'), - ), - ] diff --git a/rowers/migrations/0036_rower_team.py b/rowers/migrations/0036_rower_team.py deleted file mode 100644 index 287d3203..00000000 --- a/rowers/migrations/0036_rower_team.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-23 06:17 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0035_auto_20160623_0815'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rowers.Team'), - ), - ] diff --git a/rowers/migrations/0037_auto_20160629_1014.py b/rowers/migrations/0037_auto_20160629_1014.py deleted file mode 100644 index b7b30108..00000000 --- a/rowers/migrations/0037_auto_20160629_1014.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-29 08:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0036_rower_team'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='boattype', - field=models.CharField(blank=True, choices=[('1x', '1x (single)'), ('2x', '2x (double - not working)')], default='1x', max_length=50), - ), - migrations.AddField( - model_name='workout', - name='weightvalue', - field=models.FloatField(blank=True, default=80.0), - ), - ] diff --git a/rowers/migrations/0038_auto_20160629_1023.py b/rowers/migrations/0038_auto_20160629_1023.py deleted file mode 100644 index ee1ae219..00000000 --- a/rowers/migrations/0038_auto_20160629_1023.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-06-29 08:23 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0037_auto_20160629_1014'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='boattype', - field=models.CharField(blank=True, choices=[('1x', '1x (single)'), ('2x', '2x (double - not working)')], default='1x', max_length=50, verbose_name='Boat Type'), - ), - migrations.AlterField( - model_name='workout', - name='weightvalue', - field=models.FloatField(blank=True, default=80.0, verbose_name='Average Crew Weight (kg)'), - ), - ] diff --git a/rowers/migrations/0039_auto_20160719_2240.py b/rowers/migrations/0039_auto_20160719_2240.py deleted file mode 100644 index 6a187912..00000000 --- a/rowers/migrations/0039_auto_20160719_2240.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-19 20:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0038_auto_20160629_1023'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='boattype', - field=models.CharField(choices=[('1x', '1x (single)'), ('2x', '2x (double)'), ('2-', '2- (pair)'), ('4x', '4x (quad)'), ('4-', '4- (four)'), ('8+', '8+ (eight)')], default='1x (single)', max_length=50, verbose_name='Boat Type'), - ), - ] diff --git a/rowers/migrations/0040_workout_startdatetime.py b/rowers/migrations/0040_workout_startdatetime.py deleted file mode 100644 index 856f0870..00000000 --- a/rowers/migrations/0040_workout_startdatetime.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-07-20 19:31 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0039_auto_20160719_2240'), - ] - - operations = [ - migrations.AddField( - model_name='workout', - name='startdatetime', - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/rowers/migrations/0041_rower_friends.py b/rowers/migrations/0041_rower_friends.py deleted file mode 100644 index a133aa20..00000000 --- a/rowers/migrations/0041_rower_friends.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-09-01 12:58 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0040_workout_startdatetime'), - ] - - operations = [ - migrations.AddField( - model_name='rower', - name='friends', - field=models.ManyToManyField(related_name='_rower_friends_+', to='rowers.Rower'), - ), - ] diff --git a/rowers/migrations/0042_auto_20161101_2235.py b/rowers/migrations/0042_auto_20161101_2235.py deleted file mode 100644 index da4f530b..00000000 --- a/rowers/migrations/0042_auto_20161101_2235.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-11-01 21:35 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('rowers', '0041_rower_friends'), - ] - - operations = [ - migrations.AlterField( - model_name='workout', - name='notes', - field=models.CharField(blank=True, max_length=200, null=True), - ), - ] diff --git a/rowers/migrations/__init__.py b/rowers/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index 87d8f185..cb4f2c24 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -308,64 +308,47 @@ def get_workout(user,stravaid): except KeyError: startdatetime = timezone.now() - spmjson = get_strava_stream(r,'cadence',stravaid) - hrjson = get_strava_stream(r,'heartrate',stravaid) - timejson = get_strava_stream(r,'time',stravaid) - velojson = get_strava_stream(r,'velocity_smooth',stravaid) - distancejson = get_strava_stream(r,'distance',stravaid) - latlongjson = get_strava_stream(r,'latlng',stravaid) - powerjson = get_strava_stream(r,'power',stravaid) + spm = get_strava_stream(r,'cadence',stravaid) + hr = get_strava_stream(r,'heartrate',stravaid) + t = get_strava_stream(r,'time',stravaid) + velo = get_strava_stream(r,'velocity_smooth',stravaid) + d = get_strava_stream(r,'distance',stravaid) + coords = get_strava_stream(r,'latlng',stravaid) + power = get_strava_stream(r,'power',stravaid) - - try: - t = np.array(timejson.json()[0]['data']) - nr_rows = len(t) - d = np.array(distancejson.json()[1]['data']) - if nr_rows == 0: - return (0,"Error: Time data had zero length") + nr_rows = len(t) - except IndexError: + if nr_rows == 0: + return (0,"Error: Time data had zero length") + + if d is None: d = 0*t - # return (0,"Error: No Distance information in the Strava data") - except KeyError: - return (0,"something went wrong with the Strava import") - try: - spm = np.array(spmjson.json()[1]['data']) - except: + if spm is None: spm = np.zeros(nr_rows) - try: - power = np.array(powerjson.json()[1]['data']) - except IndexError: + if power is None: power = np.zeros(nr_rows) - try: - hr = np.array(hrjson.json()[1]['data']) - except IndexError: - hr = np.zeros(nr_rows) - except KeyError: + if hr is None: hr = np.zeros(nr_rows) - try: - velo = np.array(velojson.json()[1]['data']) - except IndexError: - velo = np.zeros(nr_rows) - except KeyError: + if velo is None: velo = np.zeros(nr_rows) dt = np.diff(t).mean() wsize = round(5./dt) velo2 = ewmovingaverage(velo,wsize) - coords = np.array(latlongjson.json()[0]['data']) - try: - lat = coords[:,0] - lon = coords[:,1] - except IndexError: - lat = np.zeros(len(t)) - lon = np.zeros(len(t)) - except KeyError: + + if coords is not None: + try: + lat = coords[:,0] + lon = coords[:,1] + except IndexError: + lat = np.zeros(len(t)) + lon = np.zeros(len(t)) + else: lat = np.zeros(len(t)) lon = np.zeros(len(t)) @@ -389,7 +372,6 @@ def get_workout(user,stravaid): 'power':power, 'strokelength':strokelength, }) - # startdatetime = datetime.datetime.strptime(startdatetime,"%Y-%m-%d-%H:%M:%S") diff --git a/rowers/tests/test_aworkouts.py b/rowers/tests/test_aworkouts.py index 7c70314a..1b23d1b6 100644 --- a/rowers/tests/test_aworkouts.py +++ b/rowers/tests/test_aworkouts.py @@ -239,10 +239,12 @@ class WorkoutViewTest(TestCase): response = self.c.get(url,follow=True) self.assertEqual(response.status_code,200) - + @patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.getsmallrowdata_db') - def test_waterworkout_view(self, mocked_sqlalchemy, mocked_getsmallrowdata_db): + # @patch('rowers.weather.requests.get', side_effect=mocked_requests) + def test_waterworkout_view(self, + mocked_sqlalchemy, mocked_getsmallrowdata_db): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 4096c9da..46e7e294 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/underarmourstuff.py b/rowers/underarmourstuff.py index e0034bda..e88ae9a3 100644 --- a/rowers/underarmourstuff.py +++ b/rowers/underarmourstuff.py @@ -415,12 +415,14 @@ def add_workout_from_data(user,importid,data,strokedata, timeseries = data['time_series'] # position, distance, speed, cadence, power, - - res = splituadata(timeseries['distance']) - distance = res[1] - - times_distance = res[0] + try: + res = splituadata(timeseries['distance']) + distance = res[1] + times_distance = res[0] + except KeyError: + message = "Error. No distance data" + return (0,message) try: diff --git a/rowers/utils.py b/rowers/utils.py index db40c9cb..92b3ff17 100644 --- a/rowers/utils.py +++ b/rowers/utils.py @@ -490,8 +490,13 @@ def get_strava_stream(r,metric,stravaid,series_type='time',fetchresolution='high s = requests.get(url,headers=headers) + + for data in s.json(): + y = None + if data['type'] == metric: + return np.array(data['data']) - return s + return None def allmonths(startdate,enddate): d = startdate diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index ab39a1d6..5848fe52 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -1408,7 +1408,9 @@ def workout_getimportview(request,externalid,source = 'c2'): except ValueError: pass + if strokedata.empty: + print('aap') distance = data['distance'] c2id = data['id'] workouttype = mytypes.c2mappinginv[data['type']] diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index a01cf017..ada6ded4 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -1801,7 +1801,9 @@ def workout_downloadwind_view(request,id=0, try: row.notes += "\n"+message except TypeError: - pass + if message: + row.notes += message + row.save() rowdata.add_wind(windspeed,windbearing) rowdata.write_csv(f1,gzip=True) @@ -1871,7 +1873,8 @@ def workout_downloadmetar_view(request,id=0, try: row.notes += "\n"+message except TypeError: - pass + if message: + row.notes += message row.save() rowdata.add_wind(windspeed,windbearing)