consolidated objects into one benchcoach app

created benchcoachproject app to contain all the settings and stuff
some other changes that got grouped with this commit is the adding the ApiObject to the TeamSnap object model
This commit is contained in:
2021-12-21 17:14:52 -06:00
parent e9f91126e5
commit 95697ef4fe
174 changed files with 5351 additions and 16551 deletions

View File

@@ -1,8 +1,7 @@
from django import forms
from .models import LineupEntry, Event
from players.models import Player
from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory
from crispy_forms.helper import FormHelper, Layout
import benchcoach.models
from django.forms import modelformset_factory
class LineupEntryForm(forms.ModelForm):
availability = None

View File

@@ -1,43 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 00:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='event',
name='formatted_title',
field=models.CharField(max_length=50, null=True),
),
migrations.AlterField(
model_name='event',
name='teamsnap_id',
field=models.CharField(max_length=10, unique=True),
),
migrations.AlterField(
model_name='location',
name='teamsnap_id',
field=models.CharField(max_length=10, unique=True),
),
migrations.AlterField(
model_name='member',
name='teamsnap_id',
field=models.CharField(max_length=10, unique=True),
),
migrations.AlterField(
model_name='team',
name='teamsnap_id',
field=models.CharField(max_length=10, unique=True),
),
migrations.AlterField(
model_name='user',
name='teamsnap_id',
field=models.CharField(max_length=10, unique=True),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.2.6 on 2021-12-18 23:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='event',
name='game_type',
field=models.CharField(max_length=50, null=True),
),
]

View File

@@ -1,60 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 15:40
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0002_auto_20211121_0035'),
]
operations = [
migrations.RenameField(
model_name='event',
old_name='event',
new_name='bencoach_event',
),
migrations.RenameField(
model_name='location',
old_name='venue',
new_name='bencoach_venue',
),
migrations.RenameField(
model_name='member',
old_name='player',
new_name='bencoach_player',
),
migrations.RenameField(
model_name='team',
old_name='team',
new_name='bencoach_team',
),
migrations.AddField(
model_name='member',
name='first_name',
field=models.CharField(max_length=50, null=True),
),
migrations.AddField(
model_name='member',
name='is_non_player',
field=models.BooleanField(default=False),
preserve_default=False,
),
migrations.AddField(
model_name='member',
name='jersey_number',
field=models.IntegerField(null=True),
),
migrations.AddField(
model_name='member',
name='last_name',
field=models.CharField(max_length=50, null=True),
),
migrations.AddField(
model_name='member',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team'),
),
]

View File

@@ -0,0 +1,108 @@
# Generated by Django 3.2.6 on 2021-12-20 02:58
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('benchcoach', '0002_alter_player_jersey_number'),
('teamsnap', '0002_event_game_type'),
]
operations = [
migrations.RemoveField(
model_name='availability',
name='managed_by_team',
),
migrations.RemoveField(
model_name='event',
name='managed_by_team',
),
migrations.RemoveField(
model_name='location',
name='managed_by_team',
),
migrations.RemoveField(
model_name='member',
name='managed_by_team',
),
migrations.RemoveField(
model_name='opponent',
name='managed_by_team',
),
migrations.AddField(
model_name='availability',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team', verbose_name='managed by team'),
),
migrations.AddField(
model_name='event',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team', verbose_name='managed by team'),
),
migrations.AddField(
model_name='lineupentry',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_lineupentry', to='benchcoach.positioning'),
),
migrations.AddField(
model_name='lineupentry',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team', verbose_name='managed by team'),
),
migrations.AddField(
model_name='location',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team', verbose_name='managed by team'),
),
migrations.AddField(
model_name='member',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team', verbose_name='managed by team'),
),
migrations.AddField(
model_name='opponent',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team', verbose_name='managed by team'),
),
migrations.AlterField(
model_name='availability',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_availability', to='benchcoach.availability'),
),
migrations.AlterField(
model_name='event',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_event', to='benchcoach.event'),
),
migrations.AlterField(
model_name='location',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_location', to='benchcoach.venue'),
),
migrations.AlterField(
model_name='member',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_member', to='benchcoach.player'),
),
migrations.AlterField(
model_name='opponent',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_opponent', to='benchcoach.team'),
),
migrations.AlterField(
model_name='team',
name='benchcoach_object',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_team', to='benchcoach.team'),
),
migrations.AlterUniqueTogether(
name='lineupentry',
unique_together=set(),
),
migrations.RemoveField(
model_name='lineupentry',
name='managed_by_team',
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 15:44
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0003_auto_20211121_1540'),
]
operations = [
migrations.RemoveField(
model_name='member',
name='name',
),
]

View File

@@ -1,30 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 16:11
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('lineups', '0007_alter_positioning_position'),
('teamsnap', '0004_remove_member_name'),
]
operations = [
migrations.CreateModel(
name='Availability',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('teamsnap_id', models.CharField(max_length=10, unique=True)),
('status_code', models.SmallIntegerField(null=True)),
('benchcoach_availability', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='lineups.availability')),
('event', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.event')),
('member', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.member')),
('team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team')),
],
options={
'abstract': False,
},
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 16:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0005_availability'),
]
operations = [
migrations.AlterField(
model_name='availability',
name='status_code',
field=models.SmallIntegerField(choices=[(1, 'Yes'), (0, 'No'), (2, 'Maybe'), (None, 'Unknown')], default=None, null=True),
),
]

View File

@@ -1,24 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 16:28
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0006_alter_availability_status_code'),
]
operations = [
migrations.AddField(
model_name='event',
name='team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team'),
),
migrations.AlterField(
model_name='event',
name='opponent',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='opponent', to='teamsnap.team'),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 16:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0007_auto_20211121_1628'),
]
operations = [
migrations.AlterModelOptions(
name='availability',
options={'verbose_name_plural': 'availabilities'},
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 17:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0008_alter_availability_options'),
]
operations = [
migrations.AddField(
model_name='event',
name='points_for_opponent',
field=models.PositiveSmallIntegerField(null=True),
),
migrations.AddField(
model_name='event',
name='points_for_team',
field=models.PositiveSmallIntegerField(null=True),
),
]

View File

@@ -1,19 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 18:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0009_auto_20211121_1757'),
]
operations = [
migrations.AddField(
model_name='event',
name='is_game',
field=models.BooleanField(default=False),
preserve_default=False,
),
]

View File

@@ -1,27 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 18:47
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0010_event_is_game'),
]
operations = [
migrations.CreateModel(
name='LineupEntry',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('label', models.PositiveSmallIntegerField(blank=True, choices=[(11, 'EH'), (1, 'P'), (2, 'C'), (3, '1B'), (4, '2B'), (5, '3B'), (6, 'SS'), (7, 'LF'), (8, 'CF'), (9, 'RF'), (10, 'DH')], default=None, null=True)),
('sequence', models.PositiveSmallIntegerField(default=0, null=True)),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teamsnap.event')),
('member', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teamsnap.member')),
],
options={
'unique_together': {('member', 'event')},
},
),
]

View File

@@ -1,23 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 20:10
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0011_lineupentry'),
]
operations = [
migrations.AddField(
model_name='lineupentry',
name='name',
field=models.CharField(max_length=50, null=True),
),
migrations.AddField(
model_name='lineupentry',
name='teamsnap_id',
field=models.CharField(max_length=10, null=True, unique=True),
),
]

View File

@@ -1,17 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 20:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0012_auto_20211121_2010'),
]
operations = [
migrations.RemoveField(
model_name='lineupentry',
name='name',
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.6 on 2021-11-21 20:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0013_remove_lineupentry_name'),
]
operations = [
migrations.AlterField(
model_name='lineupentry',
name='teamsnap_id',
field=models.CharField(blank=True, max_length=10, null=True, unique=True),
),
]

View File

@@ -1,33 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-10 17:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0014_alter_lineupentry_teamsnap_id'),
]
operations = [
migrations.RenameField(
model_name='event',
old_name='bencoach_event',
new_name='benchcoach_event',
),
migrations.RenameField(
model_name='location',
old_name='bencoach_venue',
new_name='benchcoach_venue',
),
migrations.RenameField(
model_name='member',
old_name='bencoach_player',
new_name='benchcoach_player',
),
migrations.AlterField(
model_name='lineupentry',
name='sequence',
field=models.PositiveSmallIntegerField(blank=True, default=0, null=True),
),
]

View File

@@ -1,37 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-12 22:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0015_auto_20211210_1744'),
]
operations = [
migrations.RenameField(
model_name='availability',
old_name='benchcoach_availability',
new_name='benchcoach_object',
),
migrations.RenameField(
model_name='event',
old_name='benchcoach_event',
new_name='benchcoach_object',
),
migrations.RenameField(
model_name='location',
old_name='benchcoach_venue',
new_name='benchcoach_object',
),
migrations.RenameField(
model_name='member',
old_name='benchcoach_player',
new_name='benchcoach_object',
),
migrations.RemoveField(
model_name='event',
name='name',
),
]

View File

@@ -1,32 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-12 23:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0016_auto_20211212_2240'),
]
operations = [
migrations.RemoveField(
model_name='user',
name='access_token',
),
migrations.AddField(
model_name='user',
name='email',
field=models.EmailField(max_length=254, null=True),
),
migrations.AddField(
model_name='user',
name='first_name',
field=models.CharField(max_length=50, null=True),
),
migrations.AddField(
model_name='user',
name='last_name',
field=models.CharField(max_length=50, null=True),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-13 00:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0017_auto_20211212_2356'),
]
operations = [
migrations.AddField(
model_name='user',
name='managed_teams',
field=models.ManyToManyField(to='teamsnap.Team'),
),
]

View File

@@ -1,72 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 18:51
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('events', '0004_delete_availability'),
('teamsnap', '0018_user_managed_teams'),
]
operations = [
migrations.RenameField(
model_name='availability',
old_name='team',
new_name='managed_by_team',
),
migrations.RenameField(
model_name='event',
old_name='team',
new_name='managed_by_team',
),
migrations.RenameField(
model_name='member',
old_name='team',
new_name='managed_by_team',
),
migrations.RenameField(
model_name='team',
old_name='bencoach_team',
new_name='benchcoach_object',
),
migrations.AddField(
model_name='lineupentry',
name='managed_by_team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team'),
),
migrations.AddField(
model_name='location',
name='managed_by_team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team'),
),
migrations.AddField(
model_name='team',
name='managed_by_team',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team'),
),
migrations.AlterField(
model_name='event',
name='benchcoach_object',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnap_event', to='events.event'),
),
migrations.CreateModel(
name='Opponent',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('teamsnap_id', models.CharField(max_length=10, unique=True)),
('name', models.CharField(max_length=50, null=True)),
('managed_by_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team')),
],
options={
'abstract': False,
},
),
migrations.AlterField(
model_name='event',
name='opponent',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='opponent', to='teamsnap.opponent'),
),
]

View File

@@ -1,41 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 19:03
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0019_auto_20211216_1851'),
]
operations = [
migrations.RemoveField(
model_name='availability',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='event',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='location',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='member',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='opponent',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='team',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='user',
name='teamsnap_id',
),
]

View File

@@ -1,53 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 19:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0020_auto_20211216_1903'),
]
operations = [
migrations.AlterField(
model_name='availability',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='event',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='lineupentry',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='location',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='member',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='opponent',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='team',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='user',
name='id',
field=models.CharField(max_length=10, primary_key=True, serialize=False, unique=True),
),
]

View File

@@ -1,53 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 19:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0021_auto_20211216_1905'),
]
operations = [
migrations.AlterField(
model_name='availability',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='event',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='lineupentry',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='location',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='member',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='opponent',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='team',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
migrations.AlterField(
model_name='user',
name='id',
field=models.CharField(max_length=50, primary_key=True, serialize=False, unique=True),
),
]

View File

@@ -1,21 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 19:51
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0022_auto_20211216_1909'),
]
operations = [
migrations.RemoveField(
model_name='lineupentry',
name='teamsnap_id',
),
migrations.RemoveField(
model_name='team',
name='managed_by_team',
),
]

View File

@@ -1,109 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 23:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('teamsnap', '0023_auto_20211216_1951'),
]
operations = [
migrations.AddField(
model_name='availability',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='availability',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='event',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='event',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='lineupentry',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='lineupentry',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='location',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='location',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='member',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='member',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='opponent',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='opponent',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='team',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='team',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='user',
name='created_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
migrations.AddField(
model_name='user',
name='updated_at',
field=models.DateTimeField(default='2000-10-31T01:30:00.000-05:00'),
preserve_default=False,
),
]

View File

@@ -1,20 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-16 23:31
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('teams', '0001_initial'),
('teamsnap', '0024_auto_20211216_1703'),
]
operations = [
migrations.AddField(
model_name='opponent',
name='benchcoach_object',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teams.team'),
),
]

View File

@@ -1,100 +0,0 @@
# Generated by Django 3.2.6 on 2021-12-17 02:03
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('teams', '0001_initial'),
('teamsnap', '0025_opponent_benchcoach_object'),
]
operations = [
migrations.AlterField(
model_name='availability',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='availability',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='event',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='event',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='lineupentry',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='lineupentry',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='location',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='location',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='member',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='member',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='opponent',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='opponent',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='team',
name='benchcoach_object',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teamsnapteam', to='teams.team'),
),
migrations.AlterField(
model_name='team',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='team',
name='updated_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='user',
name='created_at',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='user',
name='updated_at',
field=models.DateTimeField(null=True),
),
]

View File

@@ -1,17 +1,14 @@
from django.db import models
import lineups.models
import teams.models
import venues.models
import players.models
import events.models
import benchcoach.models
import teamsnap.teamsnap.api
class TeamsnapBaseModel(models.Model):
type = None
id = models.CharField(max_length=50, unique=True, primary_key=True)
name = models.CharField(max_length=50, null=True)
created_at = models.DateTimeField(null=True)
updated_at = models.DateTimeField(null=True)
ApiObject = teamsnap.teamsnap.api.ApiObject
class Meta:
abstract = True
@@ -25,44 +22,124 @@ class TeamsnapBaseModel(models.Model):
class Team(TeamsnapBaseModel):
type = 'team'
managed_by_team = None
benchcoach_object = models.ForeignKey(teams.models.Team, null=True, on_delete=models.CASCADE,related_name="teamsnapteam")
name = models.CharField(max_length=50, null=True)
benchcoach_object = models.OneToOneField(
benchcoach.models.Team,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_team"
)
ApiObject = teamsnap.teamsnap.api.Team
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = ['id', 'name', 'created_at', 'updated_at']
data = {k: teamsnap_data[k] for k in fields}
team, created = cls.objects.update_or_create(**data)
return (team, created)
class User(TeamsnapBaseModel):
type = 'user'
name = None
first_name = models.CharField(max_length=50, null=True)
last_name = models.CharField(max_length = 50, null=True)
email = models.EmailField(null=True)
managed_teams = models.ManyToManyField(Team)
ApiObject = teamsnap.teamsnap.api.User
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = ['id', 'first_name', 'last_name', 'email']
user_data = {k:teamsnap_data[k] for k in fields}
managed_teams = []
for managed_team_id in teamsnap_data['managed_team_ids']:
obj, created = Team.objects.get_or_create(id=managed_team_id)
managed_teams.append(obj)
pass
user, created = cls.objects.update_or_create(**user_data)
user.managed_teams.add(*managed_teams)
return (user, created)
class TeamsnapManagedObjectModel(TeamsnapBaseModel):
managed_by_team = models.ForeignKey(Team, null=True, on_delete=models.CASCADE)
team = models.ForeignKey(
Team,
verbose_name="managed by team",
null=True,
on_delete=models.CASCADE,
)
class Meta:
abstract = True
@property
def url(self, endpoint='view'):
return f"https://go.teamsnap.com/{self.managed_by_team.id}/{self.type}/{endpoint}/{self.id}"
return f"https://go.teamsnap.com/{self.team.id}/{self.type}/{endpoint}/{self.id}"
class Opponent(TeamsnapManagedObjectModel):
type = 'opponent'
benchcoach_object = models.ForeignKey(teams.models.Team, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=50, null=True)
benchcoach_object = models.OneToOneField(
benchcoach.models.Team,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_opponent"
)
ApiObject = teamsnap.teamsnap.api.Opponent
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = ['id', 'name', 'created_at', 'updated_at']
opponent_data = {k: teamsnap_data[k] for k in fields}
team, created = Team.objects.get_or_create(id=teamsnap_data['team_id'])
opponent, created = cls.objects.update_or_create(**opponent_data)
opponent.team = team
return (opponent, created)
class Location(TeamsnapManagedObjectModel):
benchcoach_object = models.ForeignKey(venues.models.Venue, null=True, on_delete=models.CASCADE)
type = 'location'
name = models.CharField(max_length=50, null=True)
benchcoach_object = models.OneToOneField(
benchcoach.models.Venue,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_location"
)
ApiObject = teamsnap.teamsnap.api.Location
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = ['id', 'name', 'created_at', 'updated_at']
opponent_data = {k: teamsnap_data[k] for k in fields}
team, created = Team.objects.get_or_create(id=teamsnap_data['team_id'])
location, created = cls.objects.update_or_create(**opponent_data)
location.team = team
return (location, created)
class Member(TeamsnapManagedObjectModel):
# url format is
# f"https://go.teamsnap.com/{self.team.teamsnap_id}/roster/player/{self.teamsnap_id}"
# f"https://go.teamsnap.com/{self.team.teamsnap_id}/roster/edit/{self.teamsnap_id}"
type = 'member'
benchcoach_object = models.ForeignKey(players.models.Player, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=50, null=True)
benchcoach_object = models.OneToOneField(
benchcoach.models.Player,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_member"
)
first_name = models.CharField(max_length = 50, null=True)
last_name = models.CharField(max_length = 50, null=True)
jersey_number = models.IntegerField(null=True)
is_non_player = models.BooleanField()
ApiObject = teamsnap.teamsnap.api.Member
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = ['id', 'created_at', 'updated_at', 'first_name', 'last_name', 'jersey_number','is_non_player']
member_data = {k: teamsnap_data[k] for k in fields}
team, created = Team.objects.get_or_create(id=teamsnap_data['team_id'])
member, created = cls.objects.update_or_create(**member_data)
member.team = team
return (member, created)
def __str__(self):
return f"{self.last_name}, {self.first_name} ({self.id})"
@@ -76,8 +153,12 @@ class Event(TeamsnapManagedObjectModel):
# f"https://go.teamsnap.com/{self.team.teamsnap_id}/schedule/view_game/{self.teamsnap_id}"
# f"https://go.teamsnap.com/{self.team.teamsnap_id}/schedule/edit_game/{self.teamsnap_id}"
type = 'event'
name = None
benchcoach_object = models.ForeignKey(events.models.Event, null=True, on_delete=models.CASCADE, related_name ='teamsnap_event')
benchcoach_object = models.OneToOneField(
benchcoach.models.Event,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_event"
)
label = models.CharField(max_length = 50, null=True)
start_date = models.DateTimeField(null=True)
opponent = models.ForeignKey(Opponent, null=True, on_delete=models.CASCADE, related_name="opponent")
@@ -86,6 +167,33 @@ class Event(TeamsnapManagedObjectModel):
points_for_opponent = models.PositiveSmallIntegerField(null=True)
points_for_team = models.PositiveSmallIntegerField(null=True)
is_game = models.BooleanField()
game_type = models.CharField(max_length = 50, null=True)
ApiObject = teamsnap.teamsnap.api.Event
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = [
'id',
'created_at',
'updated_at',
'label',
'start_date',
'formatted_title',
'points_for_opponent',
'points_for_team',
'is_game',
'game_type'
]
event_data = {k: teamsnap_data[k] for k in fields}
location, created = Location.objects.get_or_create(id=teamsnap_data['location_id'])
team, created = Team.objects.get_or_create(id=teamsnap_data['team_id'])
event, created = cls.objects.update_or_create(**event_data)
event.location = location
if teamsnap_data['opponent_id']:
opponent, created = Opponent.objects.get_or_create(id=teamsnap_data['opponent_id'])
event.opponent = opponent
event.team = team
return (location, created)
def __str__(self):
return f"{self.formatted_title} ({self.id})"
@@ -101,11 +209,16 @@ class Availability(TeamsnapManagedObjectModel):
(MAYBE, 'Maybe'),
(UNKNOWN, 'Unknown')
]
name = None
event = models.ForeignKey(Event, null=True, on_delete=models.CASCADE)
member = models.ForeignKey(Member, null=True, on_delete=models.CASCADE)
benchcoach_object = models.ForeignKey(lineups.models.Availability, null=True, on_delete=models.CASCADE)
benchcoach_object = models.OneToOneField(
benchcoach.models.Availability,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_availability"
)
status_code = models.SmallIntegerField(null=True, choices=status_codes, default=None)
ApiObject = teamsnap.teamsnap.api.Availability
def __str__(self):
return f"{self.member} - {self.event} ({self.id})"
@@ -113,8 +226,25 @@ class Availability(TeamsnapManagedObjectModel):
class Meta:
verbose_name_plural = "availabilities"
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = [
'id',
'created_at',
'updated_at',
'status_code'
]
availability_data = {k: teamsnap_data[k] for k in fields}
member, created = Member.objects.get_or_create(id=teamsnap_data['member_id'])
team, created = Team.objects.get_or_create(id=teamsnap_data['team_id'])
event, created = Event.objects.get_or_create(id=teamsnap_data['event_id'])
availability, created = cls.objects.update_or_create(**availability_data)
availability.team = team
availability.event = event
availability.member = member
return (availability, created)
class LineupEntry(TeamsnapManagedObjectModel):
name = None
member = models.ForeignKey(Member, on_delete=models.CASCADE)
event = models.ForeignKey(Event, on_delete=models.CASCADE)
positions = [
@@ -130,8 +260,31 @@ class LineupEntry(TeamsnapManagedObjectModel):
(9, 'RF'),
(10,'DH')
]
benchcoach_object = models.OneToOneField(
benchcoach.models.Positioning,
null=True,
on_delete=models.CASCADE,
related_name="teamsnap_lineupentry"
)
label = models.PositiveSmallIntegerField(choices=positions, default=None, null=True, blank=True)
sequence = models.PositiveSmallIntegerField(default=0, null=True, blank=True)
ApiObject = teamsnap.teamsnap.api.EventLineupEntry
class Meta:
unique_together = ('member', 'event',)
@classmethod
def update_or_create_from_teamsnap_api(cls, teamsnap_data):
fields = [
'id',
'created_at',
'updated_at',
'label',
'sequence'
]
lineup_entry_data = {k: teamsnap_data[k] for k in fields}
member, created = Member.objects.get_or_create(id=teamsnap_data['member_id'])
team, created = Team.objects.get_or_create(id=teamsnap_data['team_id'])
event, created = Event.objects.get_or_create(id=teamsnap_data['event_id'])
lineup_entry, created = cls.objects.update_or_create(**lineup_entry_data)
lineup_entry.team = team
lineup_entry.event = event
lineup_entry.member = member
return (lineup_entry, created)