From 95697ef4fec2053fbda6db9a18d08405fd516033 Mon Sep 17 00:00:00 2001 From: Tony Date: Tue, 21 Dec 2021 17:14:52 -0600 Subject: [PATCH] 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 --- benchcoach/admin.py | 11 +- {teams => benchcoach}/apps.py | 4 +- benchcoach/fixtures/2021cmba.json | 4215 ++++++ {lineups => benchcoach}/forms.py | 28 +- benchcoach/migrations/0001_initial.py | 90 +- .../0002_alter_player_jersey_number.py | 18 + .../migrations/0002_user_teamsnap_user.py | 20 - .../migrations/0003_auto_20211213_0058.py | 29 - benchcoach/migrations/0004_profile_avatar.py | 18 - .../migrations/0005_alter_profile_avatar.py | 18 - .../migrations/0006_alter_profile_avatar.py | 18 - .../migrations/0007_teamsnapsettings.py | 23 - .../0008_alter_profile_teamsnap_user.py | 20 - benchcoach/models.py | 136 +- benchcoach/tests.py | 281 + benchcoach/urls.py | 39 +- benchcoach/views.py | 159 +- {events => benchcoachproject}/__init__.py | 0 benchcoachproject/admin.py | 6 + {benchcoach => benchcoachproject}/asgi.py | 2 +- .../fixtures/minimal.json | 2 +- benchcoachproject/migrations/0001_initial.py | 36 + .../0002_alter_profile_teamsnap_user.py | 20 + .../migrations/__init__.py | 0 benchcoachproject/models.py | 19 + {benchcoach => benchcoachproject}/settings.py | 21 +- .../static/benchcoach.svg | 0 .../static/css/base.css | 0 .../static/css/bootstrap-grid.css | 0 .../static/css/bootstrap-grid.css.map | 0 .../static/css/bootstrap-grid.min.css | 0 .../static/css/bootstrap-grid.min.css.map | 0 .../static/css/bootstrap-grid.rtl.css | 0 .../static/css/bootstrap-grid.rtl.css.map | 0 .../static/css/bootstrap-grid.rtl.min.css | 0 .../static/css/bootstrap-grid.rtl.min.css.map | 0 .../static/css/bootstrap-reboot.css | 0 .../static/css/bootstrap-reboot.css.map | 0 .../static/css/bootstrap-reboot.min.css | 0 .../static/css/bootstrap-reboot.min.css.map | 0 .../static/css/bootstrap-reboot.rtl.css | 0 .../static/css/bootstrap-reboot.rtl.css.map | 0 .../static/css/bootstrap-reboot.rtl.min.css | 0 .../css/bootstrap-reboot.rtl.min.css.map | 0 .../static/css/bootstrap-utilities.css | 0 .../static/css/bootstrap-utilities.css.map | 0 .../static/css/bootstrap-utilities.min.css | 0 .../css/bootstrap-utilities.min.css.map | 0 .../static/css/bootstrap-utilities.rtl.css | 0 .../css/bootstrap-utilities.rtl.css.map | 0 .../css/bootstrap-utilities.rtl.min.css | 0 .../css/bootstrap-utilities.rtl.min.css.map | 0 .../static/css/bootstrap.css | 0 .../static/css/bootstrap.css.map | 0 .../static/css/bootstrap.min.css | 0 .../static/css/bootstrap.min.css.map | 0 .../static/css/bootstrap.rtl.css | 0 .../static/css/bootstrap.rtl.css.map | 0 .../static/css/bootstrap.rtl.min.css | 0 .../static/css/bootstrap.rtl.min.css.map | 0 .../static/favicon.ico | Bin .../static/js/Sortable.js | 0 .../static/js/bootstrap.bundle.js | 0 .../static/js/bootstrap.bundle.js.map | 0 .../static/js/bootstrap.bundle.min.js | 0 .../static/js/bootstrap.bundle.min.js.map | 0 .../static/js/bootstrap.esm.js | 0 .../static/js/bootstrap.esm.js.map | 0 .../static/js/bootstrap.esm.min.js | 0 .../static/js/bootstrap.esm.min.js.map | 0 .../static/js/bootstrap.js | 0 .../static/js/bootstrap.js.map | 0 .../static/js/bootstrap.min.js | 0 .../static/js/bootstrap.min.js.map | 0 .../static/tommy-lasorda.jpg | Bin benchcoachproject/urls.py | 29 + benchcoachproject/views.py | 31 + {benchcoach => benchcoachproject}/wsgi.py | 2 +- events/admin.py | 7 - events/apps.py | 6 - events/fixtures/2021cmba.json | 412 - events/fixtures/blaseball.yaml | 245 - events/forms.py | 7 - events/migrations/0001_initial.py | 60 - .../0002_alter_availability_options.py | 17 - events/migrations/0003_delete_positioning.py | 16 - events/migrations/0004_delete_availability.py | 16 - events/models.py | 16 - events/tests.py | 80 - events/urls.py | 12 - events/views.py | 34 - lineups/__init__.py | 0 lineups/admin.py | 6 - lineups/apps.py | 6 - lineups/fixtures/2021cmba.json | 12577 ---------------- lineups/migrations/0001_initial.py | 30 - lineups/migrations/0002_availability.py | 29 - .../0003_alter_availability_available.py | 18 - .../0004_alter_availability_available.py | 18 - .../0005_alter_positioning_position.py | 18 - .../0006_alter_positioning_order.py | 18 - .../0007_alter_positioning_position.py | 18 - .../0008_alter_positioning_order.py | 18 - lineups/migrations/__init__.py | 0 lineups/models.py | 52 - lineups/tests.py | 52 - lineups/urls.py | 9 - lineups/views.py | 96 - manage.py | 2 +- players/admin.py | 6 - players/apps.py | 6 - players/fixtures/2021cmba.json | 477 - players/fixtures/blaseball.yaml | 98 - players/forms.py | 7 - players/migrations/0001_initial.py | 37 - .../migrations/0002_rename_stat_statline.py | 17 - players/migrations/0003_player_team.py | 20 - players/migrations/__init__.py | 0 players/models.py | 32 - players/tests.py | 58 - players/urls.py | 12 - players/views.py | 27 - teams/__init__.py | 0 teams/admin.py | 5 - teams/fixtures/2021cmba.json | 82 - teams/fixtures/blaseball.yaml | 96 - teams/forms.py | 7 - teams/migrations/0001_initial.py | 23 - teams/migrations/__init__.py | 0 teams/models.py | 9 - teams/tests.py | 41 - teams/urls.py | 12 - teams/views.py | 22 - teamsnap/forms.py | 5 +- .../migrations/0002_auto_20211121_0035.py | 43 - teamsnap/migrations/0002_event_game_type.py | 18 + .../migrations/0003_auto_20211121_1540.py | 60 - .../migrations/0003_auto_20211219_2058.py | 108 + .../migrations/0004_remove_member_name.py | 17 - teamsnap/migrations/0005_availability.py | 30 - .../0006_alter_availability_status_code.py | 18 - .../migrations/0007_auto_20211121_1628.py | 24 - .../0008_alter_availability_options.py | 17 - .../migrations/0009_auto_20211121_1757.py | 23 - teamsnap/migrations/0010_event_is_game.py | 19 - teamsnap/migrations/0011_lineupentry.py | 27 - .../migrations/0012_auto_20211121_2010.py | 23 - .../0013_remove_lineupentry_name.py | 17 - .../0014_alter_lineupentry_teamsnap_id.py | 18 - .../migrations/0015_auto_20211210_1744.py | 33 - .../migrations/0016_auto_20211212_2240.py | 37 - .../migrations/0017_auto_20211212_2356.py | 32 - .../migrations/0018_user_managed_teams.py | 18 - .../migrations/0019_auto_20211216_1851.py | 72 - .../migrations/0020_auto_20211216_1903.py | 41 - .../migrations/0021_auto_20211216_1905.py | 53 - .../migrations/0022_auto_20211216_1909.py | 53 - .../migrations/0023_auto_20211216_1951.py | 21 - .../migrations/0024_auto_20211216_1703.py | 109 - .../0025_opponent_benchcoach_object.py | 20 - .../migrations/0026_auto_20211216_2003.py | 100 - teamsnap/models.py | 195 +- venues/__init__.py | 0 venues/admin.py | 5 - venues/apps.py | 6 - venues/fixtures/2021cmba.json | 149 - venues/fixtures/blaseball.yaml | 100 - venues/forms.py | 7 - venues/migrations/0001_initial.py | 21 - venues/migrations/__init__.py | 0 venues/models.py | 7 - venues/tests.py | 40 - venues/urls.py | 10 - venues/views.py | 22 - 174 files changed, 5351 insertions(+), 16551 deletions(-) rename {teams => benchcoach}/apps.py (61%) create mode 100644 benchcoach/fixtures/2021cmba.json rename {lineups => benchcoach}/forms.py (65%) create mode 100644 benchcoach/migrations/0002_alter_player_jersey_number.py delete mode 100644 benchcoach/migrations/0002_user_teamsnap_user.py delete mode 100644 benchcoach/migrations/0003_auto_20211213_0058.py delete mode 100644 benchcoach/migrations/0004_profile_avatar.py delete mode 100644 benchcoach/migrations/0005_alter_profile_avatar.py delete mode 100644 benchcoach/migrations/0006_alter_profile_avatar.py delete mode 100644 benchcoach/migrations/0007_teamsnapsettings.py delete mode 100644 benchcoach/migrations/0008_alter_profile_teamsnap_user.py create mode 100644 benchcoach/tests.py rename {events => benchcoachproject}/__init__.py (100%) create mode 100644 benchcoachproject/admin.py rename {benchcoach => benchcoachproject}/asgi.py (80%) rename {benchcoach => benchcoachproject}/fixtures/minimal.json (99%) create mode 100644 benchcoachproject/migrations/0001_initial.py create mode 100644 benchcoachproject/migrations/0002_alter_profile_teamsnap_user.py rename {events => benchcoachproject}/migrations/__init__.py (100%) create mode 100644 benchcoachproject/models.py rename {benchcoach => benchcoachproject}/settings.py (89%) rename {benchcoach => benchcoachproject}/static/benchcoach.svg (100%) rename {benchcoach => benchcoachproject}/static/css/base.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.rtl.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.rtl.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.rtl.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-grid.rtl.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.rtl.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.rtl.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.rtl.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-reboot.rtl.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.rtl.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.rtl.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.rtl.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap-utilities.rtl.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.rtl.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.rtl.css.map (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.rtl.min.css (100%) rename {benchcoach => benchcoachproject}/static/css/bootstrap.rtl.min.css.map (100%) rename {benchcoach => benchcoachproject}/static/favicon.ico (100%) rename {benchcoach => benchcoachproject}/static/js/Sortable.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.bundle.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.bundle.js.map (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.bundle.min.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.bundle.min.js.map (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.esm.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.esm.js.map (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.esm.min.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.esm.min.js.map (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.js.map (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.min.js (100%) rename {benchcoach => benchcoachproject}/static/js/bootstrap.min.js.map (100%) rename {benchcoach => benchcoachproject}/static/tommy-lasorda.jpg (100%) create mode 100644 benchcoachproject/urls.py create mode 100644 benchcoachproject/views.py rename {benchcoach => benchcoachproject}/wsgi.py (80%) delete mode 100644 events/admin.py delete mode 100644 events/apps.py delete mode 100644 events/fixtures/2021cmba.json delete mode 100644 events/fixtures/blaseball.yaml delete mode 100644 events/forms.py delete mode 100644 events/migrations/0001_initial.py delete mode 100644 events/migrations/0002_alter_availability_options.py delete mode 100644 events/migrations/0003_delete_positioning.py delete mode 100644 events/migrations/0004_delete_availability.py delete mode 100644 events/models.py delete mode 100644 events/tests.py delete mode 100644 events/urls.py delete mode 100644 events/views.py delete mode 100644 lineups/__init__.py delete mode 100644 lineups/admin.py delete mode 100644 lineups/apps.py delete mode 100644 lineups/fixtures/2021cmba.json delete mode 100644 lineups/migrations/0001_initial.py delete mode 100644 lineups/migrations/0002_availability.py delete mode 100644 lineups/migrations/0003_alter_availability_available.py delete mode 100644 lineups/migrations/0004_alter_availability_available.py delete mode 100644 lineups/migrations/0005_alter_positioning_position.py delete mode 100644 lineups/migrations/0006_alter_positioning_order.py delete mode 100644 lineups/migrations/0007_alter_positioning_position.py delete mode 100644 lineups/migrations/0008_alter_positioning_order.py delete mode 100644 lineups/migrations/__init__.py delete mode 100644 lineups/models.py delete mode 100644 lineups/tests.py delete mode 100644 lineups/urls.py delete mode 100644 lineups/views.py delete mode 100644 players/admin.py delete mode 100644 players/apps.py delete mode 100644 players/fixtures/2021cmba.json delete mode 100644 players/fixtures/blaseball.yaml delete mode 100644 players/forms.py delete mode 100644 players/migrations/0001_initial.py delete mode 100644 players/migrations/0002_rename_stat_statline.py delete mode 100644 players/migrations/0003_player_team.py delete mode 100644 players/migrations/__init__.py delete mode 100644 players/models.py delete mode 100644 players/tests.py delete mode 100644 players/urls.py delete mode 100644 players/views.py delete mode 100644 teams/__init__.py delete mode 100644 teams/admin.py delete mode 100644 teams/fixtures/2021cmba.json delete mode 100644 teams/fixtures/blaseball.yaml delete mode 100644 teams/forms.py delete mode 100644 teams/migrations/0001_initial.py delete mode 100644 teams/migrations/__init__.py delete mode 100644 teams/models.py delete mode 100644 teams/tests.py delete mode 100644 teams/urls.py delete mode 100644 teams/views.py delete mode 100644 teamsnap/migrations/0002_auto_20211121_0035.py create mode 100644 teamsnap/migrations/0002_event_game_type.py delete mode 100644 teamsnap/migrations/0003_auto_20211121_1540.py create mode 100644 teamsnap/migrations/0003_auto_20211219_2058.py delete mode 100644 teamsnap/migrations/0004_remove_member_name.py delete mode 100644 teamsnap/migrations/0005_availability.py delete mode 100644 teamsnap/migrations/0006_alter_availability_status_code.py delete mode 100644 teamsnap/migrations/0007_auto_20211121_1628.py delete mode 100644 teamsnap/migrations/0008_alter_availability_options.py delete mode 100644 teamsnap/migrations/0009_auto_20211121_1757.py delete mode 100644 teamsnap/migrations/0010_event_is_game.py delete mode 100644 teamsnap/migrations/0011_lineupentry.py delete mode 100644 teamsnap/migrations/0012_auto_20211121_2010.py delete mode 100644 teamsnap/migrations/0013_remove_lineupentry_name.py delete mode 100644 teamsnap/migrations/0014_alter_lineupentry_teamsnap_id.py delete mode 100644 teamsnap/migrations/0015_auto_20211210_1744.py delete mode 100644 teamsnap/migrations/0016_auto_20211212_2240.py delete mode 100644 teamsnap/migrations/0017_auto_20211212_2356.py delete mode 100644 teamsnap/migrations/0018_user_managed_teams.py delete mode 100644 teamsnap/migrations/0019_auto_20211216_1851.py delete mode 100644 teamsnap/migrations/0020_auto_20211216_1903.py delete mode 100644 teamsnap/migrations/0021_auto_20211216_1905.py delete mode 100644 teamsnap/migrations/0022_auto_20211216_1909.py delete mode 100644 teamsnap/migrations/0023_auto_20211216_1951.py delete mode 100644 teamsnap/migrations/0024_auto_20211216_1703.py delete mode 100644 teamsnap/migrations/0025_opponent_benchcoach_object.py delete mode 100644 teamsnap/migrations/0026_auto_20211216_2003.py delete mode 100644 venues/__init__.py delete mode 100644 venues/admin.py delete mode 100644 venues/apps.py delete mode 100644 venues/fixtures/2021cmba.json delete mode 100644 venues/fixtures/blaseball.yaml delete mode 100644 venues/forms.py delete mode 100644 venues/migrations/0001_initial.py delete mode 100644 venues/migrations/__init__.py delete mode 100644 venues/models.py delete mode 100644 venues/tests.py delete mode 100644 venues/urls.py delete mode 100644 venues/views.py diff --git a/benchcoach/admin.py b/benchcoach/admin.py index 0a853f9..68e28a6 100644 --- a/benchcoach/admin.py +++ b/benchcoach/admin.py @@ -1,6 +1,11 @@ from django.contrib import admin -from .models import Profile, TeamsnapSettings +from .models import Event, Availability, Positioning, Team, Venue, Player, StatLine # Register your models here. -admin.site.register(Profile) -admin.site.register(TeamsnapSettings) +admin.site.register(Event) +admin.site.register(Availability) +admin.site.register(Positioning) +admin.site.register(Team) +admin.site.register(Venue) +admin.site.register(Player) +admin.site.register(StatLine) \ No newline at end of file diff --git a/teams/apps.py b/benchcoach/apps.py similarity index 61% rename from teams/apps.py rename to benchcoach/apps.py index 274d77f..9e1633d 100644 --- a/teams/apps.py +++ b/benchcoach/apps.py @@ -1,6 +1,6 @@ from django.apps import AppConfig -class TeamsConfig(AppConfig): +class BenchcoachConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' - name = 'teams' + name = 'benchcoach' diff --git a/benchcoach/fixtures/2021cmba.json b/benchcoach/fixtures/2021cmba.json new file mode 100644 index 0000000..d848de8 --- /dev/null +++ b/benchcoach/fixtures/2021cmba.json @@ -0,0 +1,4215 @@ +[ + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-03-11 17:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-03-21 13:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 18, + "away_team_id": 5, + "home_team_id": null, + "start": "2021-03-28 16:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 5, + "home_team_id": 10, + "start": "2021-04-03 12:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 18, + "away_team_id": 5, + "home_team_id": 10, + "start": "2021-04-11 10:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 5, + "home_team_id": 4, + "start": "2021-04-17 10:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 5, + "home_team_id": 8, + "start": "2021-04-24 10:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-04-27 17:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 1, + "home_team_id": 5, + "start": "2021-05-01 12:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 7, + "away_team_id": 7, + "home_team_id": 5, + "start": "2021-05-02 10:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 4, + "away_team_id": 5, + "home_team_id": 9, + "start": "2021-05-06 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 4, + "away_team_id": 8, + "home_team_id": 5, + "start": "2021-05-08 12:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 2, + "away_team_id": null, + "home_team_id": null, + "start": "2021-05-11 17:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 16, + "away_team_id": 5, + "home_team_id": 6, + "start": "2021-05-16 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 4, + "away_team_id": 5, + "home_team_id": 3, + "start": "2021-05-21 19:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 7, + "away_team_id": 5, + "home_team_id": 8, + "start": "2021-05-22 12:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 5, + "home_team_id": 7, + "start": "2021-05-23 10:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 5, + "home_team_id": 1, + "start": "2021-05-30 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 2, + "home_team_id": 5, + "start": "2021-06-01 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 9, + "home_team_id": 5, + "start": "2021-06-03 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 7, + "away_team_id": 5, + "home_team_id": 9, + "start": "2021-06-05 12:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 7, + "home_team_id": 5, + "start": "2021-06-06 10:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 4, + "away_team_id": 5, + "home_team_id": 4, + "start": "2021-06-10 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 16, + "away_team_id": 1, + "home_team_id": 5, + "start": "2021-06-13 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": 3, + "home_team_id": 5, + "start": "2021-06-15 19:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-06-18 20:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 21, + "away_team_id": 10, + "home_team_id": 5, + "start": "2021-06-19 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 4, + "away_team_id": 5, + "home_team_id": 10, + "start": "2021-06-19 12:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-06-23 20:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-06-25 19:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 1, + "away_team_id": null, + "home_team_id": null, + "start": "2021-06-27 16:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 4, + "away_team_id": 5, + "home_team_id": 2, + "start": "2021-07-08 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 2, + "away_team_id": 4, + "home_team_id": 5, + "start": "2021-07-10 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 19, + "away_team_id": 4, + "home_team_id": 5, + "start": "2021-07-11 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 16, + "away_team_id": 10, + "home_team_id": 5, + "start": "2021-07-13 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 2, + "away_team_id": 5, + "home_team_id": 2, + "start": "2021-07-15 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 20, + "away_team_id": 5, + "home_team_id": 6, + "start": "2021-07-18 9:30:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 5, + "away_team_id": 8, + "home_team_id": 5, + "start": "2021-07-21 20:00:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 3, + "away_team_id": 5, + "home_team_id": 3, + "start": "2021-07-22 19:15:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 5, + "away_team_id": 6, + "home_team_id": 5, + "start": "2021-07-29 17:50:00" + } + }, + { + "model": "benchcoach.event", + "pk": null, + "fields": { + "venue_id": 5, + "away_team_id": 1, + "home_team_id": 5, + "start": "2021-07-31 9:30:00" + } + }, + + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Browns", + "image": "images/browns.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "DegenerateX", + "image": "images/ramriez.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Dodgers", + "image": "images/dodgers.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Electrons", + "image": "images/electrons.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Hounds", + "image": "images/hounds.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Marlins", + "image": "images/marlins.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Orioles", + "image": "images/orioles.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Trojans", + "image": "images/trojans.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "Vikings", + "image": "images/vikings.svg" + } + }, + { + "model": "benchcoach.team", + "pk": null, + "fields": { + "name": "White Sox", + "image": "images/whitesox.svg" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Tony", + "jersey_number": 13, + "last_name": "Correa" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Tim", + "jersey_number": 8, + "last_name": "Riggenbach" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Thomas", + "jersey_number": 44, + "last_name": "Feazelle" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Philip", + "jersey_number": 25, + "last_name": "Oweimrin" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Phil", + "jersey_number": 21, + "last_name": "Zelenka" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Nick", + "jersey_number": 23, + "last_name": "Schmidt" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Mike", + "jersey_number": 28, + "last_name": "DiCola" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Max", + "jersey_number": 99, + "last_name": "Kiefer" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Matthew", + "jersey_number": 5, + "last_name": "Steffens" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Matt", + "jersey_number": 6, + "last_name": "Burch" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Jules", + "jersey_number": 34, + "last_name": "Cantor" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "John", + "jersey_number": 34, + "last_name": "Lundgren" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Joe", + "jersey_number": 17, + "last_name": "Malafronte" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Hans", + "jersey_number": 18, + "last_name": "Hetrick" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Greg", + "jersey_number": 19, + "last_name": "Sells" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Garrett", + "jersey_number": 17, + "last_name": "Eddy" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Cole", + "jersey_number": 24, + "last_name": "Thompson" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Brian", + "jersey_number": 2, + "last_name": "Lehman" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Brent", + "jersey_number": 27, + "last_name": "Fukushima" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Brandon", + "jersey_number": 3, + "last_name": "Jessee" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Brad", + "jersey_number": 15, + "last_name": "Halperin" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Arron", + "jersey_number": 11, + "last_name": "Kruse" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Amanda", + "jersey_number": 41, + "last_name": "Mordacq" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Alec", + "jersey_number": 14, + "last_name": "Reinke" + } + }, + { + "model": "benchcoach.player", + "pk": null, + "fields": { + "first_name": "Adrien", + "jersey_number": 45, + "last_name": "Kelly" + } + }, + { + "model": "benchcoach.positioning", + "pk": 1, + "fields": { + "player": 18, + "event": 9, + "position": "LF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 2, + "fields": { + "player": 19, + "event": 9, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 3, + "fields": { + "player": 22, + "event": 9, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 4, + "fields": { + "player": 10, + "event": 9, + "position": "1B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 5, + "fields": { + "player": 15, + "event": 9, + "position": "2B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 6, + "fields": { + "player": 5, + "event": 9, + "position": "RF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 7, + "fields": { + "player": 2, + "event": 9, + "position": "P", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 8, + "fields": { + "player": 20, + "event": 9, + "position": "CF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 9, + "fields": { + "player": 1, + "event": 9, + "position": "C", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 10, + "fields": { + "player": 11, + "event": 9, + "position": "EH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 11, + "fields": { + "player": 11, + "event": 10, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 12, + "fields": { + "player": 18, + "event": 10, + "position": "CF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 13, + "fields": { + "player": 19, + "event": 10, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 14, + "fields": { + "player": 22, + "event": 10, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 15, + "fields": { + "player": 2, + "event": 10, + "position": "EH", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 16, + "fields": { + "player": 8, + "event": 10, + "position": "1B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 17, + "fields": { + "player": 5, + "event": 10, + "position": "LF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 18, + "fields": { + "player": 10, + "event": 10, + "position": "DH", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 19, + "fields": { + "player": 15, + "event": 10, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 20, + "fields": { + "player": 14, + "event": 10, + "position": "2B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 21, + "fields": { + "player": 1, + "event": 10, + "position": "C", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 22, + "fields": { + "player": 4, + "event": 10, + "position": "RF", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 23, + "fields": { + "player": 7, + "event": 11, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 24, + "fields": { + "player": 18, + "event": 11, + "position": "RF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 25, + "fields": { + "player": 16, + "event": 11, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 26, + "fields": { + "player": 22, + "event": 11, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 27, + "fields": { + "player": 2, + "event": 11, + "position": "LF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 28, + "fields": { + "player": 8, + "event": 11, + "position": "1B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 29, + "fields": { + "player": 15, + "event": 11, + "position": "SS", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 30, + "fields": { + "player": 13, + "event": 11, + "position": "2B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 31, + "fields": { + "player": 5, + "event": 11, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 32, + "fields": { + "player": 1, + "event": 11, + "position": "C", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 33, + "fields": { + "player": 4, + "event": 11, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 34, + "fields": { + "player": 11, + "event": 12, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 35, + "fields": { + "player": 18, + "event": 12, + "position": "EH", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 36, + "fields": { + "player": 19, + "event": 12, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 37, + "fields": { + "player": 22, + "event": 12, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 38, + "fields": { + "player": 10, + "event": 12, + "position": "1B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 39, + "fields": { + "player": 2, + "event": 12, + "position": "EH", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 40, + "fields": { + "player": 5, + "event": 12, + "position": "LF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 41, + "fields": { + "player": 20, + "event": 12, + "position": "CF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 42, + "fields": { + "player": 3, + "event": 12, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 43, + "fields": { + "player": 8, + "event": 12, + "position": "DH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 44, + "fields": { + "player": 1, + "event": 12, + "position": "C", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 45, + "fields": { + "player": 4, + "event": 12, + "position": "RF", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 46, + "fields": { + "player": 24, + "event": 14, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 47, + "fields": { + "player": 18, + "event": 14, + "position": "2B", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 48, + "fields": { + "player": 6, + "event": 14, + "position": "DH", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 49, + "fields": { + "player": 19, + "event": 14, + "position": "SS", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 50, + "fields": { + "player": 22, + "event": 14, + "position": "3B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 51, + "fields": { + "player": 2, + "event": 14, + "position": "LF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 52, + "fields": { + "player": 13, + "event": 14, + "position": "RF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 53, + "fields": { + "player": 8, + "event": 14, + "position": "1B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 54, + "fields": { + "player": 20, + "event": 14, + "position": "CF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 55, + "fields": { + "player": 9, + "event": 14, + "position": "EH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 56, + "fields": { + "player": 1, + "event": 14, + "position": "C", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 57, + "fields": { + "player": 11, + "event": 14, + "position": "EH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 58, + "fields": { + "player": 7, + "event": 15, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 59, + "fields": { + "player": 18, + "event": 15, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 60, + "fields": { + "player": 19, + "event": 15, + "position": "EH", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 61, + "fields": { + "player": 22, + "event": 15, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 62, + "fields": { + "player": 6, + "event": 15, + "position": "DH", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 63, + "fields": { + "player": 10, + "event": 15, + "position": "1B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 64, + "fields": { + "player": 2, + "event": 15, + "position": "LF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 65, + "fields": { + "player": 1, + "event": 15, + "position": "C", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 66, + "fields": { + "player": 20, + "event": 15, + "position": "CF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 67, + "fields": { + "player": 15, + "event": 15, + "position": "RF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 68, + "fields": { + "player": 12, + "event": 15, + "position": "2B", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 69, + "fields": { + "player": 14, + "event": 15, + "position": "EH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 70, + "fields": { + "player": 11, + "event": 16, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 71, + "fields": { + "player": 16, + "event": 16, + "position": "CF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 72, + "fields": { + "player": 18, + "event": 16, + "position": "C", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 73, + "fields": { + "player": 19, + "event": 16, + "position": "SS", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 74, + "fields": { + "player": 22, + "event": 16, + "position": "EH", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 75, + "fields": { + "player": 10, + "event": 16, + "position": "EH", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 76, + "fields": { + "player": 13, + "event": 16, + "position": "3B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 77, + "fields": { + "player": 5, + "event": 16, + "position": "LF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 78, + "fields": { + "player": 12, + "event": 16, + "position": "DH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 79, + "fields": { + "player": 9, + "event": 16, + "position": "2B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 80, + "fields": { + "player": 17, + "event": 16, + "position": "RF", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 81, + "fields": { + "player": 24, + "event": 16, + "position": "1B", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 82, + "fields": { + "player": 2, + "event": 17, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 83, + "fields": { + "player": 18, + "event": 17, + "position": "3B", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 84, + "fields": { + "player": 13, + "event": 17, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 85, + "fields": { + "player": 22, + "event": 17, + "position": "EH", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 86, + "fields": { + "player": 6, + "event": 17, + "position": "CF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 87, + "fields": { + "player": 10, + "event": 17, + "position": "EH", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 88, + "fields": { + "player": 14, + "event": 17, + "position": "1B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 89, + "fields": { + "player": 1, + "event": 17, + "position": "C", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 90, + "fields": { + "player": 5, + "event": 17, + "position": "LF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 91, + "fields": { + "player": 3, + "event": 17, + "position": "2B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 92, + "fields": { + "player": 11, + "event": 17, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 93, + "fields": { + "player": 4, + "event": 17, + "position": "RF", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 94, + "fields": { + "player": 24, + "event": 18, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 95, + "fields": { + "player": 15, + "event": 18, + "position": "3B", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 96, + "fields": { + "player": 2, + "event": 18, + "position": "RF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 97, + "fields": { + "player": 19, + "event": 18, + "position": "SS", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 98, + "fields": { + "player": 10, + "event": 18, + "position": "1B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 99, + "fields": { + "player": 18, + "event": 18, + "position": "2B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 100, + "fields": { + "player": 20, + "event": 18, + "position": "CF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 101, + "fields": { + "player": 6, + "event": 18, + "position": "LF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 102, + "fields": { + "player": 1, + "event": 18, + "position": "C", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 103, + "fields": { + "player": 5, + "event": 18, + "position": "EH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 104, + "fields": { + "player": 7, + "event": 18, + "position": "EH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 105, + "fields": { + "player": 14, + "event": 18, + "position": "DH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 106, + "fields": { + "player": 7, + "event": 19, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 107, + "fields": { + "player": 13, + "event": 19, + "position": "LF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 108, + "fields": { + "player": 2, + "event": 19, + "position": "C", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 109, + "fields": { + "player": 6, + "event": 19, + "position": "DH", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 110, + "fields": { + "player": 10, + "event": 19, + "position": "1B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 111, + "fields": { + "player": 5, + "event": 19, + "position": "CF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 112, + "fields": { + "player": 18, + "event": 19, + "position": "3B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 113, + "fields": { + "player": 22, + "event": 19, + "position": "SS", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 114, + "fields": { + "player": 15, + "event": 19, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 115, + "fields": { + "player": 9, + "event": 19, + "position": "EH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 116, + "fields": { + "player": 17, + "event": 19, + "position": "RF", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 117, + "fields": { + "player": 23, + "event": 19, + "position": "2B", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 118, + "fields": { + "player": 2, + "event": 20, + "position": "P", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 119, + "fields": { + "player": 19, + "event": 20, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 120, + "fields": { + "player": 22, + "event": 20, + "position": "3B", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 121, + "fields": { + "player": 5, + "event": 20, + "position": "RF", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 122, + "fields": { + "player": 18, + "event": 20, + "position": "EH", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 123, + "fields": { + "player": 1, + "event": 20, + "position": "C", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 124, + "fields": { + "player": 6, + "event": 20, + "position": "CF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 125, + "fields": { + "player": 8, + "event": 20, + "position": "1B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 126, + "fields": { + "player": 9, + "event": 20, + "position": "2B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 127, + "fields": { + "player": 4, + "event": 20, + "position": "EH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 128, + "fields": { + "player": 24, + "event": 20, + "position": "LF", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 129, + "fields": { + "player": 11, + "event": 21, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 130, + "fields": { + "player": 2, + "event": 21, + "position": "EH", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 131, + "fields": { + "player": 22, + "event": 21, + "position": "DH", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 132, + "fields": { + "player": 18, + "event": 21, + "position": "SS", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 133, + "fields": { + "player": 15, + "event": 21, + "position": "3B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 134, + "fields": { + "player": 10, + "event": 21, + "position": "1B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 135, + "fields": { + "player": 5, + "event": 21, + "position": "LF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 136, + "fields": { + "player": 9, + "event": 21, + "position": "2B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 137, + "fields": { + "player": 6, + "event": 21, + "position": "CF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 138, + "fields": { + "player": 1, + "event": 21, + "position": "C", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 139, + "fields": { + "player": 4, + "event": 21, + "position": "RF", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 140, + "fields": { + "player": 15, + "event": 23, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 141, + "fields": { + "player": 10, + "event": 23, + "position": "1B", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 142, + "fields": { + "player": 22, + "event": 23, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 143, + "fields": { + "player": 18, + "event": 23, + "position": "LF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 144, + "fields": { + "player": 16, + "event": 23, + "position": "CF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 145, + "fields": { + "player": 5, + "event": 23, + "position": "RF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 146, + "fields": { + "player": 1, + "event": 23, + "position": "C", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 147, + "fields": { + "player": 9, + "event": 23, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 148, + "fields": { + "player": 8, + "event": 23, + "position": "DH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 149, + "fields": { + "player": 14, + "event": 23, + "position": "EH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 150, + "fields": { + "player": 4, + "event": 23, + "position": "EH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 151, + "fields": { + "player": 11, + "event": 24, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 152, + "fields": { + "player": 18, + "event": 24, + "position": "EH", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 153, + "fields": { + "player": 15, + "event": 24, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 154, + "fields": { + "player": 22, + "event": 24, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 155, + "fields": { + "player": 6, + "event": 24, + "position": "LF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 156, + "fields": { + "player": 1, + "event": 24, + "position": "C", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 157, + "fields": { + "player": 5, + "event": 24, + "position": "2B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 158, + "fields": { + "player": 14, + "event": 24, + "position": "1B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 159, + "fields": { + "player": 4, + "event": 24, + "position": "RF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 160, + "fields": { + "player": 20, + "event": 24, + "position": "CF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 161, + "fields": { + "player": 23, + "event": 24, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 162, + "fields": { + "player": 2, + "event": 25, + "position": "P", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 163, + "fields": { + "player": 16, + "event": 25, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 164, + "fields": { + "player": 22, + "event": 25, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 165, + "fields": { + "player": 15, + "event": 25, + "position": "C", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 166, + "fields": { + "player": 13, + "event": 25, + "position": "2B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 167, + "fields": { + "player": 18, + "event": 25, + "position": "SS", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 168, + "fields": { + "player": 10, + "event": 25, + "position": "1B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 169, + "fields": { + "player": 5, + "event": 25, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 170, + "fields": { + "player": 17, + "event": 25, + "position": "LF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 171, + "fields": { + "player": 4, + "event": 25, + "position": "RF", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 172, + "fields": { + "player": 12, + "event": 25, + "position": "EH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 173, + "fields": { + "player": 24, + "event": 27, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 174, + "fields": { + "player": 18, + "event": 27, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 175, + "fields": { + "player": 15, + "event": 27, + "position": "C", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 176, + "fields": { + "player": 2, + "event": 27, + "position": "EH", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 177, + "fields": { + "player": 16, + "event": 27, + "position": "CF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 178, + "fields": { + "player": 5, + "event": 27, + "position": "3B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 179, + "fields": { + "player": 8, + "event": 27, + "position": "1B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 180, + "fields": { + "player": 17, + "event": 27, + "position": "LF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 181, + "fields": { + "player": 4, + "event": 27, + "position": "RF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 182, + "fields": { + "player": 23, + "event": 27, + "position": "2B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 183, + "fields": { + "player": 25, + "event": 27, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 184, + "fields": { + "player": 18, + "event": 28, + "position": "LF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 185, + "fields": { + "player": 15, + "event": 28, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 186, + "fields": { + "player": 2, + "event": 28, + "position": "P", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 187, + "fields": { + "player": 5, + "event": 28, + "position": "C", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 188, + "fields": { + "player": 8, + "event": 28, + "position": "3B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 189, + "fields": { + "player": 17, + "event": 28, + "position": "CF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 190, + "fields": { + "player": 4, + "event": 28, + "position": "RF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 191, + "fields": { + "player": 25, + "event": 28, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 192, + "fields": { + "player": 23, + "event": 28, + "position": "EH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 193, + "fields": { + "player": 24, + "event": 28, + "position": "1B", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 194, + "fields": { + "player": 25, + "event": 32, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 195, + "fields": { + "player": 15, + "event": 32, + "position": "C", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 196, + "fields": { + "player": 16, + "event": 32, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 197, + "fields": { + "player": 22, + "event": 32, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 198, + "fields": { + "player": 19, + "event": 32, + "position": "SS", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 199, + "fields": { + "player": 18, + "event": 32, + "position": "LF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 200, + "fields": { + "player": 13, + "event": 32, + "position": "RF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 201, + "fields": { + "player": 5, + "event": 32, + "position": "2B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 202, + "fields": { + "player": 17, + "event": 32, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 203, + "fields": { + "player": 8, + "event": 32, + "position": "1B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 204, + "fields": { + "player": 2, + "event": 32, + "position": "EH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 205, + "fields": { + "player": 4, + "event": 32, + "position": "DH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 206, + "fields": { + "player": 19, + "event": 33, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 207, + "fields": { + "player": 16, + "event": 33, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 208, + "fields": { + "player": 22, + "event": 33, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 209, + "fields": { + "player": 2, + "event": 33, + "position": "RF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 210, + "fields": { + "player": 18, + "event": 33, + "position": "C", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 211, + "fields": { + "player": 10, + "event": 33, + "position": "EH", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 212, + "fields": { + "player": 20, + "event": 33, + "position": "2B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 213, + "fields": { + "player": 17, + "event": 33, + "position": "LF", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 214, + "fields": { + "player": 7, + "event": 33, + "position": "P", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 215, + "fields": { + "player": 12, + "event": 33, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 216, + "fields": { + "player": 4, + "event": 33, + "position": "EH", + "order": 11 + } + }, + { + "model": "benchcoach.positioning", + "pk": 217, + "fields": { + "player": 19, + "event": 34, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 218, + "fields": { + "player": 2, + "event": 34, + "position": "P", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 219, + "fields": { + "player": 22, + "event": 34, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 220, + "fields": { + "player": 18, + "event": 34, + "position": "LF", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 221, + "fields": { + "player": 20, + "event": 34, + "position": "CF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 222, + "fields": { + "player": 5, + "event": 34, + "position": "C", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 223, + "fields": { + "player": 24, + "event": 34, + "position": "1B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 224, + "fields": { + "player": 9, + "event": 34, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 225, + "fields": { + "player": 4, + "event": 34, + "position": "RF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 226, + "fields": { + "player": 25, + "event": 35, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 227, + "fields": { + "player": 19, + "event": 35, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 228, + "fields": { + "player": 13, + "event": 35, + "position": "3B", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 229, + "fields": { + "player": 22, + "event": 35, + "position": "C", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 230, + "fields": { + "player": 15, + "event": 35, + "position": "2B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 231, + "fields": { + "player": 10, + "event": 35, + "position": "1B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 232, + "fields": { + "player": 18, + "event": 35, + "position": "RF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 233, + "fields": { + "player": 20, + "event": 35, + "position": "CF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 234, + "fields": { + "player": 5, + "event": 35, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 235, + "fields": { + "player": 7, + "event": 35, + "position": "LF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 236, + "fields": { + "player": 4, + "event": 35, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 237, + "fields": { + "player": 7, + "event": 37, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 238, + "fields": { + "player": 13, + "event": 37, + "position": "3B", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 239, + "fields": { + "player": 16, + "event": 37, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 240, + "fields": { + "player": 15, + "event": 37, + "position": "C", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 241, + "fields": { + "player": 10, + "event": 37, + "position": "1B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 242, + "fields": { + "player": 18, + "event": 37, + "position": "SS", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 243, + "fields": { + "player": 20, + "event": 37, + "position": "LF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 244, + "fields": { + "player": 5, + "event": 37, + "position": "2B", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 245, + "fields": { + "player": 8, + "event": 37, + "position": "DH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 246, + "fields": { + "player": 4, + "event": 37, + "position": "RF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 247, + "fields": { + "player": 18, + "event": 36, + "position": "SS", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 248, + "fields": { + "player": 5, + "event": 36, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 249, + "fields": { + "player": 15, + "event": 36, + "position": "LF", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 250, + "fields": { + "player": 10, + "event": 36, + "position": "P", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 251, + "fields": { + "player": 8, + "event": 36, + "position": "3B", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 252, + "fields": { + "player": 14, + "event": 36, + "position": "C", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 253, + "fields": { + "player": 4, + "event": 36, + "position": "RF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 254, + "fields": { + "player": 24, + "event": 36, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 255, + "fields": { + "player": 7, + "event": 38, + "position": "LF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 256, + "fields": { + "player": 15, + "event": 38, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 257, + "fields": { + "player": 22, + "event": 38, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 258, + "fields": { + "player": 10, + "event": 38, + "position": "2B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 259, + "fields": { + "player": 18, + "event": 38, + "position": "RF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 260, + "fields": { + "player": 17, + "event": 38, + "position": "CF", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 261, + "fields": { + "player": 5, + "event": 38, + "position": "C", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 262, + "fields": { + "player": 8, + "event": 38, + "position": "1B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 263, + "fields": { + "player": 6, + "event": 38, + "position": "P", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 264, + "fields": { + "player": 4, + "event": 38, + "position": "EH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 265, + "fields": { + "player": 15, + "event": 39, + "position": "C", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 266, + "fields": { + "player": 17, + "event": 39, + "position": "CF", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 267, + "fields": { + "player": 22, + "event": 39, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 268, + "fields": { + "player": 18, + "event": 39, + "position": "SS", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 269, + "fields": { + "player": 9, + "event": 39, + "position": "P", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 270, + "fields": { + "player": 14, + "event": 39, + "position": "1B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 271, + "fields": { + "player": 4, + "event": 39, + "position": "LF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 272, + "fields": { + "player": 23, + "event": 39, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 273, + "fields": { + "player": 1, + "event": 39, + "position": "RF", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 274, + "fields": { + "player": 24, + "event": 40, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 275, + "fields": { + "player": 16, + "event": 40, + "position": "CF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 276, + "fields": { + "player": 15, + "event": 40, + "position": "SS", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 277, + "fields": { + "player": 22, + "event": 40, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 278, + "fields": { + "player": 18, + "event": 40, + "position": "1B", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 279, + "fields": { + "player": 20, + "event": 40, + "position": "LF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 280, + "fields": { + "player": 5, + "event": 40, + "position": "C", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 281, + "fields": { + "player": 4, + "event": 40, + "position": "RF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 282, + "fields": { + "player": 23, + "event": 40, + "position": "2B", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 283, + "fields": { + "player": 1, + "event": 40, + "position": "DH", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 284, + "fields": { + "player": 7, + "event": 41, + "position": "P", + "order": 0 + } + }, + { + "model": "benchcoach.positioning", + "pk": 285, + "fields": { + "player": 20, + "event": 41, + "position": "CF", + "order": 1 + } + }, + { + "model": "benchcoach.positioning", + "pk": 286, + "fields": { + "player": 15, + "event": 41, + "position": "C", + "order": 2 + } + }, + { + "model": "benchcoach.positioning", + "pk": 287, + "fields": { + "player": 22, + "event": 41, + "position": "3B", + "order": 3 + } + }, + { + "model": "benchcoach.positioning", + "pk": 288, + "fields": { + "player": 19, + "event": 41, + "position": "SS", + "order": 4 + } + }, + { + "model": "benchcoach.positioning", + "pk": 289, + "fields": { + "player": 2, + "event": 41, + "position": "LF", + "order": 5 + } + }, + { + "model": "benchcoach.positioning", + "pk": 290, + "fields": { + "player": 10, + "event": 41, + "position": "1B", + "order": 6 + } + }, + { + "model": "benchcoach.positioning", + "pk": 291, + "fields": { + "player": 18, + "event": 41, + "position": "RF", + "order": 7 + } + }, + { + "model": "benchcoach.positioning", + "pk": 292, + "fields": { + "player": 5, + "event": 41, + "position": "EH", + "order": 8 + } + }, + { + "model": "benchcoach.positioning", + "pk": 293, + "fields": { + "player": 9, + "event": 41, + "position": "2B", + "order": 9 + } + }, + { + "model": "benchcoach.positioning", + "pk": 294, + "fields": { + "player": 1, + "event": 41, + "position": "DH", + "order": 10 + } + }, + { + "model": "benchcoach.positioning", + "pk": 295, + "fields": { + "player": 3, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 296, + "fields": { + "player": 6, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 297, + "fields": { + "player": 7, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 298, + "fields": { + "player": 9, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 299, + "fields": { + "player": 12, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 300, + "fields": { + "player": 13, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 301, + "fields": { + "player": 16, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 302, + "fields": { + "player": 17, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 303, + "fields": { + "player": 20, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 304, + "fields": { + "player": 21, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 305, + "fields": { + "player": 23, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 306, + "fields": { + "player": 24, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 307, + "fields": { + "player": 25, + "event": 10, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 308, + "fields": { + "player": 1, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 309, + "fields": { + "player": 3, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 310, + "fields": { + "player": 4, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 311, + "fields": { + "player": 8, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 312, + "fields": { + "player": 11, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 313, + "fields": { + "player": 12, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 314, + "fields": { + "player": 14, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 315, + "fields": { + "player": 16, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 316, + "fields": { + "player": 19, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 317, + "fields": { + "player": 20, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 318, + "fields": { + "player": 21, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 319, + "fields": { + "player": 24, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 320, + "fields": { + "player": 25, + "event": 19, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 321, + "fields": { + "player": 3, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 322, + "fields": { + "player": 4, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 323, + "fields": { + "player": 6, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 324, + "fields": { + "player": 7, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 325, + "fields": { + "player": 8, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 326, + "fields": { + "player": 9, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 327, + "fields": { + "player": 12, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 328, + "fields": { + "player": 13, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 329, + "fields": { + "player": 14, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 330, + "fields": { + "player": 16, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 331, + "fields": { + "player": 17, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 332, + "fields": { + "player": 21, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 333, + "fields": { + "player": 23, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 334, + "fields": { + "player": 24, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.positioning", + "pk": 335, + "fields": { + "player": 25, + "event": 9, + "position": null, + "order": null + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Winnemac Park" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Southwest Park" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Taft HS" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Maywood Park" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Altgeld" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Maine South" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Walther Christian Academy" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Grosche" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Clemente" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Northeastern University" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Proviso East" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Columbus Park" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Ridgewood HS" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Mount Carmel HS" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Kroc Center" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Simeon" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Proviso West HS" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Jane Addams Park" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Ozinga" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "Lemont High School" + } + }, + { + "model": "benchcoach.venue", + "pk": null, + "fields": { + "name": "K's Dugout" + } + } +] \ No newline at end of file diff --git a/lineups/forms.py b/benchcoach/forms.py similarity index 65% rename from lineups/forms.py rename to benchcoach/forms.py index 2050380..c600547 100644 --- a/lineups/forms.py +++ b/benchcoach/forms.py @@ -1,11 +1,12 @@ from django import forms -from .models import Positioning -from events.models import Event -from players.models import Player -from django.forms import modelformset_factory, inlineformset_factory, BaseModelFormSet,formset_factory -from crispy_forms.helper import FormHelper, Layout +from .models import Event, Positioning, Team, Venue, Player from teamsnap.models import Event as TeamsnapEvent +from django.forms import modelformset_factory +class EventForm(forms.ModelForm): + class Meta: + model = Event + fields = ['start', 'home_team', 'away_team', 'venue'] class PositioningForm(forms.ModelForm): availability = None class Meta: @@ -41,4 +42,19 @@ class TeamsnapEventForm(forms.ModelForm): class Meta: model = Event - fields = ['start', 'home_team', 'away_team', 'venue'] \ No newline at end of file + fields = ['start', 'home_team', 'away_team', 'venue'] + +class PlayerForm(forms.ModelForm): + class Meta: + model = Player + fields = ['first_name', 'last_name', 'jersey_number', 'team'] + +class TeamForm(forms.ModelForm): + class Meta: + model = Team + fields = ['name'] + +class VenueForm(forms.ModelForm): + class Meta: + model = Venue + fields = ['name'] \ No newline at end of file diff --git a/benchcoach/migrations/0001_initial.py b/benchcoach/migrations/0001_initial.py index 8e21428..b3d50f7 100644 --- a/benchcoach/migrations/0001_initial.py +++ b/benchcoach/migrations/0001_initial.py @@ -1,6 +1,8 @@ -# Generated by Django 3.2.6 on 2021-12-12 23:36 +# Generated by Django 3.2.6 on 2021-12-17 21:33 +import django.core.validators from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -12,13 +14,89 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='User', + name='Player', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(max_length=50, null=True)), - ('last_name', models.CharField(max_length=50, null=True)), - ('email', models.EmailField(max_length=254)), - ('teamsnap_access_token', models.CharField(max_length=50, null=True)), + ('first_name', models.CharField(max_length=200)), + ('last_name', models.CharField(max_length=200)), + ('jersey_number', models.IntegerField()), ], ), + migrations.CreateModel( + name='Season', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50)), + ], + ), + migrations.CreateModel( + name='Team', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50)), + ('image', models.FileField(null=True, upload_to='images/', validators=[django.core.validators.FileExtensionValidator(['jpg', 'png', 'svg'])])), + ], + ), + migrations.CreateModel( + name='Venue', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50)), + ], + ), + migrations.CreateModel( + name='StatLine', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('batting_avg', models.DecimalField(decimal_places=3, default=0, max_digits=4)), + ('onbase_pct', models.DecimalField(decimal_places=3, default=0, max_digits=4)), + ('slugging_pct', models.DecimalField(decimal_places=3, default=0, max_digits=4)), + ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.player')), + ], + ), + migrations.AddField( + model_name='player', + name='team', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='benchcoach.team'), + ), + migrations.CreateModel( + name='Event', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('start', models.DateTimeField(null=True)), + ('away_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='away_team', to='benchcoach.team')), + ('home_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='home_team', to='benchcoach.team')), + ('venue', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='benchcoach.venue')), + ], + ), + migrations.CreateModel( + name='Positioning', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('position', models.CharField(blank=True, choices=[('EH', 'EH'), ('P', 'P'), ('C', 'C'), ('1B', '1B'), ('2B', '2B'), ('3B', '3B'), ('SS', 'SS'), ('LF', 'LF'), ('CF', 'CF'), ('RF', 'RF'), ('DH', 'DH')], default=None, max_length=2, null=True)), + ('order', models.PositiveSmallIntegerField(blank=True, default=None, null=True)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.event')), + ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.player')), + ], + options={ + 'unique_together': {('player', 'event')}, + }, + ), + migrations.AlterUniqueTogether( + name='player', + unique_together={('first_name', 'last_name')}, + ), + migrations.CreateModel( + name='Availability', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('available', models.IntegerField(choices=[(2, 'Yes'), (0, 'No'), (1, 'Maybe'), (-1, 'Unknown')], default=-1)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.event')), + ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.player')), + ], + options={ + 'verbose_name_plural': 'availabilities', + 'unique_together': {('event', 'player')}, + }, + ), ] diff --git a/benchcoach/migrations/0002_alter_player_jersey_number.py b/benchcoach/migrations/0002_alter_player_jersey_number.py new file mode 100644 index 0000000..2b53cd5 --- /dev/null +++ b/benchcoach/migrations/0002_alter_player_jersey_number.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.6 on 2021-12-19 01:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('benchcoach', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='player', + name='jersey_number', + field=models.IntegerField(null=True), + ), + ] diff --git a/benchcoach/migrations/0002_user_teamsnap_user.py b/benchcoach/migrations/0002_user_teamsnap_user.py deleted file mode 100644 index d94e55e..0000000 --- a/benchcoach/migrations/0002_user_teamsnap_user.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-12 23:37 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('teamsnap', '0016_auto_20211212_2240'), - ('benchcoach', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='teamsnap_user', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.user'), - ), - ] diff --git a/benchcoach/migrations/0003_auto_20211213_0058.py b/benchcoach/migrations/0003_auto_20211213_0058.py deleted file mode 100644 index cde1273..0000000 --- a/benchcoach/migrations/0003_auto_20211213_0058.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-13 00:58 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('teamsnap', '0018_user_managed_teams'), - ('benchcoach', '0002_user_teamsnap_user'), - ] - - operations = [ - migrations.CreateModel( - name='Profile', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('teamsnap_access_token', models.CharField(max_length=50, null=True)), - ('teamsnap_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.user')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.DeleteModel( - name='User', - ), - ] diff --git a/benchcoach/migrations/0004_profile_avatar.py b/benchcoach/migrations/0004_profile_avatar.py deleted file mode 100644 index 86236ba..0000000 --- a/benchcoach/migrations/0004_profile_avatar.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-13 01:13 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('benchcoach', '0003_auto_20211213_0058'), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='avatar', - field=models.ImageField(blank=True, null=True, upload_to='benchcoach/static/user_files/'), - ), - ] diff --git a/benchcoach/migrations/0005_alter_profile_avatar.py b/benchcoach/migrations/0005_alter_profile_avatar.py deleted file mode 100644 index a652b6e..0000000 --- a/benchcoach/migrations/0005_alter_profile_avatar.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-13 01:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('benchcoach', '0004_profile_avatar'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='avatar', - field=models.ImageField(blank=True, null=True, upload_to='avatars'), - ), - ] diff --git a/benchcoach/migrations/0006_alter_profile_avatar.py b/benchcoach/migrations/0006_alter_profile_avatar.py deleted file mode 100644 index ab05df6..0000000 --- a/benchcoach/migrations/0006_alter_profile_avatar.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-13 01:16 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('benchcoach', '0005_alter_profile_avatar'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='avatar', - field=models.ImageField(blank=True, null=True, upload_to='avatar'), - ), - ] diff --git a/benchcoach/migrations/0007_teamsnapsettings.py b/benchcoach/migrations/0007_teamsnapsettings.py deleted file mode 100644 index 18706ff..0000000 --- a/benchcoach/migrations/0007_teamsnapsettings.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-16 18:53 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('teamsnap', '0019_auto_20211216_1851'), - ('benchcoach', '0006_alter_profile_avatar'), - ] - - operations = [ - migrations.CreateModel( - name='TeamsnapSettings', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('managed_team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.profile')), - ], - ), - ] diff --git a/benchcoach/migrations/0008_alter_profile_teamsnap_user.py b/benchcoach/migrations/0008_alter_profile_teamsnap_user.py deleted file mode 100644 index 62fe951..0000000 --- a/benchcoach/migrations/0008_alter_profile_teamsnap_user.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-16 18:56 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('teamsnap', '0019_auto_20211216_1851'), - ('benchcoach', '0007_teamsnapsettings'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='teamsnap_user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.user'), - ), - ] diff --git a/benchcoach/models.py b/benchcoach/models.py index 8b1cc96..f353227 100644 --- a/benchcoach/models.py +++ b/benchcoach/models.py @@ -1,18 +1,128 @@ from django.db import models -from teamsnap.models import User as TeamsnapUser, Team as TeamsnapTeam -from django.contrib.auth.models import User +from django.core.validators import FileExtensionValidator -def user_directory_path(instance, filename): - # file will be uploaded to MEDIA_ROOT / user_/ - return 'benchcoach/static/user_files/user_{0}/{1}'.format(instance.user.id, filename) +class Team(models.Model): + name = models.CharField(max_length=50) + image = models.FileField( + upload_to="images/", + validators=[FileExtensionValidator(["jpg", "png", "svg"])], + null=True, + ) -class Profile(models.Model): - user = models.OneToOneField(User, on_delete=models.CASCADE) - teamsnap_access_token = models.CharField(null=True, max_length=50) - teamsnap_user = models.ForeignKey(TeamsnapUser, on_delete=models.CASCADE, null=True, blank=True) - avatar = models.ImageField(upload_to="avatar", null=True, blank=True) + def __str__(self): + return f"{self.name}" -class TeamsnapSettings(models.Model): - user = models.OneToOneField(Profile, on_delete=models.CASCADE) - managed_team = models.ForeignKey(TeamsnapTeam, on_delete=models.CASCADE) \ No newline at end of file + +class Venue(models.Model): + name = models.CharField(max_length=50) + + def __str__(self): + return f"{self.name}" + + +class Event(models.Model): + start = models.DateTimeField(null=True) + venue = models.ForeignKey(Venue, null=True, on_delete=models.CASCADE) + home_team = models.ForeignKey( + Team, null=True, on_delete=models.CASCADE, related_name="home_team" + ) + away_team = models.ForeignKey( + Team, null=True, on_delete=models.CASCADE, related_name="away_team" + ) + + def __str__(self): + return f"{self.start:%Y-%m-%d %H:%M}" + + +class Season(models.Model): + name = models.CharField(max_length=50) + + +class Player(models.Model): + first_name = models.CharField(max_length=200) + last_name = models.CharField(max_length=200) + jersey_number = models.IntegerField(null=True) + team = models.ForeignKey(Team, null=True, on_delete=models.CASCADE) + + def __str__(self): + return f"{self.last_name}, {self.first_name}" + + class Meta: + unique_together = ( + "first_name", + "last_name", + ) + + +class StatLine(models.Model): + player = models.ForeignKey(Player, on_delete=models.CASCADE) + batting_avg = models.DecimalField(max_digits=4, decimal_places=3, default=0) + onbase_pct = models.DecimalField(max_digits=4, decimal_places=3, default=0) + slugging_pct = models.DecimalField(max_digits=4, decimal_places=3, default=0) + + def __str__(self): + return f"{self.slash_line}" + + @property + def slash_line(self): + return "/".join( + [ + f"{self.batting_avg:.3f}".lstrip("0"), + f"{self.onbase_pct:.3f}".lstrip("0"), + f"{self.slugging_pct:.3f}".replace("0.", "."), + ] + ) + + +class Positioning(models.Model): + player = models.ForeignKey(Player, on_delete=models.CASCADE) + event = models.ForeignKey(Event, on_delete=models.CASCADE) + positions = [ + ("EH", "EH"), + ("P", "P"), + ("C", "C"), + ("1B", "1B"), + ("2B", "2B"), + ("3B", "3B"), + ("SS", "SS"), + ("LF", "LF"), + ("CF", "CF"), + ("RF", "RF"), + ("DH", "DH"), + ] + position = models.CharField( + choices=positions, default=None, max_length=2, null=True, blank=True + ) + order = models.PositiveSmallIntegerField(default=None, null=True, blank=True) + + class Meta: + unique_together = ( + "player", + "event", + ) + + def __str__(self): + return f"{self.player}; {self.event};" + + +class Availability(models.Model): + YES = 2 + MAYBE = 1 + NO = 0 + UNKNOWN = -1 + + event = models.ForeignKey(Event, on_delete=models.CASCADE) + player = models.ForeignKey(Player, on_delete=models.CASCADE) + choices = [(YES, "Yes"), (NO, "No"), (MAYBE, "Maybe"), (UNKNOWN, "Unknown")] + available = models.IntegerField(choices=choices, default=UNKNOWN) + + def __str__(self): + return f"{self.event}; {self.player}; {self.available}" + + class Meta: + unique_together = ( + "event", + "player", + ) + verbose_name_plural = "availabilities" diff --git a/benchcoach/tests.py b/benchcoach/tests.py new file mode 100644 index 0000000..4ea6dfc --- /dev/null +++ b/benchcoach/tests.py @@ -0,0 +1,281 @@ +from django.test import TestCase +from .models import Event, Player, Team, Venue, Positioning +from .forms import PositioningFormSet +from datetime import datetime +from django.urls import reverse + +FIXTURES = ["blaseball"] + + +class TestEventModel(TestCase): + fixtures = FIXTURES + + def test_query_event(self): + """ + Return the desired event + """ + event = Event.objects.get(id=1) + self.assertEqual("Chicago Firefighters", event.away_team.name) + self.assertEqual("Dallas Steaks", event.home_team.name) + self.assertEqual("George Fourman Stadium", event.venue.name) + self.assertEqual( + datetime(year=2020, month=8, day=24, hour=16, minute=0, second=1), + event.start, + ) + + +class TestEventViews(TestCase): + fixtures = FIXTURES + + def test_event_list(self): + response = self.client.get(reverse("schedule")) + self.assertEqual(200, response.status_code) + + def test_event_edit(self): + response = self.client.get(reverse("edit event", args=[2])) + self.assertEqual(200, response.status_code) + + # create new event + new_event_data = { + "home_team": 23, + "away_team": 24, + "start": datetime(year=2021, month=1, day=1, hour=9, minute=0, second=0), + "venue": 19, + } + + response = self.client.post( + reverse("edit event", args=[0]), data=new_event_data + ) + self.assertEqual(201, response.status_code) + new_event = Event.objects.get(id=response.context["id"]) + self.assertEqual(new_event_data["home_team"], new_event.home_team.id) + self.assertEqual(new_event_data["away_team"], new_event.away_team_id) + self.assertEqual(new_event_data["start"], new_event.start) + + # modify event + modified_event_data = { + "home_team": 23, + "away_team": 24, + "start": datetime(year=2021, month=1, day=1, hour=9, minute=0, second=0), + "venue": 19, + } + response = self.client.post( + reverse("edit event", args=[1]), data=modified_event_data + ) + self.assertEqual(200, response.status_code) + self.assertEqual(1, response.context["id"]) + modified_event = Event.objects.get(id=response.context["id"]) + + self.assertEqual(modified_event_data["home_team"], modified_event.home_team.id) + self.assertEqual(modified_event_data["away_team"], modified_event.away_team.id) + self.assertEqual(modified_event_data["start"], modified_event.start) + self.assertEqual(modified_event_data["venue"], modified_event.venue.id) + + +class TestVenueViews(TestCase): + fixtures = ["blaseball"] + + def test_positioning_list(self): + response = self.client.get(reverse("edit lineup", args=[1])) + self.assertEqual(response.status_code, 200) + + def test_positioning_formset(self): + event = 1 + + sample_data = [ + # first player positioning + (1, Player.objects.get(id=1).id, "P"), + (2, Player.objects.get(id=2).id, "C"), + (3, Player.objects.get(id=3).id, "1B"), + ] + data = {} + + for i, (order, player, position) in enumerate(sample_data): + data[f"form-{i}-order"] = order + data[f"form-{i}-player"] = player + data[f"form-{i}-position"] = position + + management = { + "form-INITIAL_FORMS": "0", + "form-TOTAL_FORMS": len(sample_data), + "form-MAX_NUM_FORMS": "", + } + + formset = PositioningFormSet({**management, **data}) + + self.assertTrue(formset.is_valid()) + for form in formset: + self.assertTrue(form.is_valid()) + + response = self.client.post( + reverse("edit lineup", args=[event]), {**management, **data} + ) + + self.assertEqual(response.status_code, 200) + + for d in sample_data: + with self.subTest(d): + p = Positioning.objects.get(player_id=d[1], event_id=event) + self.assertEqual(d[0], p.order) + self.assertEqual(d[2], p.position) + pass + + +class TestPlayerModel(TestCase): + fixtures = FIXTURES + + def test_query_player(self): + """ + Return the desired player + """ + player = Player.objects.get(id=1) + self.assertEqual(player.first_name, "Edric") + self.assertEqual(player.last_name, "Tosser") + self.assertEqual(player.jersey_number, 1) + self.assertEqual(player.team.name, "Chicago Firefighters") + + +class TestPlayerViews(TestCase): + fixtures = FIXTURES + + def test_player_list(self): + response = self.client.get(reverse("players list")) + self.assertEqual(response.status_code, 200) + + def test_player_edit(self): + response = self.client.get(reverse("edit player", args=[1])) + self.assertEqual(response.status_code, 200) + + # create new player + new_player_data = { + "first_name": "A new player first name", + "last_name": "A new player last name", + "jersey_number": 99, + "team": 1, + } + + response = self.client.post( + reverse("edit player", args=[0]), data=new_player_data + ) + self.assertEqual(201, response.status_code) + new_player = Player.objects.get(id=response.context["id"]) + self.assertEqual(new_player_data["first_name"], new_player.first_name) + self.assertEqual(new_player_data["last_name"], new_player.last_name) + + # modify player + modified_player_data = { + "first_name": "A changed player first name", + "last_name": "A changed player last name", + "jersey_number": 99, + "team": 1, + } + response = self.client.post( + reverse("edit player", args=[1]), data=modified_player_data + ) + self.assertEqual(200, response.status_code) + self.assertEqual(1, response.context["id"]) + modified_player = Player.objects.get(id=response.context["id"]) + self.assertEqual(modified_player_data["first_name"], modified_player.first_name) + self.assertEqual(modified_player_data["last_name"], modified_player.last_name) + + +class TestTeamModel(TestCase): + fixtures = ["blaseball"] + + def test_query_team(self): + """ + Return the desired team + """ + team = Team.objects.get(id=1) + self.assertEqual(team.name, "Chicago Firefighters") + + +class TestTeamViews(TestCase): + fixtures = ["blaseball"] + + def test_team_list(self): + response = self.client.get(reverse("teams list")) + self.assertEqual(response.status_code, 200) + self.assertIn( + {"id": 1, "title": "Chicago Firefighters"}, response.context["items"] + ) + self.assertIn({"id": 2, "title": "Boston Flowers"}, response.context["items"]) + self.assertIn({"id": 24, "title": "Baltimore Crabs"}, response.context["items"]) + + def test_team_edit(self): + response = self.client.get(reverse("edit team", args=[1])) + self.assertEqual(response.status_code, 200) + + # create new team + response = self.client.post( + reverse("edit team", args=[0]), data={"name": "A new team"} + ) + self.assertEqual(201, response.status_code) + new_team = Team.objects.get(id=response.context["id"]) + self.assertEqual( + "A new team", + new_team.name, + ) + + # modify team + response = self.client.post( + reverse("edit team", args=[1]), data={"name": "A different team name"} + ) + self.assertEqual(200, response.status_code) + self.assertEqual(1, response.context["id"]) + modified_team = Team.objects.get(id=response.context["id"]) + self.assertEqual("A different team name", modified_team.name) + + +class TestVenueModel(TestCase): + fixtures = ["blaseball"] + + def test_query_venue(self): + """ + Return the desired venue + """ + venue = Venue.objects.get(id=1) + self.assertEqual(venue.name, "Chesapeake Racetrack and Ballpark") + + +class TestVenueViews(TestCase): + fixtures = ["blaseball"] + + def test_venue_list(self): + response = self.client.get(reverse("venues list")) + self.assertEqual(response.status_code, 200) + self.assertIn( + {"id": 1, "title": "Chesapeake Racetrack and Ballpark"}, + response.context["items"], + ) + self.assertIn( + {"id": 2, "title": "Tokyo Fitness Center"}, response.context["items"] + ) + self.assertIn( + {"id": 25, "title": "ILB Historical Preservation Site"}, + response.context["items"], + ) + + def test_venue_edit(self): + response = self.client.get(reverse("edit venue", args=[1])) + self.assertEqual(response.status_code, 200) + + # create new venue + response = self.client.post( + reverse("edit venue", args=[0]), data={"name": "A new venue"} + ) + self.assertEqual(201, response.status_code) + new_venue = Venue.objects.get(id=response.context["id"]) + self.assertEqual( + "A new venue", + new_venue.name, + ) + + # modify venue + response = self.client.post( + reverse("edit venue", args=[1]), data={"name": "A different venue name"} + ) + self.assertEqual(200, response.status_code) + self.assertEqual(1, response.context["id"]) + modified_venue = Venue.objects.get(id=response.context["id"]) + self.assertEqual("A different venue name", modified_venue.name) diff --git a/benchcoach/urls.py b/benchcoach/urls.py index 500c343..d77c314 100644 --- a/benchcoach/urls.py +++ b/benchcoach/urls.py @@ -1,33 +1,12 @@ -"""events URL Configuration +from django.urls import path -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/3.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path, include -from django.conf.urls.static import static -from django.conf import settings - -from .views import welcome, user_login +from . import views urlpatterns = [ - path('', welcome, name="home"), - path('admin/', admin.site.urls), - path('events/', include('events.urls')), - path('teams/', include('teams.urls')), - path('venues/', include('venues.urls')), - path('players/', include('players.urls')), - path('lineups/', include('lineups.urls')), -path('teamsnap/', include('teamsnap.urls')), - path('login', user_login, name="login") -] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + path('lineup/edit/', views.lineup_edit, name="edit lineup"), + path('events/list', views.EventListView.as_view(), name="event list"), + path('events//detail', views.EventDetailView.as_view(), name="event detail"), + path('players/list', views.PlayerListView.as_view(), name="player list"), + path('teams/list', views.TeamListView.as_view(), name="team list"), + path('venues/list', views.VenueListView.as_view(), name="venue list") +] \ No newline at end of file diff --git a/benchcoach/views.py b/benchcoach/views.py index 7f93c7e..4c0be15 100644 --- a/benchcoach/views.py +++ b/benchcoach/views.py @@ -1,31 +1,142 @@ -from django.http import HttpResponse -from django.shortcuts import render,redirect, reverse, HttpResponseRedirect -from django.contrib.auth import login,authenticate +from django.shortcuts import render +from .models import Event, Team, Player, Positioning, Venue +from .forms import PositioningFormSet, TeamsnapEventForm +from django.contrib import messages +from django.db.models import F +from django.views.generic import ListView, DetailView -def welcome(request): - pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events', 'teamsnap home', 'login'] - return render(request,'home.html',{'pages':pages}) +class BenchCoachListView(ListView): + title = None +class EventDetailView(DetailView): + model = Event + context_object_name = "event" + template_name = 'benchcoach/event-detail.html' -def user_login(request): - if request.method == 'POST': - username = request.POST.get('username') - password = request.POST.get('password') +class EventListView(ListView): + model = Event + context_object_name = "events" + template_name = 'benchcoach/event-list.html' - try: - user = authenticate(request, username=username, password=password) - if user is not None: - print('Login') - login(request,user) - return redirect(reverse('home')) - else: - print("Someone tried to login and failed.") - print("They used username: {} and password: {}".format(username, password)) +class PlayerListView(ListView): + model = Player + template_name = 'benchcoach/list.html' - return redirect('/') - except Exception as identifier: + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['page_title'] = "Players" + context['members_tab_active'] ='active' + return context - return redirect('/') +class TeamListView(ListView): + model = Team + template_name = 'benchcoach/list.html' - else: - return render(request, 'login.html') \ No newline at end of file + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['page_title'] = "Teams" + context['opponents_tab_active'] ='active' + return context + +class VenueListView(ListView): + model = Venue + template_name = 'benchcoach/list.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['page_title'] = "Venues" + context['venues_tab_active'] ='active' + return context + +def lineup_edit(request, event_id): + + if request.method == "POST": + # create a form instance and populate it with data from the request: + formset = PositioningFormSet(request.POST) + is_valid = [f.is_valid() for f in formset] + for form in formset: + if form.is_valid(): + # process the data in form.cleaned_data as required + # ... + # redirect to a new URL: + + if isinstance(form.cleaned_data["id"], Positioning): + positioning_id = form.cleaned_data.pop( + "id" + ).id # FIXME this is a workaround, not sure why it is necessary + positioning = Positioning.objects.filter(id=positioning_id) + positioning.update(**form.cleaned_data) + did_create = False + else: + positioning = Positioning.objects.create( + **form.cleaned_data, event_id=event_id + ) + did_create = True + else: + messages.error( + request, f"Error submitting lineup. {form.instance} {form.errors}" + ) + pass + if (True in is_valid) and (False in is_valid): + messages.warning(request, "Lineup partially submitted.") + elif True in is_valid: + messages.success(request, "Lineup submitted successfully.") + elif True not in is_valid: + messages.error(request, f"Error submitting lineup.") + else: + messages.error(request, f"Error submitting lineup.") + # return HttpResponse(status=204) + # return render(request, 'success.html', {'call_back':'edit lineup','id':event_id, 'errors':[error for error in formset.errors if error]}, status=200) + previous_event = Event.objects.filter(id=event_id - 1).first() + + event = Event.objects.get(id=event_id) + next_event = Event.objects.get(id=event_id + 1) + players = Player.objects.prefetch_related("availability_set", "positioning_set") + + for player in players: + Positioning.objects.get_or_create(player_id=player.id, event_id=event_id) + + qs = ( + event.positioning_set.all() + .filter(player__availability__event=event_id) + .order_by("order", "-player__availability__available", "player__last_name") + .annotate(event_availability=F("player__availability__available")) + ) + + formset = PositioningFormSet(queryset=qs) + + formset_lineup = [f for f in formset if f.instance.order] + formset_dhd = [f for f in formset if not f.instance.order and f.instance.position] + formset_bench = [ + f for f in formset if f not in formset_lineup and f not in formset_dhd + ] + + teamsnap_form = TeamsnapEventForm(instance=event) + + details = { + "Away Team": event.away_team, + "Home Team": event.home_team, + "Date": event.start.date(), + "Time": event.start.time(), + "Venue": event.venue, + "TeamSnap": teamsnap_form + # "TeamSnap Link": event.event_set.first() + # "TeamSnap Link": f' {event.event_set.first()} ' if event.event_set.first() else None + } + + return render( + request, + "benchcoach/lineup.html", + { + "title": "Lineup", + "event": event, + "details": details, + "previous_event": previous_event, + "teamsnap_form": teamsnap_form, + "next_event": next_event, + "formset": formset, + "formset_lineup": formset_lineup, + "formset_bench": formset_bench, + "formset_dhd": formset_dhd, + }, + ) diff --git a/events/__init__.py b/benchcoachproject/__init__.py similarity index 100% rename from events/__init__.py rename to benchcoachproject/__init__.py diff --git a/benchcoachproject/admin.py b/benchcoachproject/admin.py new file mode 100644 index 0000000..0a853f9 --- /dev/null +++ b/benchcoachproject/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from .models import Profile, TeamsnapSettings + +# Register your models here. +admin.site.register(Profile) +admin.site.register(TeamsnapSettings) diff --git a/benchcoach/asgi.py b/benchcoachproject/asgi.py similarity index 80% rename from benchcoach/asgi.py rename to benchcoachproject/asgi.py index 9950c37..82177eb 100644 --- a/benchcoach/asgi.py +++ b/benchcoachproject/asgi.py @@ -11,6 +11,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'events.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'benchcoachproject.settings') application = get_asgi_application() diff --git a/benchcoach/fixtures/minimal.json b/benchcoachproject/fixtures/minimal.json similarity index 99% rename from benchcoach/fixtures/minimal.json rename to benchcoachproject/fixtures/minimal.json index 0d45054..dce724b 100644 --- a/benchcoach/fixtures/minimal.json +++ b/benchcoachproject/fixtures/minimal.json @@ -1,6 +1,6 @@ [ { - "model": "teams.team", + "model": "benchcoach.team", "pk": 1, "fields": { "name": "a", diff --git a/benchcoachproject/migrations/0001_initial.py b/benchcoachproject/migrations/0001_initial.py new file mode 100644 index 0000000..ce7111c --- /dev/null +++ b/benchcoachproject/migrations/0001_initial.py @@ -0,0 +1,36 @@ +# Generated by Django 3.2.6 on 2021-12-17 22:07 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('teamsnap', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Profile', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('teamsnap_access_token', models.CharField(max_length=50, null=True)), + ('avatar', models.ImageField(blank=True, null=True, upload_to='avatar')), + ('teamsnap_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.user')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='TeamsnapSettings', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('managed_team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='benchcoachproject.profile')), + ], + ), + ] diff --git a/benchcoachproject/migrations/0002_alter_profile_teamsnap_user.py b/benchcoachproject/migrations/0002_alter_profile_teamsnap_user.py new file mode 100644 index 0000000..41dd115 --- /dev/null +++ b/benchcoachproject/migrations/0002_alter_profile_teamsnap_user.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.6 on 2021-12-20 02:54 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('teamsnap', '0002_event_game_type'), + ('benchcoachproject', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='teamsnap_user', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='benchcoach_object', to='teamsnap.user'), + ), + ] diff --git a/events/migrations/__init__.py b/benchcoachproject/migrations/__init__.py similarity index 100% rename from events/migrations/__init__.py rename to benchcoachproject/migrations/__init__.py diff --git a/benchcoachproject/models.py b/benchcoachproject/models.py new file mode 100644 index 0000000..07ac43c --- /dev/null +++ b/benchcoachproject/models.py @@ -0,0 +1,19 @@ +from django.db import models +from teamsnap.models import User as TeamsnapUser, Team as TeamsnapTeam +from django.contrib.auth.models import User + +class Profile(models.Model): + user = models.OneToOneField(User, on_delete=models.CASCADE) + teamsnap_access_token = models.CharField(null=True, max_length=50) + teamsnap_user = models.OneToOneField( + TeamsnapUser, + on_delete=models.CASCADE, + null=True, + blank=True, + related_name="benchcoach_object" + ) + avatar = models.ImageField(upload_to="avatar", null=True, blank=True) + +class TeamsnapSettings(models.Model): + user = models.OneToOneField(Profile, on_delete=models.CASCADE) + managed_team = models.ForeignKey(TeamsnapTeam, on_delete=models.CASCADE) \ No newline at end of file diff --git a/benchcoach/settings.py b/benchcoachproject/settings.py similarity index 89% rename from benchcoach/settings.py rename to benchcoachproject/settings.py index 1fc6b75..65189d8 100644 --- a/benchcoach/settings.py +++ b/benchcoachproject/settings.py @@ -31,11 +31,7 @@ ALLOWED_HOSTS = ["smithers-ii.local", "127.0.0.1", "10.0.1.4", "benchcoach.ascor # Application definition INSTALLED_APPS = [ - 'events.apps.EventsConfig', - 'teams.apps.TeamsConfig', - 'venues.apps.VenuesConfig', - 'players.apps.PlayersConfig', - 'lineups.apps.LineupsConfig', + 'benchcoach.apps.BenchcoachConfig', 'teamsnap.apps.TeamsnapConfig', 'django.contrib.admin', 'django.contrib.auth', @@ -43,8 +39,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'crispy_forms', - 'benchcoach' + 'benchcoachproject' ] MIDDLEWARE = [ @@ -57,7 +52,7 @@ MIDDLEWARE = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] -ROOT_URLCONF = 'benchcoach.urls' +ROOT_URLCONF = 'benchcoachproject.urls' TEMPLATES = [ { @@ -77,7 +72,7 @@ TEMPLATES = [ }, ] -WSGI_APPLICATION = 'benchcoach.wsgi.application' +WSGI_APPLICATION = 'benchcoachproject.wsgi.application' # Database @@ -115,13 +110,13 @@ AUTH_PASSWORD_VALIDATORS = [ LANGUAGE_CODE = 'en-us' -TIME_ZONE = 'UTC' +TIME_ZONE = 'America/Chicago' USE_I18N = True USE_L10N = True -USE_TZ = False +USE_TZ = True # Static files (CSS, JavaScript, Images) @@ -135,6 +130,4 @@ STATIC_URL = '/static/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' MEDIA_URL = '/media/' -MEDIA_ROOT = os.path.join(BASE_DIR, 'media') - -CRISPY_TEMPLATE_PACK = 'bootstrap4' \ No newline at end of file +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') \ No newline at end of file diff --git a/benchcoach/static/benchcoach.svg b/benchcoachproject/static/benchcoach.svg similarity index 100% rename from benchcoach/static/benchcoach.svg rename to benchcoachproject/static/benchcoach.svg diff --git a/benchcoach/static/css/base.css b/benchcoachproject/static/css/base.css similarity index 100% rename from benchcoach/static/css/base.css rename to benchcoachproject/static/css/base.css diff --git a/benchcoach/static/css/bootstrap-grid.css b/benchcoachproject/static/css/bootstrap-grid.css similarity index 100% rename from benchcoach/static/css/bootstrap-grid.css rename to benchcoachproject/static/css/bootstrap-grid.css diff --git a/benchcoach/static/css/bootstrap-grid.css.map b/benchcoachproject/static/css/bootstrap-grid.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-grid.css.map rename to benchcoachproject/static/css/bootstrap-grid.css.map diff --git a/benchcoach/static/css/bootstrap-grid.min.css b/benchcoachproject/static/css/bootstrap-grid.min.css similarity index 100% rename from benchcoach/static/css/bootstrap-grid.min.css rename to benchcoachproject/static/css/bootstrap-grid.min.css diff --git a/benchcoach/static/css/bootstrap-grid.min.css.map b/benchcoachproject/static/css/bootstrap-grid.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-grid.min.css.map rename to benchcoachproject/static/css/bootstrap-grid.min.css.map diff --git a/benchcoach/static/css/bootstrap-grid.rtl.css b/benchcoachproject/static/css/bootstrap-grid.rtl.css similarity index 100% rename from benchcoach/static/css/bootstrap-grid.rtl.css rename to benchcoachproject/static/css/bootstrap-grid.rtl.css diff --git a/benchcoach/static/css/bootstrap-grid.rtl.css.map b/benchcoachproject/static/css/bootstrap-grid.rtl.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-grid.rtl.css.map rename to benchcoachproject/static/css/bootstrap-grid.rtl.css.map diff --git a/benchcoach/static/css/bootstrap-grid.rtl.min.css b/benchcoachproject/static/css/bootstrap-grid.rtl.min.css similarity index 100% rename from benchcoach/static/css/bootstrap-grid.rtl.min.css rename to benchcoachproject/static/css/bootstrap-grid.rtl.min.css diff --git a/benchcoach/static/css/bootstrap-grid.rtl.min.css.map b/benchcoachproject/static/css/bootstrap-grid.rtl.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-grid.rtl.min.css.map rename to benchcoachproject/static/css/bootstrap-grid.rtl.min.css.map diff --git a/benchcoach/static/css/bootstrap-reboot.css b/benchcoachproject/static/css/bootstrap-reboot.css similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.css rename to benchcoachproject/static/css/bootstrap-reboot.css diff --git a/benchcoach/static/css/bootstrap-reboot.css.map b/benchcoachproject/static/css/bootstrap-reboot.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.css.map rename to benchcoachproject/static/css/bootstrap-reboot.css.map diff --git a/benchcoach/static/css/bootstrap-reboot.min.css b/benchcoachproject/static/css/bootstrap-reboot.min.css similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.min.css rename to benchcoachproject/static/css/bootstrap-reboot.min.css diff --git a/benchcoach/static/css/bootstrap-reboot.min.css.map b/benchcoachproject/static/css/bootstrap-reboot.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.min.css.map rename to benchcoachproject/static/css/bootstrap-reboot.min.css.map diff --git a/benchcoach/static/css/bootstrap-reboot.rtl.css b/benchcoachproject/static/css/bootstrap-reboot.rtl.css similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.rtl.css rename to benchcoachproject/static/css/bootstrap-reboot.rtl.css diff --git a/benchcoach/static/css/bootstrap-reboot.rtl.css.map b/benchcoachproject/static/css/bootstrap-reboot.rtl.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.rtl.css.map rename to benchcoachproject/static/css/bootstrap-reboot.rtl.css.map diff --git a/benchcoach/static/css/bootstrap-reboot.rtl.min.css b/benchcoachproject/static/css/bootstrap-reboot.rtl.min.css similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.rtl.min.css rename to benchcoachproject/static/css/bootstrap-reboot.rtl.min.css diff --git a/benchcoach/static/css/bootstrap-reboot.rtl.min.css.map b/benchcoachproject/static/css/bootstrap-reboot.rtl.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-reboot.rtl.min.css.map rename to benchcoachproject/static/css/bootstrap-reboot.rtl.min.css.map diff --git a/benchcoach/static/css/bootstrap-utilities.css b/benchcoachproject/static/css/bootstrap-utilities.css similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.css rename to benchcoachproject/static/css/bootstrap-utilities.css diff --git a/benchcoach/static/css/bootstrap-utilities.css.map b/benchcoachproject/static/css/bootstrap-utilities.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.css.map rename to benchcoachproject/static/css/bootstrap-utilities.css.map diff --git a/benchcoach/static/css/bootstrap-utilities.min.css b/benchcoachproject/static/css/bootstrap-utilities.min.css similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.min.css rename to benchcoachproject/static/css/bootstrap-utilities.min.css diff --git a/benchcoach/static/css/bootstrap-utilities.min.css.map b/benchcoachproject/static/css/bootstrap-utilities.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.min.css.map rename to benchcoachproject/static/css/bootstrap-utilities.min.css.map diff --git a/benchcoach/static/css/bootstrap-utilities.rtl.css b/benchcoachproject/static/css/bootstrap-utilities.rtl.css similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.rtl.css rename to benchcoachproject/static/css/bootstrap-utilities.rtl.css diff --git a/benchcoach/static/css/bootstrap-utilities.rtl.css.map b/benchcoachproject/static/css/bootstrap-utilities.rtl.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.rtl.css.map rename to benchcoachproject/static/css/bootstrap-utilities.rtl.css.map diff --git a/benchcoach/static/css/bootstrap-utilities.rtl.min.css b/benchcoachproject/static/css/bootstrap-utilities.rtl.min.css similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.rtl.min.css rename to benchcoachproject/static/css/bootstrap-utilities.rtl.min.css diff --git a/benchcoach/static/css/bootstrap-utilities.rtl.min.css.map b/benchcoachproject/static/css/bootstrap-utilities.rtl.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap-utilities.rtl.min.css.map rename to benchcoachproject/static/css/bootstrap-utilities.rtl.min.css.map diff --git a/benchcoach/static/css/bootstrap.css b/benchcoachproject/static/css/bootstrap.css similarity index 100% rename from benchcoach/static/css/bootstrap.css rename to benchcoachproject/static/css/bootstrap.css diff --git a/benchcoach/static/css/bootstrap.css.map b/benchcoachproject/static/css/bootstrap.css.map similarity index 100% rename from benchcoach/static/css/bootstrap.css.map rename to benchcoachproject/static/css/bootstrap.css.map diff --git a/benchcoach/static/css/bootstrap.min.css b/benchcoachproject/static/css/bootstrap.min.css similarity index 100% rename from benchcoach/static/css/bootstrap.min.css rename to benchcoachproject/static/css/bootstrap.min.css diff --git a/benchcoach/static/css/bootstrap.min.css.map b/benchcoachproject/static/css/bootstrap.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap.min.css.map rename to benchcoachproject/static/css/bootstrap.min.css.map diff --git a/benchcoach/static/css/bootstrap.rtl.css b/benchcoachproject/static/css/bootstrap.rtl.css similarity index 100% rename from benchcoach/static/css/bootstrap.rtl.css rename to benchcoachproject/static/css/bootstrap.rtl.css diff --git a/benchcoach/static/css/bootstrap.rtl.css.map b/benchcoachproject/static/css/bootstrap.rtl.css.map similarity index 100% rename from benchcoach/static/css/bootstrap.rtl.css.map rename to benchcoachproject/static/css/bootstrap.rtl.css.map diff --git a/benchcoach/static/css/bootstrap.rtl.min.css b/benchcoachproject/static/css/bootstrap.rtl.min.css similarity index 100% rename from benchcoach/static/css/bootstrap.rtl.min.css rename to benchcoachproject/static/css/bootstrap.rtl.min.css diff --git a/benchcoach/static/css/bootstrap.rtl.min.css.map b/benchcoachproject/static/css/bootstrap.rtl.min.css.map similarity index 100% rename from benchcoach/static/css/bootstrap.rtl.min.css.map rename to benchcoachproject/static/css/bootstrap.rtl.min.css.map diff --git a/benchcoach/static/favicon.ico b/benchcoachproject/static/favicon.ico similarity index 100% rename from benchcoach/static/favicon.ico rename to benchcoachproject/static/favicon.ico diff --git a/benchcoach/static/js/Sortable.js b/benchcoachproject/static/js/Sortable.js similarity index 100% rename from benchcoach/static/js/Sortable.js rename to benchcoachproject/static/js/Sortable.js diff --git a/benchcoach/static/js/bootstrap.bundle.js b/benchcoachproject/static/js/bootstrap.bundle.js similarity index 100% rename from benchcoach/static/js/bootstrap.bundle.js rename to benchcoachproject/static/js/bootstrap.bundle.js diff --git a/benchcoach/static/js/bootstrap.bundle.js.map b/benchcoachproject/static/js/bootstrap.bundle.js.map similarity index 100% rename from benchcoach/static/js/bootstrap.bundle.js.map rename to benchcoachproject/static/js/bootstrap.bundle.js.map diff --git a/benchcoach/static/js/bootstrap.bundle.min.js b/benchcoachproject/static/js/bootstrap.bundle.min.js similarity index 100% rename from benchcoach/static/js/bootstrap.bundle.min.js rename to benchcoachproject/static/js/bootstrap.bundle.min.js diff --git a/benchcoach/static/js/bootstrap.bundle.min.js.map b/benchcoachproject/static/js/bootstrap.bundle.min.js.map similarity index 100% rename from benchcoach/static/js/bootstrap.bundle.min.js.map rename to benchcoachproject/static/js/bootstrap.bundle.min.js.map diff --git a/benchcoach/static/js/bootstrap.esm.js b/benchcoachproject/static/js/bootstrap.esm.js similarity index 100% rename from benchcoach/static/js/bootstrap.esm.js rename to benchcoachproject/static/js/bootstrap.esm.js diff --git a/benchcoach/static/js/bootstrap.esm.js.map b/benchcoachproject/static/js/bootstrap.esm.js.map similarity index 100% rename from benchcoach/static/js/bootstrap.esm.js.map rename to benchcoachproject/static/js/bootstrap.esm.js.map diff --git a/benchcoach/static/js/bootstrap.esm.min.js b/benchcoachproject/static/js/bootstrap.esm.min.js similarity index 100% rename from benchcoach/static/js/bootstrap.esm.min.js rename to benchcoachproject/static/js/bootstrap.esm.min.js diff --git a/benchcoach/static/js/bootstrap.esm.min.js.map b/benchcoachproject/static/js/bootstrap.esm.min.js.map similarity index 100% rename from benchcoach/static/js/bootstrap.esm.min.js.map rename to benchcoachproject/static/js/bootstrap.esm.min.js.map diff --git a/benchcoach/static/js/bootstrap.js b/benchcoachproject/static/js/bootstrap.js similarity index 100% rename from benchcoach/static/js/bootstrap.js rename to benchcoachproject/static/js/bootstrap.js diff --git a/benchcoach/static/js/bootstrap.js.map b/benchcoachproject/static/js/bootstrap.js.map similarity index 100% rename from benchcoach/static/js/bootstrap.js.map rename to benchcoachproject/static/js/bootstrap.js.map diff --git a/benchcoach/static/js/bootstrap.min.js b/benchcoachproject/static/js/bootstrap.min.js similarity index 100% rename from benchcoach/static/js/bootstrap.min.js rename to benchcoachproject/static/js/bootstrap.min.js diff --git a/benchcoach/static/js/bootstrap.min.js.map b/benchcoachproject/static/js/bootstrap.min.js.map similarity index 100% rename from benchcoach/static/js/bootstrap.min.js.map rename to benchcoachproject/static/js/bootstrap.min.js.map diff --git a/benchcoach/static/tommy-lasorda.jpg b/benchcoachproject/static/tommy-lasorda.jpg similarity index 100% rename from benchcoach/static/tommy-lasorda.jpg rename to benchcoachproject/static/tommy-lasorda.jpg diff --git a/benchcoachproject/urls.py b/benchcoachproject/urls.py new file mode 100644 index 0000000..a48cac0 --- /dev/null +++ b/benchcoachproject/urls.py @@ -0,0 +1,29 @@ +"""events URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include +from django.conf.urls.static import static +from django.conf import settings + +from .views import welcome, user_login + +urlpatterns = [ + path("", welcome, name="home"), + path("", include("benchcoach.urls")), + path("admin/", admin.site.urls), + path("teamsnap/", include("teamsnap.urls")), + path("login", user_login, name="login"), +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/benchcoachproject/views.py b/benchcoachproject/views.py new file mode 100644 index 0000000..cd1103d --- /dev/null +++ b/benchcoachproject/views.py @@ -0,0 +1,31 @@ +from django.http import HttpResponse +from django.shortcuts import render,redirect, reverse, HttpResponseRedirect +from django.contrib.auth import login,authenticate + +def welcome(request): + pages = ['event list', 'team list', 'venue list', 'player list', 'teamsnap list events', 'teamsnap home', 'login'] + return render(request,'home.html',{'pages':pages}) + + +def user_login(request): + if request.method == 'POST': + username = request.POST.get('username') + password = request.POST.get('password') + + try: + user = authenticate(request, username=username, password=password) + if user is not None: + print('Login') + login(request,user) + return redirect(reverse('home')) + else: + print("Someone tried to login and failed.") + print("They used username: {} and password: {}".format(username, password)) + + return redirect('/') + except Exception as identifier: + + return redirect('/') + + else: + return render(request, 'login.html') \ No newline at end of file diff --git a/benchcoach/wsgi.py b/benchcoachproject/wsgi.py similarity index 80% rename from benchcoach/wsgi.py rename to benchcoachproject/wsgi.py index 125e95f..a17d35c 100644 --- a/benchcoach/wsgi.py +++ b/benchcoachproject/wsgi.py @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'events.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'benchcoachproject.settings') application = get_wsgi_application() diff --git a/events/admin.py b/events/admin.py deleted file mode 100644 index ccdab45..0000000 --- a/events/admin.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.contrib import admin -from .models import Event - - -# Register your models here. -admin.site.register(Event) - diff --git a/events/apps.py b/events/apps.py deleted file mode 100644 index 20f48f2..0000000 --- a/events/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class EventsConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'events' diff --git a/events/fixtures/2021cmba.json b/events/fixtures/2021cmba.json deleted file mode 100644 index 76d16e5..0000000 --- a/events/fixtures/2021cmba.json +++ /dev/null @@ -1,412 +0,0 @@ -[ - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-03-11 17:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-03-21 13:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 18, - "away_team_id": 5, - "home_team_id": null, - "start": "2021-03-28 16:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 5, - "home_team_id": 10, - "start": "2021-04-03 12:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 18, - "away_team_id": 5, - "home_team_id": 10, - "start": "2021-04-11 10:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 5, - "home_team_id": 4, - "start": "2021-04-17 10:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 5, - "home_team_id": 8, - "start": "2021-04-24 10:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-04-27 17:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 1, - "home_team_id": 5, - "start": "2021-05-01 12:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 7, - "away_team_id": 7, - "home_team_id": 5, - "start": "2021-05-02 10:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 4, - "away_team_id": 5, - "home_team_id": 9, - "start": "2021-05-06 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 4, - "away_team_id": 8, - "home_team_id": 5, - "start": "2021-05-08 12:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 2, - "away_team_id": null, - "home_team_id": null, - "start": "2021-05-11 17:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 16, - "away_team_id": 5, - "home_team_id": 6, - "start": "2021-05-16 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 4, - "away_team_id": 5, - "home_team_id": 3, - "start": "2021-05-21 19:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 7, - "away_team_id": 5, - "home_team_id": 8, - "start": "2021-05-22 12:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 5, - "home_team_id": 7, - "start": "2021-05-23 10:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 5, - "home_team_id": 1, - "start": "2021-05-30 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 2, - "home_team_id": 5, - "start": "2021-06-01 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 9, - "home_team_id": 5, - "start": "2021-06-03 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 7, - "away_team_id": 5, - "home_team_id": 9, - "start": "2021-06-05 12:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 7, - "home_team_id": 5, - "start": "2021-06-06 10:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 4, - "away_team_id": 5, - "home_team_id": 4, - "start": "2021-06-10 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 16, - "away_team_id": 1, - "home_team_id": 5, - "start": "2021-06-13 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": 3, - "home_team_id": 5, - "start": "2021-06-15 19:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-06-18 20:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 21, - "away_team_id": 10, - "home_team_id": 5, - "start": "2021-06-19 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 4, - "away_team_id": 5, - "home_team_id": 10, - "start": "2021-06-19 12:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-06-23 20:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-06-25 19:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 1, - "away_team_id": null, - "home_team_id": null, - "start": "2021-06-27 16:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 4, - "away_team_id": 5, - "home_team_id": 2, - "start": "2021-07-08 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 2, - "away_team_id": 4, - "home_team_id": 5, - "start": "2021-07-10 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 19, - "away_team_id": 4, - "home_team_id": 5, - "start": "2021-07-11 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 16, - "away_team_id": 10, - "home_team_id": 5, - "start": "2021-07-13 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 2, - "away_team_id": 5, - "home_team_id": 2, - "start": "2021-07-15 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 20, - "away_team_id": 5, - "home_team_id": 6, - "start": "2021-07-18 9:30:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 5, - "away_team_id": 8, - "home_team_id": 5, - "start": "2021-07-21 20:00:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 3, - "away_team_id": 5, - "home_team_id": 3, - "start": "2021-07-22 19:15:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 5, - "away_team_id": 6, - "home_team_id": 5, - "start": "2021-07-29 17:50:00" - } - }, - { - "model": "events.event", - "pk": null, - "fields": { - "venue_id": 5, - "away_team_id": 1, - "home_team_id": 5, - "start": "2021-07-31 9:30:00" - } - } -] \ No newline at end of file diff --git a/events/fixtures/blaseball.yaml b/events/fixtures/blaseball.yaml deleted file mode 100644 index b13be0a..0000000 --- a/events/fixtures/blaseball.yaml +++ /dev/null @@ -1,245 +0,0 @@ -- model: events.event - pk: 1 - fields: - start: '2020-08-24T16:00:01' - away_team_id: '1' - home_team_id: '7' - venue_id: '15' -- model: events.event - pk: 2 - fields: - start: '2020-08-24T19:00:02' - away_team_id: '7' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 3 - fields: - start: '2020-08-24T22:00:01' - away_team_id: '12' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 4 - fields: - start: '2020-08-25T00:00:01' - away_team_id: '12' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 5 - fields: - start: '2020-08-25T01:00:02' - away_team_id: '1' - home_team_id: '2' - venue_id: '10' -- model: events.event - pk: 6 - fields: - start: '2020-08-25T04:00:00' - away_team_id: '6' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 7 - fields: - start: '2020-08-25T07:00:03' - away_team_id: '1' - home_team_id: '6' - venue_id: '8' -- model: events.event - pk: 8 - fields: - start: '2020-08-25T10:00:03' - away_team_id: '11' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 9 - fields: - start: '2020-08-25T13:00:01' - away_team_id: '7' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 10 - fields: - start: '2020-08-25T16:00:00' - away_team_id: '1' - home_team_id: '7' - venue_id: '15' -- model: events.event - pk: 11 - fields: - start: '2020-08-25T19:00:03' - away_team_id: '1' - home_team_id: '16' - venue_id: '24' -- model: events.event - pk: 12 - fields: - start: '2020-08-26T00:00:03' - away_team_id: '6' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 13 - fields: - start: '2020-08-26T01:00:01' - away_team_id: '1' - home_team_id: '12' - venue_id: '20' -- model: events.event - pk: 14 - fields: - start: '2020-08-26T04:00:01' - away_team_id: '1' - home_team_id: '2' - venue_id: '10' -- model: events.event - pk: 15 - fields: - start: '2020-08-26T07:00:02' - away_team_id: '1' - home_team_id: '4' - venue_id: '23' -- model: events.event - pk: 16 - fields: - start: '2020-08-26T13:00:02' - away_team_id: '11' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 17 - fields: - start: '2020-08-26T16:00:00' - away_team_id: '15' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 18 - fields: - start: '2020-08-26T19:00:03' - away_team_id: '16' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 19 - fields: - start: '2020-08-27T00:00:02' - away_team_id: '11' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 20 - fields: - start: '2020-08-27T01:00:00' - away_team_id: '15' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 21 - fields: - start: '2020-08-27T14:00:02' - away_team_id: '1' - home_team_id: '2' - venue_id: '10' -- model: events.event - pk: 22 - fields: - start: '2020-08-27T17:00:01' - away_team_id: '7' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 23 - fields: - start: '2020-08-27T23:00:02' - away_team_id: '1' - home_team_id: '7' - venue_id: '15' -- model: events.event - pk: 24 - fields: - start: '2020-08-28T00:00:02' - away_team_id: '1' - home_team_id: '7' - venue_id: '15' -- model: events.event - pk: 25 - fields: - start: '2021-10-26T17:12:48' - away_team_id: '1' - home_team_id: '7' - venue_id: '15' -- model: events.event - pk: 26 - fields: - start: '2020-08-28T05:00:05' - away_team_id: '1' - home_team_id: '20' - venue_id: '21' -- model: events.event - pk: 27 - fields: - start: '2020-08-28T08:00:02' - away_team_id: '1' - home_team_id: '12' - venue_id: '20' -- model: events.event - pk: 28 - fields: - start: '2020-08-28T11:00:06' - away_team_id: '1' - home_team_id: '11' - venue_id: '16' -- model: events.event - pk: 29 - fields: - start: '2020-08-28T14:00:02' - away_team_id: '1' - home_team_id: '4' - venue_id: '23' -- model: events.event - pk: 30 - fields: - start: '2020-08-28T17:00:05' - away_team_id: '1' - home_team_id: '6' - venue_id: '8' -- model: events.event - pk: 31 - fields: - start: '2020-08-28T23:00:09' - away_team_id: '19' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 32 - fields: - start: '2020-08-29T00:00:05' - away_team_id: '19' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 33 - fields: - start: '2020-08-29T02:00:02' - away_team_id: '6' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 34 - fields: - start: '2020-08-29T05:00:06' - away_team_id: '15' - home_team_id: '1' - venue_id: '4' -- model: events.event - pk: 35 - fields: - start: '2020-08-29T13:00:06' - away_team_id: '8' - home_team_id: '1' - venue_id: '4' \ No newline at end of file diff --git a/events/forms.py b/events/forms.py deleted file mode 100644 index c0716a4..0000000 --- a/events/forms.py +++ /dev/null @@ -1,7 +0,0 @@ -from django import forms -from .models import Event - -class EventForm(forms.ModelForm): - class Meta: - model = Event - fields = ['start', 'home_team', 'away_team', 'venue'] \ No newline at end of file diff --git a/events/migrations/0001_initial.py b/events/migrations/0001_initial.py deleted file mode 100644 index 80327a5..0000000 --- a/events/migrations/0001_initial.py +++ /dev/null @@ -1,60 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-07 17:43 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('venues', '0001_initial'), - ('teams', '0001_initial'), - ('players', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Event', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('start', models.DateTimeField(null=True)), - ('away_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='away_team', to='teams.team')), - ('home_team', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='home_team', to='teams.team')), - ('venue', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='venues.venue')), - ], - ), - migrations.CreateModel( - name='Season', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ], - ), - migrations.CreateModel( - name='Positioning', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('position', models.CharField(choices=[('P', 'P'), ('C', 'C'), ('1B', '1B'), ('2B', '2B'), ('3B', '3B'), ('SS', 'SS'), ('LF', 'LF'), ('CF', 'CF'), ('RF', 'RF'), ('DH', 'DH'), ('EH', 'EH')], default=None, max_length=2, null=True)), - ('order', models.IntegerField(default=None, null=True)), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event')), - ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')), - ], - options={ - 'unique_together': {('player', 'event')}, - }, - ), - migrations.CreateModel( - name='Availability', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('available', models.CharField(choices=[('Yes', 'YES'), ('No', 'NO'), ('Maybe', 'MAY'), ('Unknown', 'UNK')], default='UNK', max_length=7)), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event')), - ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')), - ], - options={ - 'unique_together': {('event', 'player')}, - }, - ), - ] diff --git a/events/migrations/0002_alter_availability_options.py b/events/migrations/0002_alter_availability_options.py deleted file mode 100644 index 8c420d4..0000000 --- a/events/migrations/0002_alter_availability_options.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-07 18:39 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='availability', - options={'verbose_name_plural': 'availabilities'}, - ), - ] diff --git a/events/migrations/0003_delete_positioning.py b/events/migrations/0003_delete_positioning.py deleted file mode 100644 index 9f2e51c..0000000 --- a/events/migrations/0003_delete_positioning.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-11 03:14 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0002_alter_availability_options'), - ] - - operations = [ - migrations.DeleteModel( - name='Positioning', - ), - ] diff --git a/events/migrations/0004_delete_availability.py b/events/migrations/0004_delete_availability.py deleted file mode 100644 index 3b81fae..0000000 --- a/events/migrations/0004_delete_availability.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-14 23:59 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0003_delete_positioning'), - ] - - operations = [ - migrations.DeleteModel( - name='Availability', - ), - ] diff --git a/events/models.py b/events/models.py deleted file mode 100644 index 51eb2e2..0000000 --- a/events/models.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.db import models -from venues.models import Venue -from teams.models import Team -from players.models import Player, StatLine - -class Event(models.Model): - start = models.DateTimeField(null=True) - venue = models.ForeignKey(Venue, null=True, on_delete=models.CASCADE) - home_team = models.ForeignKey(Team, null=True,on_delete=models.CASCADE, related_name="home_team") - away_team = models.ForeignKey(Team, null=True,on_delete=models.CASCADE, related_name="away_team") - - def __str__(self): - return f"{self.start:%Y-%m-%d %H:%M}" - -class Season(models.Model): - name = models.CharField(max_length=50) \ No newline at end of file diff --git a/events/tests.py b/events/tests.py deleted file mode 100644 index 4128e1f..0000000 --- a/events/tests.py +++ /dev/null @@ -1,80 +0,0 @@ -from django.test import TestCase, Client -from django.test.utils import setup_test_environment -from django.urls import reverse -from .models import Event -from datetime import datetime -FIXTURES = ['blaseball'] - -class TestEventModel(TestCase): - fixtures = FIXTURES - - def test_query_event(self): - """ - Return the desired event - """ - event = Event.objects.get(id=1) - self.assertEqual("Chicago Firefighters", event.away_team.name) - self.assertEqual("Dallas Steaks", event.home_team.name) - self.assertEqual('George Fourman Stadium', event.venue.name) - self.assertEqual(datetime( - year=2020, - month=8, - day=24, - hour=16, - minute=0, - second=1), event.start) - -class TestEventViews(TestCase): - fixtures = FIXTURES - - def test_event_list(self): - response = self.client.get(reverse('schedule')) - self.assertEqual(200, response.status_code) - - def test_event_edit(self): - response = self.client.get(reverse('edit event', args=[2])) - self.assertEqual(200, response.status_code) - - # create new event - new_event_data = { - 'home_team': 23, - 'away_team': 24, - 'start':datetime( - year=2021, - month=1, - day=1, - hour=9, - minute=0, - second=0), - 'venue':19 - } - - response = self.client.post(reverse('edit event', args=[0]), data=new_event_data) - self.assertEqual(201, response.status_code) - new_event = Event.objects.get(id=response.context['id']) - self.assertEqual(new_event_data['home_team'], new_event.home_team.id) - self.assertEqual(new_event_data['away_team'], new_event.away_team_id) - self.assertEqual(new_event_data['start'], new_event.start) - - # modify event - modified_event_data = { - 'home_team': 23, - 'away_team': 24, - 'start':datetime( - year=2021, - month=1, - day=1, - hour=9, - minute=0, - second=0), - 'venue':19 - } - response = self.client.post(reverse('edit event', args=[1]), data=modified_event_data) - self.assertEqual(200, response.status_code) - self.assertEqual(1, response.context['id']) - modified_event = Event.objects.get(id=response.context['id']) - - self.assertEqual(modified_event_data['home_team'], modified_event.home_team.id) - self.assertEqual(modified_event_data['away_team'], modified_event.away_team.id) - self.assertEqual(modified_event_data['start'], modified_event.start) - self.assertEqual(modified_event_data['venue'], modified_event.venue.id) diff --git a/events/urls.py b/events/urls.py deleted file mode 100644 index d9b9f92..0000000 --- a/events/urls.py +++ /dev/null @@ -1,12 +0,0 @@ -from django.contrib import admin - -from django.urls import path, include - -from . import views - -urlpatterns = [ - path('', views.root, name="root"), - path('list', views.EventsListView.as_view(), name="events list"), - path('edit/', views.EventEditView.as_view(), name="edit event"), - path('edit', views.EventEditView.as_view(), name="edit event"), -] \ No newline at end of file diff --git a/events/views.py b/events/views.py deleted file mode 100644 index d4e5b8d..0000000 --- a/events/views.py +++ /dev/null @@ -1,34 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from django.urls import reverse -from .models import Event -from .forms import EventForm -from lib.views import BenchcoachListView, BenchcoachEditView - -def root(request): - return redirect(reverse('events list')) - -class EventsListView(BenchcoachListView): - Model = Event - edit_url = 'edit event' - list_url = 'events list' - page_title = "Events" - title_strf = '{item.away_team} vs. {item.home_team}' - body_strf = "{item.start:%a, %b %-d, %-I:%M %p},\n{item.venue}" - active_tabs = ['events_tab'] - - def get_context_data(self): - context = super().get_context_data() - for item in context['items']: - item['buttons'].append( - { - 'label': 'Edit Lineup', - 'href': reverse('edit lineup', args=[item['id']]) - } - ) - return context - -class EventEditView(BenchcoachEditView): - Model = Event - edit_url = 'edit event' - list_url = 'events list' - Form = EventForm \ No newline at end of file diff --git a/lineups/__init__.py b/lineups/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/lineups/admin.py b/lineups/admin.py deleted file mode 100644 index d067bb9..0000000 --- a/lineups/admin.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.contrib import admin -from .models import Availability, Positioning - -# Register your models here. -admin.site.register(Availability) -admin.site.register(Positioning) \ No newline at end of file diff --git a/lineups/apps.py b/lineups/apps.py deleted file mode 100644 index 757f8dd..0000000 --- a/lineups/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class LineupsConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'lineups' diff --git a/lineups/fixtures/2021cmba.json b/lineups/fixtures/2021cmba.json deleted file mode 100644 index 39b4e6e..0000000 --- a/lineups/fixtures/2021cmba.json +++ /dev/null @@ -1,12577 +0,0 @@ -[ - { - "model": "lineups.positioning", - "pk": 1, - "fields": { - "player": 18, - "event": 9, - "position": "LF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 2, - "fields": { - "player": 19, - "event": 9, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 3, - "fields": { - "player": 22, - "event": 9, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 4, - "fields": { - "player": 10, - "event": 9, - "position": "1B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 5, - "fields": { - "player": 15, - "event": 9, - "position": "2B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 6, - "fields": { - "player": 5, - "event": 9, - "position": "RF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 7, - "fields": { - "player": 2, - "event": 9, - "position": "P", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 8, - "fields": { - "player": 20, - "event": 9, - "position": "CF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 9, - "fields": { - "player": 1, - "event": 9, - "position": "C", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 10, - "fields": { - "player": 11, - "event": 9, - "position": "EH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 11, - "fields": { - "player": 11, - "event": 10, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 12, - "fields": { - "player": 18, - "event": 10, - "position": "CF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 13, - "fields": { - "player": 19, - "event": 10, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 14, - "fields": { - "player": 22, - "event": 10, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 15, - "fields": { - "player": 2, - "event": 10, - "position": "EH", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 16, - "fields": { - "player": 8, - "event": 10, - "position": "1B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 17, - "fields": { - "player": 5, - "event": 10, - "position": "LF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 18, - "fields": { - "player": 10, - "event": 10, - "position": "DH", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 19, - "fields": { - "player": 15, - "event": 10, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 20, - "fields": { - "player": 14, - "event": 10, - "position": "2B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 21, - "fields": { - "player": 1, - "event": 10, - "position": "C", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 22, - "fields": { - "player": 4, - "event": 10, - "position": "RF", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 23, - "fields": { - "player": 7, - "event": 11, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 24, - "fields": { - "player": 18, - "event": 11, - "position": "RF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 25, - "fields": { - "player": 16, - "event": 11, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 26, - "fields": { - "player": 22, - "event": 11, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 27, - "fields": { - "player": 2, - "event": 11, - "position": "LF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 28, - "fields": { - "player": 8, - "event": 11, - "position": "1B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 29, - "fields": { - "player": 15, - "event": 11, - "position": "SS", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 30, - "fields": { - "player": 13, - "event": 11, - "position": "2B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 31, - "fields": { - "player": 5, - "event": 11, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 32, - "fields": { - "player": 1, - "event": 11, - "position": "C", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 33, - "fields": { - "player": 4, - "event": 11, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 34, - "fields": { - "player": 11, - "event": 12, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 35, - "fields": { - "player": 18, - "event": 12, - "position": "EH", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 36, - "fields": { - "player": 19, - "event": 12, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 37, - "fields": { - "player": 22, - "event": 12, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 38, - "fields": { - "player": 10, - "event": 12, - "position": "1B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 39, - "fields": { - "player": 2, - "event": 12, - "position": "EH", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 40, - "fields": { - "player": 5, - "event": 12, - "position": "LF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 41, - "fields": { - "player": 20, - "event": 12, - "position": "CF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 42, - "fields": { - "player": 3, - "event": 12, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 43, - "fields": { - "player": 8, - "event": 12, - "position": "DH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 44, - "fields": { - "player": 1, - "event": 12, - "position": "C", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 45, - "fields": { - "player": 4, - "event": 12, - "position": "RF", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 46, - "fields": { - "player": 24, - "event": 14, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 47, - "fields": { - "player": 18, - "event": 14, - "position": "2B", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 48, - "fields": { - "player": 6, - "event": 14, - "position": "DH", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 49, - "fields": { - "player": 19, - "event": 14, - "position": "SS", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 50, - "fields": { - "player": 22, - "event": 14, - "position": "3B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 51, - "fields": { - "player": 2, - "event": 14, - "position": "LF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 52, - "fields": { - "player": 13, - "event": 14, - "position": "RF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 53, - "fields": { - "player": 8, - "event": 14, - "position": "1B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 54, - "fields": { - "player": 20, - "event": 14, - "position": "CF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 55, - "fields": { - "player": 9, - "event": 14, - "position": "EH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 56, - "fields": { - "player": 1, - "event": 14, - "position": "C", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 57, - "fields": { - "player": 11, - "event": 14, - "position": "EH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 58, - "fields": { - "player": 7, - "event": 15, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 59, - "fields": { - "player": 18, - "event": 15, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 60, - "fields": { - "player": 19, - "event": 15, - "position": "EH", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 61, - "fields": { - "player": 22, - "event": 15, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 62, - "fields": { - "player": 6, - "event": 15, - "position": "DH", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 63, - "fields": { - "player": 10, - "event": 15, - "position": "1B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 64, - "fields": { - "player": 2, - "event": 15, - "position": "LF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 65, - "fields": { - "player": 1, - "event": 15, - "position": "C", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 66, - "fields": { - "player": 20, - "event": 15, - "position": "CF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 67, - "fields": { - "player": 15, - "event": 15, - "position": "RF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 68, - "fields": { - "player": 12, - "event": 15, - "position": "2B", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 69, - "fields": { - "player": 14, - "event": 15, - "position": "EH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 70, - "fields": { - "player": 11, - "event": 16, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 71, - "fields": { - "player": 16, - "event": 16, - "position": "CF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 72, - "fields": { - "player": 18, - "event": 16, - "position": "C", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 73, - "fields": { - "player": 19, - "event": 16, - "position": "SS", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 74, - "fields": { - "player": 22, - "event": 16, - "position": "EH", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 75, - "fields": { - "player": 10, - "event": 16, - "position": "EH", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 76, - "fields": { - "player": 13, - "event": 16, - "position": "3B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 77, - "fields": { - "player": 5, - "event": 16, - "position": "LF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 78, - "fields": { - "player": 12, - "event": 16, - "position": "DH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 79, - "fields": { - "player": 9, - "event": 16, - "position": "2B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 80, - "fields": { - "player": 17, - "event": 16, - "position": "RF", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 81, - "fields": { - "player": 24, - "event": 16, - "position": "1B", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 82, - "fields": { - "player": 2, - "event": 17, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 83, - "fields": { - "player": 18, - "event": 17, - "position": "3B", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 84, - "fields": { - "player": 13, - "event": 17, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 85, - "fields": { - "player": 22, - "event": 17, - "position": "EH", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 86, - "fields": { - "player": 6, - "event": 17, - "position": "CF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 87, - "fields": { - "player": 10, - "event": 17, - "position": "EH", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 88, - "fields": { - "player": 14, - "event": 17, - "position": "1B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 89, - "fields": { - "player": 1, - "event": 17, - "position": "C", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 90, - "fields": { - "player": 5, - "event": 17, - "position": "LF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 91, - "fields": { - "player": 3, - "event": 17, - "position": "2B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 92, - "fields": { - "player": 11, - "event": 17, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 93, - "fields": { - "player": 4, - "event": 17, - "position": "RF", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 94, - "fields": { - "player": 24, - "event": 18, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 95, - "fields": { - "player": 15, - "event": 18, - "position": "3B", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 96, - "fields": { - "player": 2, - "event": 18, - "position": "RF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 97, - "fields": { - "player": 19, - "event": 18, - "position": "SS", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 98, - "fields": { - "player": 10, - "event": 18, - "position": "1B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 99, - "fields": { - "player": 18, - "event": 18, - "position": "2B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 100, - "fields": { - "player": 20, - "event": 18, - "position": "CF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 101, - "fields": { - "player": 6, - "event": 18, - "position": "LF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 102, - "fields": { - "player": 1, - "event": 18, - "position": "C", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 103, - "fields": { - "player": 5, - "event": 18, - "position": "EH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 104, - "fields": { - "player": 7, - "event": 18, - "position": "EH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 105, - "fields": { - "player": 14, - "event": 18, - "position": "DH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 106, - "fields": { - "player": 7, - "event": 19, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 107, - "fields": { - "player": 13, - "event": 19, - "position": "LF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 108, - "fields": { - "player": 2, - "event": 19, - "position": "C", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 109, - "fields": { - "player": 6, - "event": 19, - "position": "DH", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 110, - "fields": { - "player": 10, - "event": 19, - "position": "1B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 111, - "fields": { - "player": 5, - "event": 19, - "position": "CF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 112, - "fields": { - "player": 18, - "event": 19, - "position": "3B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 113, - "fields": { - "player": 22, - "event": 19, - "position": "SS", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 114, - "fields": { - "player": 15, - "event": 19, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 115, - "fields": { - "player": 9, - "event": 19, - "position": "EH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 116, - "fields": { - "player": 17, - "event": 19, - "position": "RF", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 117, - "fields": { - "player": 23, - "event": 19, - "position": "2B", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 118, - "fields": { - "player": 2, - "event": 20, - "position": "P", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 119, - "fields": { - "player": 19, - "event": 20, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 120, - "fields": { - "player": 22, - "event": 20, - "position": "3B", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 121, - "fields": { - "player": 5, - "event": 20, - "position": "RF", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 122, - "fields": { - "player": 18, - "event": 20, - "position": "EH", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 123, - "fields": { - "player": 1, - "event": 20, - "position": "C", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 124, - "fields": { - "player": 6, - "event": 20, - "position": "CF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 125, - "fields": { - "player": 8, - "event": 20, - "position": "1B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 126, - "fields": { - "player": 9, - "event": 20, - "position": "2B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 127, - "fields": { - "player": 4, - "event": 20, - "position": "EH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 128, - "fields": { - "player": 24, - "event": 20, - "position": "LF", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 129, - "fields": { - "player": 11, - "event": 21, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 130, - "fields": { - "player": 2, - "event": 21, - "position": "EH", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 131, - "fields": { - "player": 22, - "event": 21, - "position": "DH", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 132, - "fields": { - "player": 18, - "event": 21, - "position": "SS", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 133, - "fields": { - "player": 15, - "event": 21, - "position": "3B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 134, - "fields": { - "player": 10, - "event": 21, - "position": "1B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 135, - "fields": { - "player": 5, - "event": 21, - "position": "LF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 136, - "fields": { - "player": 9, - "event": 21, - "position": "2B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 137, - "fields": { - "player": 6, - "event": 21, - "position": "CF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 138, - "fields": { - "player": 1, - "event": 21, - "position": "C", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 139, - "fields": { - "player": 4, - "event": 21, - "position": "RF", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 140, - "fields": { - "player": 15, - "event": 23, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 141, - "fields": { - "player": 10, - "event": 23, - "position": "1B", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 142, - "fields": { - "player": 22, - "event": 23, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 143, - "fields": { - "player": 18, - "event": 23, - "position": "LF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 144, - "fields": { - "player": 16, - "event": 23, - "position": "CF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 145, - "fields": { - "player": 5, - "event": 23, - "position": "RF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 146, - "fields": { - "player": 1, - "event": 23, - "position": "C", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 147, - "fields": { - "player": 9, - "event": 23, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 148, - "fields": { - "player": 8, - "event": 23, - "position": "DH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 149, - "fields": { - "player": 14, - "event": 23, - "position": "EH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 150, - "fields": { - "player": 4, - "event": 23, - "position": "EH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 151, - "fields": { - "player": 11, - "event": 24, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 152, - "fields": { - "player": 18, - "event": 24, - "position": "EH", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 153, - "fields": { - "player": 15, - "event": 24, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 154, - "fields": { - "player": 22, - "event": 24, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 155, - "fields": { - "player": 6, - "event": 24, - "position": "LF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 156, - "fields": { - "player": 1, - "event": 24, - "position": "C", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 157, - "fields": { - "player": 5, - "event": 24, - "position": "2B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 158, - "fields": { - "player": 14, - "event": 24, - "position": "1B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 159, - "fields": { - "player": 4, - "event": 24, - "position": "RF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 160, - "fields": { - "player": 20, - "event": 24, - "position": "CF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 161, - "fields": { - "player": 23, - "event": 24, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 162, - "fields": { - "player": 2, - "event": 25, - "position": "P", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 163, - "fields": { - "player": 16, - "event": 25, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 164, - "fields": { - "player": 22, - "event": 25, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 165, - "fields": { - "player": 15, - "event": 25, - "position": "C", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 166, - "fields": { - "player": 13, - "event": 25, - "position": "2B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 167, - "fields": { - "player": 18, - "event": 25, - "position": "SS", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 168, - "fields": { - "player": 10, - "event": 25, - "position": "1B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 169, - "fields": { - "player": 5, - "event": 25, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 170, - "fields": { - "player": 17, - "event": 25, - "position": "LF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 171, - "fields": { - "player": 4, - "event": 25, - "position": "RF", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 172, - "fields": { - "player": 12, - "event": 25, - "position": "EH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 173, - "fields": { - "player": 24, - "event": 27, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 174, - "fields": { - "player": 18, - "event": 27, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 175, - "fields": { - "player": 15, - "event": 27, - "position": "C", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 176, - "fields": { - "player": 2, - "event": 27, - "position": "EH", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 177, - "fields": { - "player": 16, - "event": 27, - "position": "CF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 178, - "fields": { - "player": 5, - "event": 27, - "position": "3B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 179, - "fields": { - "player": 8, - "event": 27, - "position": "1B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 180, - "fields": { - "player": 17, - "event": 27, - "position": "LF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 181, - "fields": { - "player": 4, - "event": 27, - "position": "RF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 182, - "fields": { - "player": 23, - "event": 27, - "position": "2B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 183, - "fields": { - "player": 25, - "event": 27, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 184, - "fields": { - "player": 18, - "event": 28, - "position": "LF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 185, - "fields": { - "player": 15, - "event": 28, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 186, - "fields": { - "player": 2, - "event": 28, - "position": "P", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 187, - "fields": { - "player": 5, - "event": 28, - "position": "C", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 188, - "fields": { - "player": 8, - "event": 28, - "position": "3B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 189, - "fields": { - "player": 17, - "event": 28, - "position": "CF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 190, - "fields": { - "player": 4, - "event": 28, - "position": "RF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 191, - "fields": { - "player": 25, - "event": 28, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 192, - "fields": { - "player": 23, - "event": 28, - "position": "EH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 193, - "fields": { - "player": 24, - "event": 28, - "position": "1B", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 194, - "fields": { - "player": 25, - "event": 32, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 195, - "fields": { - "player": 15, - "event": 32, - "position": "C", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 196, - "fields": { - "player": 16, - "event": 32, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 197, - "fields": { - "player": 22, - "event": 32, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 198, - "fields": { - "player": 19, - "event": 32, - "position": "SS", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 199, - "fields": { - "player": 18, - "event": 32, - "position": "LF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 200, - "fields": { - "player": 13, - "event": 32, - "position": "RF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 201, - "fields": { - "player": 5, - "event": 32, - "position": "2B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 202, - "fields": { - "player": 17, - "event": 32, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 203, - "fields": { - "player": 8, - "event": 32, - "position": "1B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 204, - "fields": { - "player": 2, - "event": 32, - "position": "EH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 205, - "fields": { - "player": 4, - "event": 32, - "position": "DH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 206, - "fields": { - "player": 19, - "event": 33, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 207, - "fields": { - "player": 16, - "event": 33, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 208, - "fields": { - "player": 22, - "event": 33, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 209, - "fields": { - "player": 2, - "event": 33, - "position": "RF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 210, - "fields": { - "player": 18, - "event": 33, - "position": "C", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 211, - "fields": { - "player": 10, - "event": 33, - "position": "EH", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 212, - "fields": { - "player": 20, - "event": 33, - "position": "2B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 213, - "fields": { - "player": 17, - "event": 33, - "position": "LF", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 214, - "fields": { - "player": 7, - "event": 33, - "position": "P", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 215, - "fields": { - "player": 12, - "event": 33, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 216, - "fields": { - "player": 4, - "event": 33, - "position": "EH", - "order": 11 - } - }, - { - "model": "lineups.positioning", - "pk": 217, - "fields": { - "player": 19, - "event": 34, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 218, - "fields": { - "player": 2, - "event": 34, - "position": "P", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 219, - "fields": { - "player": 22, - "event": 34, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 220, - "fields": { - "player": 18, - "event": 34, - "position": "LF", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 221, - "fields": { - "player": 20, - "event": 34, - "position": "CF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 222, - "fields": { - "player": 5, - "event": 34, - "position": "C", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 223, - "fields": { - "player": 24, - "event": 34, - "position": "1B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 224, - "fields": { - "player": 9, - "event": 34, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 225, - "fields": { - "player": 4, - "event": 34, - "position": "RF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 226, - "fields": { - "player": 25, - "event": 35, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 227, - "fields": { - "player": 19, - "event": 35, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 228, - "fields": { - "player": 13, - "event": 35, - "position": "3B", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 229, - "fields": { - "player": 22, - "event": 35, - "position": "C", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 230, - "fields": { - "player": 15, - "event": 35, - "position": "2B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 231, - "fields": { - "player": 10, - "event": 35, - "position": "1B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 232, - "fields": { - "player": 18, - "event": 35, - "position": "RF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 233, - "fields": { - "player": 20, - "event": 35, - "position": "CF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 234, - "fields": { - "player": 5, - "event": 35, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 235, - "fields": { - "player": 7, - "event": 35, - "position": "LF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 236, - "fields": { - "player": 4, - "event": 35, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 237, - "fields": { - "player": 7, - "event": 37, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 238, - "fields": { - "player": 13, - "event": 37, - "position": "3B", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 239, - "fields": { - "player": 16, - "event": 37, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 240, - "fields": { - "player": 15, - "event": 37, - "position": "C", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 241, - "fields": { - "player": 10, - "event": 37, - "position": "1B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 242, - "fields": { - "player": 18, - "event": 37, - "position": "SS", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 243, - "fields": { - "player": 20, - "event": 37, - "position": "LF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 244, - "fields": { - "player": 5, - "event": 37, - "position": "2B", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 245, - "fields": { - "player": 8, - "event": 37, - "position": "DH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 246, - "fields": { - "player": 4, - "event": 37, - "position": "RF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 247, - "fields": { - "player": 18, - "event": 36, - "position": "SS", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 248, - "fields": { - "player": 5, - "event": 36, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 249, - "fields": { - "player": 15, - "event": 36, - "position": "LF", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 250, - "fields": { - "player": 10, - "event": 36, - "position": "P", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 251, - "fields": { - "player": 8, - "event": 36, - "position": "3B", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 252, - "fields": { - "player": 14, - "event": 36, - "position": "C", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 253, - "fields": { - "player": 4, - "event": 36, - "position": "RF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 254, - "fields": { - "player": 24, - "event": 36, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 255, - "fields": { - "player": 7, - "event": 38, - "position": "LF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 256, - "fields": { - "player": 15, - "event": 38, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 257, - "fields": { - "player": 22, - "event": 38, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 258, - "fields": { - "player": 10, - "event": 38, - "position": "2B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 259, - "fields": { - "player": 18, - "event": 38, - "position": "RF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 260, - "fields": { - "player": 17, - "event": 38, - "position": "CF", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 261, - "fields": { - "player": 5, - "event": 38, - "position": "C", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 262, - "fields": { - "player": 8, - "event": 38, - "position": "1B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 263, - "fields": { - "player": 6, - "event": 38, - "position": "P", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 264, - "fields": { - "player": 4, - "event": 38, - "position": "EH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 265, - "fields": { - "player": 15, - "event": 39, - "position": "C", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 266, - "fields": { - "player": 17, - "event": 39, - "position": "CF", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 267, - "fields": { - "player": 22, - "event": 39, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 268, - "fields": { - "player": 18, - "event": 39, - "position": "SS", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 269, - "fields": { - "player": 9, - "event": 39, - "position": "P", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 270, - "fields": { - "player": 14, - "event": 39, - "position": "1B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 271, - "fields": { - "player": 4, - "event": 39, - "position": "LF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 272, - "fields": { - "player": 23, - "event": 39, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 273, - "fields": { - "player": 1, - "event": 39, - "position": "RF", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 274, - "fields": { - "player": 24, - "event": 40, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 275, - "fields": { - "player": 16, - "event": 40, - "position": "CF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 276, - "fields": { - "player": 15, - "event": 40, - "position": "SS", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 277, - "fields": { - "player": 22, - "event": 40, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 278, - "fields": { - "player": 18, - "event": 40, - "position": "1B", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 279, - "fields": { - "player": 20, - "event": 40, - "position": "LF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 280, - "fields": { - "player": 5, - "event": 40, - "position": "C", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 281, - "fields": { - "player": 4, - "event": 40, - "position": "RF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 282, - "fields": { - "player": 23, - "event": 40, - "position": "2B", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 283, - "fields": { - "player": 1, - "event": 40, - "position": "DH", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 284, - "fields": { - "player": 7, - "event": 41, - "position": "P", - "order": 0 - } - }, - { - "model": "lineups.positioning", - "pk": 285, - "fields": { - "player": 20, - "event": 41, - "position": "CF", - "order": 1 - } - }, - { - "model": "lineups.positioning", - "pk": 286, - "fields": { - "player": 15, - "event": 41, - "position": "C", - "order": 2 - } - }, - { - "model": "lineups.positioning", - "pk": 287, - "fields": { - "player": 22, - "event": 41, - "position": "3B", - "order": 3 - } - }, - { - "model": "lineups.positioning", - "pk": 288, - "fields": { - "player": 19, - "event": 41, - "position": "SS", - "order": 4 - } - }, - { - "model": "lineups.positioning", - "pk": 289, - "fields": { - "player": 2, - "event": 41, - "position": "LF", - "order": 5 - } - }, - { - "model": "lineups.positioning", - "pk": 290, - "fields": { - "player": 10, - "event": 41, - "position": "1B", - "order": 6 - } - }, - { - "model": "lineups.positioning", - "pk": 291, - "fields": { - "player": 18, - "event": 41, - "position": "RF", - "order": 7 - } - }, - { - "model": "lineups.positioning", - "pk": 292, - "fields": { - "player": 5, - "event": 41, - "position": "EH", - "order": 8 - } - }, - { - "model": "lineups.positioning", - "pk": 293, - "fields": { - "player": 9, - "event": 41, - "position": "2B", - "order": 9 - } - }, - { - "model": "lineups.positioning", - "pk": 294, - "fields": { - "player": 1, - "event": 41, - "position": "DH", - "order": 10 - } - }, - { - "model": "lineups.positioning", - "pk": 295, - "fields": { - "player": 3, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 296, - "fields": { - "player": 6, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 297, - "fields": { - "player": 7, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 298, - "fields": { - "player": 9, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 299, - "fields": { - "player": 12, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 300, - "fields": { - "player": 13, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 301, - "fields": { - "player": 16, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 302, - "fields": { - "player": 17, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 303, - "fields": { - "player": 20, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 304, - "fields": { - "player": 21, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 305, - "fields": { - "player": 23, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 306, - "fields": { - "player": 24, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 307, - "fields": { - "player": 25, - "event": 10, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 308, - "fields": { - "player": 1, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 309, - "fields": { - "player": 3, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 310, - "fields": { - "player": 4, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 311, - "fields": { - "player": 8, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 312, - "fields": { - "player": 11, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 313, - "fields": { - "player": 12, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 314, - "fields": { - "player": 14, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 315, - "fields": { - "player": 16, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 316, - "fields": { - "player": 19, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 317, - "fields": { - "player": 20, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 318, - "fields": { - "player": 21, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 319, - "fields": { - "player": 24, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 320, - "fields": { - "player": 25, - "event": 19, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 321, - "fields": { - "player": 3, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 322, - "fields": { - "player": 4, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 323, - "fields": { - "player": 6, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 324, - "fields": { - "player": 7, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 325, - "fields": { - "player": 8, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 326, - "fields": { - "player": 9, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 327, - "fields": { - "player": 12, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 328, - "fields": { - "player": 13, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 329, - "fields": { - "player": 14, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 330, - "fields": { - "player": 16, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 331, - "fields": { - "player": 17, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 332, - "fields": { - "player": 21, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 333, - "fields": { - "player": 23, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 334, - "fields": { - "player": 24, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.positioning", - "pk": 335, - "fields": { - "player": 25, - "event": 9, - "position": null, - "order": null - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 1, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 1, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 1, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 1, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 1, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 1, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 1, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 2, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 2, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 2, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 2, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 2, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 2, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 2, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 3, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 3, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 3, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 3, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 3, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 3, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 3, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 3, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 3, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 4, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 4, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 4, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 4, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 4, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 4, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 4, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 5, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 5, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 5, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 5, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 5, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 5, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 5, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 6, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 6, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 6, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 6, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 6, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 7, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 7, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 7, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 7, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 7, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 7, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 7, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 8, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 8, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 8, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 8, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 8, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 8, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 9, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 9, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 9, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 9, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 9, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 10, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 10, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 10, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 10, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 10, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 10, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 11, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 11, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 11, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 11, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 11, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 11, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 11, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 11, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 11, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 11, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 11, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 11, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 12, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 12, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 12, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 12, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 12, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 12, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 12, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 12, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 12, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 12, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 12, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 13, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 13, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 13, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 13, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 13, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 13, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 13, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 13, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 13, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 13, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 14, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 14, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 14, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 14, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 14, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 14, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 14, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 14, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 14, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 14, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 14, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 15, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 15, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 15, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 15, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 15, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 15, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 15, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 15, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 15, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 16, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 16, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 16, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 16, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 16, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 16, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 17, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 17, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 17, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 17, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 17, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 17, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 18, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 18, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 18, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 18, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 18, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 19, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 19, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 19, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 19, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 19, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 19, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 19, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 19, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 19, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 19, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 19, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 20, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 20, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 20, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 20, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 20, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 20, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 20, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 21, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 21, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 21, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 21, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 21, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 21, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 21, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 21, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 22, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 22, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 22, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 22, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 22, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 22, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 22, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 23, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 23, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 23, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 23, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 23, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 23, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 24, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 24, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 24, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 24, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 24, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 24, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 25, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 25, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 25, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 25, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 25, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 25, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 25, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 25, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 25, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 25, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 25, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 25, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 25, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 25, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 26, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 26, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 26, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 26, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 26, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 27, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 27, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 27, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 27, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 27, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 27, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 28, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 28, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 28, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 28, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 28, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 28, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 28, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 28, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 29, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 29, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 29, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 29, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 29, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 29, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 29, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 29, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 29, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 30, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 30, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 30, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 30, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 30, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 30, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 30, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 30, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 30, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 30, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 30, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 30, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 30, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 30, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 30, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 31, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 31, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 31, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 31, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 31, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 31, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 32, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 32, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 32, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 33, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 33, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 33, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 33, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 33, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 33, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 33, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 33, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 33, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 33, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 34, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 34, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 34, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 34, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 34, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 34, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 34, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 34, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 34, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 35, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 35, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 35, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 35, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 35, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 35, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 36, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 36, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 36, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 36, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 36, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 36, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 36, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 37, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 37, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 37, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 37, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 37, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 37, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 38, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 38, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 38, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 38, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 38, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 39, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 39, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 39, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 39, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 39, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 39, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 40, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 40, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 40, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 40, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 10, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 11, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 1, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 7, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 16, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 3, - "event_id": 41, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 19, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 21, - "event_id": 41, - "available": -1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 14, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 20, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 25, - "event_id": 41, - "available": 1 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 8, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 22, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 18, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 12, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 13, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 23, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 4, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 24, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 2, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 6, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 15, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 9, - "event_id": 41, - "available": 2 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 17, - "event_id": 41, - "available": 0 - } - }, - { - "model": "lineups.availability", - "pk": null, - "fields": { - "player_id": 5, - "event_id": 41, - "available": 2 - } - } -] diff --git a/lineups/migrations/0001_initial.py b/lineups/migrations/0001_initial.py deleted file mode 100644 index 33385f1..0000000 --- a/lineups/migrations/0001_initial.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-11 03:14 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('events', '0003_delete_positioning'), - ('players', '0003_player_team'), - ] - - operations = [ - migrations.CreateModel( - name='Positioning', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('position', models.CharField(choices=[('P', 'P'), ('C', 'C'), ('1B', '1B'), ('2B', '2B'), ('3B', '3B'), ('SS', 'SS'), ('LF', 'LF'), ('CF', 'CF'), ('RF', 'RF'), ('DH', 'DH'), ('EH', 'EH')], default=None, max_length=2, null=True)), - ('order', models.IntegerField(default=None, null=True)), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event')), - ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')), - ], - options={ - 'unique_together': {('player', 'event')}, - }, - ), - ] diff --git a/lineups/migrations/0002_availability.py b/lineups/migrations/0002_availability.py deleted file mode 100644 index 4811e01..0000000 --- a/lineups/migrations/0002_availability.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-14 23:59 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('players', '0003_player_team'), - ('events', '0004_delete_availability'), - ('lineups', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Availability', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('available', models.IntegerField(choices=[(2, 'Yes'), (-1, 'No'), (1, 'MAY'), (0, 0)], default=0, max_length=7)), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.event')), - ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')), - ], - options={ - 'verbose_name_plural': 'availabilities', - 'unique_together': {('event', 'player')}, - }, - ), - ] diff --git a/lineups/migrations/0003_alter_availability_available.py b/lineups/migrations/0003_alter_availability_available.py deleted file mode 100644 index c01a5ea..0000000 --- a/lineups/migrations/0003_alter_availability_available.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-15 00:32 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lineups', '0002_availability'), - ] - - operations = [ - migrations.AlterField( - model_name='availability', - name='available', - field=models.IntegerField(choices=[(2, 'Yes'), (0, 'No'), (1, 'MAY'), (-1, 0)], default=-1), - ), - ] diff --git a/lineups/migrations/0004_alter_availability_available.py b/lineups/migrations/0004_alter_availability_available.py deleted file mode 100644 index 27be08f..0000000 --- a/lineups/migrations/0004_alter_availability_available.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-15 00:40 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lineups', '0003_alter_availability_available'), - ] - - operations = [ - migrations.AlterField( - model_name='availability', - name='available', - field=models.IntegerField(choices=[(2, 'Yes'), (0, 'No'), (1, 'Maybe'), (-1, 'Unknown')], default=-1), - ), - ] diff --git a/lineups/migrations/0005_alter_positioning_position.py b/lineups/migrations/0005_alter_positioning_position.py deleted file mode 100644 index b16f894..0000000 --- a/lineups/migrations/0005_alter_positioning_position.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-18 23:37 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lineups', '0004_alter_availability_available'), - ] - - operations = [ - migrations.AlterField( - model_name='positioning', - name='position', - field=models.CharField(choices=[('EH', 'EH'), ('P', 'P'), ('C', 'C'), ('1B', '1B'), ('2B', '2B'), ('3B', '3B'), ('SS', 'SS'), ('LF', 'LF'), ('CF', 'CF'), ('RF', 'RF'), ('DH', 'DH')], default=None, max_length=2, null=True), - ), - ] diff --git a/lineups/migrations/0006_alter_positioning_order.py b/lineups/migrations/0006_alter_positioning_order.py deleted file mode 100644 index a064ea9..0000000 --- a/lineups/migrations/0006_alter_positioning_order.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-19 23:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lineups', '0005_alter_positioning_position'), - ] - - operations = [ - migrations.AlterField( - model_name='positioning', - name='order', - field=models.PositiveSmallIntegerField(default=0, null=True), - ), - ] diff --git a/lineups/migrations/0007_alter_positioning_position.py b/lineups/migrations/0007_alter_positioning_position.py deleted file mode 100644 index 08c686c..0000000 --- a/lineups/migrations/0007_alter_positioning_position.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-21 16:11 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lineups', '0006_alter_positioning_order'), - ] - - operations = [ - migrations.AlterField( - model_name='positioning', - name='position', - field=models.CharField(blank=True, choices=[('EH', 'EH'), ('P', 'P'), ('C', 'C'), ('1B', '1B'), ('2B', '2B'), ('3B', '3B'), ('SS', 'SS'), ('LF', 'LF'), ('CF', 'CF'), ('RF', 'RF'), ('DH', 'DH')], default=None, max_length=2, null=True), - ), - ] diff --git a/lineups/migrations/0008_alter_positioning_order.py b/lineups/migrations/0008_alter_positioning_order.py deleted file mode 100644 index 4507dfd..0000000 --- a/lineups/migrations/0008_alter_positioning_order.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.6 on 2021-12-11 16:32 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('lineups', '0007_alter_positioning_position'), - ] - - operations = [ - migrations.AlterField( - model_name='positioning', - name='order', - field=models.PositiveSmallIntegerField(blank=True, default=None, null=True), - ), - ] diff --git a/lineups/migrations/__init__.py b/lineups/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/lineups/models.py b/lineups/models.py deleted file mode 100644 index 48c5bf7..0000000 --- a/lineups/models.py +++ /dev/null @@ -1,52 +0,0 @@ -from django.db import models -from players.models import Player -from events.models import Event -# Create your models here. - -class Positioning(models.Model): - player = models.ForeignKey(Player, on_delete=models.CASCADE) - event = models.ForeignKey(Event, on_delete=models.CASCADE) - positions = [ - ('EH', 'EH'), - ('P', 'P'), - ('C', 'C'), - ('1B', '1B'), - ('2B', '2B'), - ('3B', '3B'), - ('SS', 'SS'), - ('LF', 'LF'), - ('CF', 'CF'), - ('RF', 'RF'), - ('DH','DH') - ] - position = models.CharField(choices=positions, default=None, max_length=2, null=True, blank=True) - order = models.PositiveSmallIntegerField(default=None, null=True, blank=True) - - class Meta: - unique_together = ('player', 'event',) - - def __str__(self): - return f"{self.player}; {self.event};" - -class Availability(models.Model): - YES = 2 - MAYBE = 1 - NO = 0 - UNKNOWN = -1 - - event = models.ForeignKey(Event, on_delete=models.CASCADE) - player = models.ForeignKey(Player, on_delete=models.CASCADE) - choices = [ - (YES, 'Yes'), - (NO, 'No'), - (MAYBE, 'Maybe'), - (UNKNOWN, 'Unknown') - ] - available = models.IntegerField(choices=choices, default=UNKNOWN) - - def __str__(self): - return f"{self.event}; {self.player}; {self.available}" - - class Meta: - unique_together = ('event', 'player',) - verbose_name_plural = "availabilities" \ No newline at end of file diff --git a/lineups/tests.py b/lineups/tests.py deleted file mode 100644 index 55f395e..0000000 --- a/lineups/tests.py +++ /dev/null @@ -1,52 +0,0 @@ -from django.test import TestCase -from django.test import TestCase, Client -from django.test.utils import setup_test_environment -from django.urls import reverse -from .models import Positioning, Player -from .forms import PositioningFormSet - -class TestVenueViews(TestCase): - fixtures = ['blaseball'] - - def test_positioning_list(self): - response = self.client.get(reverse('edit lineup', args=[1])) - self.assertEqual(response.status_code, 200) - - def test_positioning_formset(self): - event = 1 - - sample_data = [ - # first player positioning - (1, Player.objects.get(id=1).id, 'P'), - (2, Player.objects.get(id=2).id, 'C'), - (3, Player.objects.get(id=3).id, '1B') - ] - data = {} - - for i, (order, player, position) in enumerate(sample_data): - data[f'form-{i}-order']=order - data[f'form-{i}-player']=player - data[f'form-{i}-position'] = position - - management = { - 'form-INITIAL_FORMS': '0', - 'form-TOTAL_FORMS': len(sample_data), - 'form-MAX_NUM_FORMS': '' - } - - formset = PositioningFormSet({**management, **data}) - - self.assertTrue(formset.is_valid()) - for form in formset: - self.assertTrue(form.is_valid()) - - response = self.client.post(reverse('edit lineup', args=[event]), {**management, **data}) - - self.assertEqual(response.status_code, 200) - - for d in sample_data: - with self.subTest(d): - p = Positioning.objects.get(player_id=d[1], event_id=event) - self.assertEqual(d[0], p.order) - self.assertEqual(d[2], p.position) - pass \ No newline at end of file diff --git a/lineups/urls.py b/lineups/urls.py deleted file mode 100644 index e042e57..0000000 --- a/lineups/urls.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.contrib import admin - -from django.urls import path, include - -from . import views - -urlpatterns = [ - path('edit/', views.edit, name="edit lineup"), -] \ No newline at end of file diff --git a/lineups/views.py b/lineups/views.py deleted file mode 100644 index ff8efbd..0000000 --- a/lineups/views.py +++ /dev/null @@ -1,96 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from .models import Positioning,Availability -from .forms import PositioningFormSet, TeamsnapEventForm -from events.models import Event -from players.models import Player -from django.db.models import Case, When -from django.urls import reverse -from django.contrib import messages -from django.http import HttpResponse -from django.db.models import Prefetch -from django.db.models import F - -def queryset_from_ids(Model, id_list): - #https://stackoverflow.com/questions/4916851/django-get-a-queryset-from-array-of-ids-in-specific-order - preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(id_list)]) - queryset = Model.objects.filter(pk__in=id_list).order_by(preserved) - return queryset - -# Create your views here. -def edit(request, event_id): - - if request.method == 'POST': - # create a form instance and populate it with data from the request: - formset = PositioningFormSet(request.POST) - is_valid = [f.is_valid() for f in formset] - for form in formset: - if form.is_valid(): - # process the data in form.cleaned_data as required - # ... - # redirect to a new URL: - - if isinstance(form.cleaned_data['id'], Positioning): - positioning_id = form.cleaned_data.pop('id').id #FIXME this is a workaround, not sure why it is necessary - positioning = Positioning.objects.filter(id=positioning_id) - positioning.update(**form.cleaned_data) - did_create = False - else: - positioning = Positioning.objects.create(**form.cleaned_data, event_id=event_id) - did_create = True - else: - messages.error(request, f'Error submitting lineup. {form.instance} {form.errors}') - pass - if (True in is_valid) and (False in is_valid): - messages.warning(request, 'Lineup partially submitted.') - elif (True in is_valid): - messages.success(request, 'Lineup submitted successfully.') - elif (True not in is_valid): - messages.error(request, f'Error submitting lineup.') - else: - messages.error(request, f'Error submitting lineup.') - # return HttpResponse(status=204) - # return render(request, 'success.html', {'call_back':'edit lineup','id':event_id, 'errors':[error for error in formset.errors if error]}, status=200) - previous_event = Event.objects.filter(id=event_id-1).first() - - event = Event.objects.get(id=event_id) - next_event = Event.objects.get(id=event_id+1) - players = Player.objects.prefetch_related('availability_set', 'positioning_set') - - for player in players: - Positioning.objects.get_or_create(player_id=player.id, event_id=event_id) - - qs = event.positioning_set.all().filter(player__availability__event=event_id).order_by( - 'order','-player__availability__available','player__last_name').annotate(event_availability=F('player__availability__available')) - - formset = PositioningFormSet(queryset=qs) - - formset_lineup = [f for f in formset if f.instance.order] - formset_dhd = [f for f in formset if not f.instance.order and f.instance.position] - formset_bench = [f for f in formset if f not in formset_lineup and f not in formset_dhd] - - teamsnap_form = TeamsnapEventForm(instance=event) - - details = { - "Away Team": event.away_team, - "Home Team": event.home_team, - "Date": event.start.date(), - "Time": event.start.time(), - "Venue": event.venue, - "TeamSnap": teamsnap_form - # "TeamSnap Link": event.event_set.first() - # "TeamSnap Link": f' {event.event_set.first()} ' if event.event_set.first() else None - } - - - - return render(request, 'lineups/lineup.html', {'title': 'Lineup', - 'event': event, - 'details':details, - 'previous_event': previous_event, - 'teamsnap_form': teamsnap_form, - 'next_event': next_event, - 'formset': formset, - 'formset_lineup':formset_lineup, - 'formset_bench':formset_bench, - 'formset_dhd': formset_dhd - }) \ No newline at end of file diff --git a/manage.py b/manage.py index c98e76c..d3bf4f3 100755 --- a/manage.py +++ b/manage.py @@ -6,7 +6,7 @@ import sys def main(): """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'benchcoach.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'benchcoachproject.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/players/admin.py b/players/admin.py deleted file mode 100644 index 6121caa..0000000 --- a/players/admin.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.contrib import admin -from .models import Player, StatLine - -# Register your models here. -admin.site.register(Player) -admin.site.register(StatLine) \ No newline at end of file diff --git a/players/apps.py b/players/apps.py deleted file mode 100644 index 86c66f5..0000000 --- a/players/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class PlayersConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'players' diff --git a/players/fixtures/2021cmba.json b/players/fixtures/2021cmba.json deleted file mode 100644 index ba001a4..0000000 --- a/players/fixtures/2021cmba.json +++ /dev/null @@ -1,477 +0,0 @@ -[ - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Tony", - "jersey_number": 13, - "last_name": "Correa" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Tim", - "jersey_number": 8, - "last_name": "Riggenbach" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Thomas", - "jersey_number": 44, - "last_name": "Feazelle" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Philip", - "jersey_number": 25, - "last_name": "Oweimrin" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Phil", - "jersey_number": 21, - "last_name": "Zelenka" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Nick", - "jersey_number": 23, - "last_name": "Schmidt" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Mike", - "jersey_number": 28, - "last_name": "DiCola" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Max", - "jersey_number": 99, - "last_name": "Kiefer" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Matthew", - "jersey_number": 5, - "last_name": "Steffens" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Matt", - "jersey_number": 6, - "last_name": "Burch" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Jules", - "jersey_number": 34, - "last_name": "Cantor" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "John", - "jersey_number": 34, - "last_name": "Lundgren" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Joe", - "jersey_number": 17, - "last_name": "Malafronte" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Hans", - "jersey_number": 18, - "last_name": "Hetrick" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Greg", - "jersey_number": 19, - "last_name": "Sells" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Garrett", - "jersey_number": 17, - "last_name": "Eddy" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Cole", - "jersey_number": 24, - "last_name": "Thompson" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Brian", - "jersey_number": 2, - "last_name": "Lehman" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Brent", - "jersey_number": 27, - "last_name": "Fukushima" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Brandon", - "jersey_number": 3, - "last_name": "Jessee" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Brad", - "jersey_number": 15, - "last_name": "Halperin" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Arron", - "jersey_number": 11, - "last_name": "Kruse" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Amanda", - "jersey_number": 41, - "last_name": "Mordacq" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Alec", - "jersey_number": 14, - "last_name": "Reinke" - } - }, - { - "model": "players.player", - "pk": null, - "fields": { - "first_name": "Adrien", - "jersey_number": 45, - "last_name": "Kelly" - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.417, - "onbase_pct": 0.488, - "player_id": 1, - "slugging_pct": 0.472 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.422, - "onbase_pct": 0.518, - "player_id": 2, - "slugging_pct": 0.667 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0, - "onbase_pct": 0.2, - "player_id": 3, - "slugging_pct": 0 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.061, - "onbase_pct": 0.233, - "player_id": 4, - "slugging_pct": 0.061 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.282, - "onbase_pct": 0.338, - "player_id": 5, - "slugging_pct": 0.296 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.267, - "onbase_pct": 0.333, - "player_id": 6, - "slugging_pct": 0.3 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.214, - "onbase_pct": 0.235, - "player_id": 7, - "slugging_pct": 0.357 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.219, - "onbase_pct": 0.324, - "player_id": 8, - "slugging_pct": 0.344 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.28, - "onbase_pct": 0.28, - "player_id": 9, - "slugging_pct": 0.32 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.333, - "onbase_pct": 0.424, - "player_id": 10, - "slugging_pct": 0.373 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0, - "onbase_pct": 0.25, - "player_id": 11, - "slugging_pct": 0 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0, - "onbase_pct": 0, - "player_id": 12, - "slugging_pct": 0 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.379, - "onbase_pct": 0.379, - "player_id": 13, - "slugging_pct": 0.552 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.095, - "onbase_pct": 0.174, - "player_id": 14, - "slugging_pct": 0.143 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.41, - "onbase_pct": 0.486, - "player_id": 15, - "slugging_pct": 0.525 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.357, - "onbase_pct": 0.406, - "player_id": 16, - "slugging_pct": 0.536 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.185, - "onbase_pct": 0.312, - "player_id": 17, - "slugging_pct": 0.259 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.299, - "onbase_pct": 0.378, - "player_id": 18, - "slugging_pct": 0.391 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.438, - "onbase_pct": 0.571, - "player_id": 19, - "slugging_pct": 0.781 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.333, - "onbase_pct": 0.417, - "player_id": 20, - "slugging_pct": 0.367 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.333, - "onbase_pct": 0.41, - "player_id": 22, - "slugging_pct": 0.522 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.062, - "onbase_pct": 0.211, - "player_id": 23, - "slugging_pct": 0.125 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.5, - "onbase_pct": 0.611, - "player_id": 24, - "slugging_pct": 0.5 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0.25, - "onbase_pct": 0.25, - "player_id": 25, - "slugging_pct": 0.5 - } - }, - { - "model": "players.statline", - "pk": null, - "fields": { - "batting_avg": 0, - "onbase_pct": 0, - "player_id": 21, - "slugging_pct": 0 - } - } -] \ No newline at end of file diff --git a/players/fixtures/blaseball.yaml b/players/fixtures/blaseball.yaml deleted file mode 100644 index 66890b8..0000000 --- a/players/fixtures/blaseball.yaml +++ /dev/null @@ -1,98 +0,0 @@ -- model: players.player - pk: 1 - fields: - first_name: Edric - last_name: Tosser - jersey_number: 1 - team: 1 -- model: players.player - pk: 2 - fields: - first_name: Paula - last_name: Mason - jersey_number: 2 - team: 1 -- model: players.player - pk: 3 - fields: - first_name: Declan - last_name: Suzanne - jersey_number: 3 - team: 1 -- model: players.player - pk: 4 - fields: - first_name: Baby - last_name: Triumphant - jersey_number: 4 - team: 1 -- model: players.player - pk: 5 - fields: - first_name: Joshua - last_name: Butt - jersey_number: 5 - team: 1 -- model: players.player - pk: 6 - fields: - first_name: Isaac - last_name: Johnson - jersey_number: 6 - team: 1 -- model: players.player - pk: 7 - fields: - first_name: Rivers - last_name: Rosa - jersey_number: 7 - team: 1 -- model: players.player - pk: 8 - fields: - first_name: Lou - last_name: Roseheart - jersey_number: 8 - team: 1 -- model: players.player - pk: 9 - fields: - first_name: Wesley - last_name: Poole - jersey_number: 9 - team: 1 -- model: players.player - pk: 10 - fields: - first_name: Mullen - last_name: Peterson - jersey_number: 10 - team: 1 -- model: players.player - pk: 11 - fields: - first_name: Justice - last_name: Spoon - jersey_number: 11 - team: 1 -- model: players.player - pk: 12 - fields: - first_name: Caleb - last_name: Alvarado - jersey_number: 12 - team: 1 -- model: players.player - pk: 13 - fields: - first_name: Atlas - last_name: Guerra - jersey_number: 13 - team: 1 -- model: players.player - pk: 14 - fields: - first_name: Swamuel - last_name: Mora - jersey_number: 14 - team: 1 \ No newline at end of file diff --git a/players/forms.py b/players/forms.py deleted file mode 100644 index eb8c611..0000000 --- a/players/forms.py +++ /dev/null @@ -1,7 +0,0 @@ -from django import forms -from .models import Player - -class PlayerForm(forms.ModelForm): - class Meta: - model = Player - fields = ['first_name', 'last_name', 'jersey_number', 'team'] \ No newline at end of file diff --git a/players/migrations/0001_initial.py b/players/migrations/0001_initial.py deleted file mode 100644 index ed5db21..0000000 --- a/players/migrations/0001_initial.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-07 17:43 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Player', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(max_length=200)), - ('last_name', models.CharField(max_length=200)), - ('jersey_number', models.IntegerField()), - ], - options={ - 'unique_together': {('first_name', 'last_name')}, - }, - ), - migrations.CreateModel( - name='Stat', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('batting_avg', models.DecimalField(decimal_places=3, default=0, max_digits=4)), - ('onbase_pct', models.DecimalField(decimal_places=3, default=0, max_digits=4)), - ('slugging_pct', models.DecimalField(decimal_places=3, default=0, max_digits=4)), - ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='players.player')), - ], - ), - ] diff --git a/players/migrations/0002_rename_stat_statline.py b/players/migrations/0002_rename_stat_statline.py deleted file mode 100644 index 9acfdd5..0000000 --- a/players/migrations/0002_rename_stat_statline.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-07 18:46 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('players', '0001_initial'), - ] - - operations = [ - migrations.RenameModel( - old_name='Stat', - new_name='StatLine', - ), - ] diff --git a/players/migrations/0003_player_team.py b/players/migrations/0003_player_team.py deleted file mode 100644 index 62fb617..0000000 --- a/players/migrations/0003_player_team.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-09 02:24 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('teams', '0001_initial'), - ('players', '0002_rename_stat_statline'), - ] - - operations = [ - migrations.AddField( - model_name='player', - name='team', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='teams.team'), - ), - ] diff --git a/players/migrations/__init__.py b/players/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/players/models.py b/players/models.py deleted file mode 100644 index c769aa0..0000000 --- a/players/models.py +++ /dev/null @@ -1,32 +0,0 @@ -from django.db import models -from teams.models import Team - -class Player(models.Model): - first_name = models.CharField(max_length=200) - last_name = models.CharField(max_length=200) - jersey_number = models.IntegerField() - team = models.ForeignKey(Team, null=True, on_delete=models.CASCADE) - - def __str__(self): - return f"{self.last_name}, {self.first_name}" - - class Meta: - unique_together = ('first_name', 'last_name',) - -class StatLine(models.Model): - player = models.ForeignKey(Player, on_delete=models.CASCADE) - batting_avg = models.DecimalField(max_digits=4, decimal_places=3, default=0) - onbase_pct = models.DecimalField(max_digits=4, decimal_places=3, default=0) - slugging_pct = models.DecimalField(max_digits=4, decimal_places=3, default=0) - - def __str__(self): - return f"{self.slash_line}" - - @property - def slash_line(self): - return "/".join([ - f"{self.batting_avg:.3f}".lstrip("0"), - f"{self.onbase_pct:.3f}".lstrip("0"), - f"{self.slugging_pct:.3f}".replace("0.",".") - ] - ) \ No newline at end of file diff --git a/players/tests.py b/players/tests.py deleted file mode 100644 index dc24f5d..0000000 --- a/players/tests.py +++ /dev/null @@ -1,58 +0,0 @@ -from django.test import TestCase, Client -from django.urls import reverse -from .models import Player - -FIXTURES = ['blaseball'] - -class TestPlayerModel(TestCase): - fixtures = FIXTURES - - def test_query_player(self): - """ - Return the desired player - """ - player = Player.objects.get(id=1) - self.assertEqual(player.first_name, "Edric") - self.assertEqual(player.last_name, "Tosser") - self.assertEqual(player.jersey_number, 1) - self.assertEqual(player.team.name, "Chicago Firefighters") - -class TestPlayerViews(TestCase): - fixtures = FIXTURES - - def test_player_list(self): - response = self.client.get(reverse('players list')) - self.assertEqual(response.status_code, 200) - - def test_player_edit(self): - response = self.client.get(reverse('edit player', args=[1])) - self.assertEqual(response.status_code, 200) - - # create new player - new_player_data = { - 'first_name': "A new player first name", - 'last_name': "A new player last name", - 'jersey_number':99, - 'team':1 - } - - response = self.client.post(reverse('edit player', args=[0]), data=new_player_data) - self.assertEqual(201, response.status_code) - new_player = Player.objects.get(id=response.context['id']) - self.assertEqual(new_player_data['first_name'], new_player.first_name) - self.assertEqual(new_player_data['last_name'], new_player.last_name) - - # modify player - modified_player_data = { - 'first_name': "A changed player first name", - 'last_name': "A changed player last name", - 'jersey_number': 99, - 'team': 1 - } - response = self.client.post(reverse('edit player', args=[1]), data=modified_player_data) - self.assertEqual(200, response.status_code) - self.assertEqual(1, response.context['id']) - modified_player = Player.objects.get(id=response.context['id']) - self.assertEqual(modified_player_data['first_name'], modified_player.first_name) - self.assertEqual(modified_player_data['last_name'], modified_player.last_name) - diff --git a/players/urls.py b/players/urls.py deleted file mode 100644 index 621b262..0000000 --- a/players/urls.py +++ /dev/null @@ -1,12 +0,0 @@ -from django.urls import path, include - -from .views import PlayerListView, PlayerEditView - -from . import views - -urlpatterns = [ - path('', views.root, name="root"), - path('list', PlayerListView.as_view(), name='players list'), - path('edit/', PlayerEditView.as_view(), name="edit player"), - path('edit', PlayerEditView.as_view(), name="edit player") -] \ No newline at end of file diff --git a/players/views.py b/players/views.py deleted file mode 100644 index 8e02289..0000000 --- a/players/views.py +++ /dev/null @@ -1,27 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from django.views.generic.list import ListView -from django.http import HttpResponse -from django.urls import reverse -from .models import Player -from .forms import PlayerForm -from lib.views import BenchcoachListView, BenchcoachEditView - -# Create your views here. - -class PlayerListView(BenchcoachListView): - Model = Player - edit_url = 'edit player' - list_url = 'players list' - page_title = "Players" - title_strf = "{first_name} {last_name}" - subtitle_strf = "#{jersey_number}" - active_tabs = ['members_tab'] - -def root(request): - return redirect('/players/list') - -class PlayerEditView(BenchcoachEditView): - Form = PlayerForm - Model = Player - edit_url = 'edit player' - list_url = 'players list' \ No newline at end of file diff --git a/teams/__init__.py b/teams/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/teams/admin.py b/teams/admin.py deleted file mode 100644 index 88b36a4..0000000 --- a/teams/admin.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.contrib import admin -from .models import Team - -# Register your models here. -admin.site.register(Team) \ No newline at end of file diff --git a/teams/fixtures/2021cmba.json b/teams/fixtures/2021cmba.json deleted file mode 100644 index 6d6acd6..0000000 --- a/teams/fixtures/2021cmba.json +++ /dev/null @@ -1,82 +0,0 @@ -[ - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Browns", - "image": "images/browns.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "DegenerateX", - "image": "images/ramriez.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Dodgers", - "image": "images/dodgers.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Electrons", - "image": "images/electrons.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Hounds", - "image": "images/hounds.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Marlins", - "image": "images/marlins.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Orioles", - "image": "images/orioles.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Trojans", - "image": "images/trojans.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "Vikings", - "image": "images/vikings.svg" - } - }, - { - "model": "teams.team", - "pk": null, - "fields": { - "name": "White Sox", - "image": "images/whitesox.svg" - } - } -] \ No newline at end of file diff --git a/teams/fixtures/blaseball.yaml b/teams/fixtures/blaseball.yaml deleted file mode 100644 index 1e51381..0000000 --- a/teams/fixtures/blaseball.yaml +++ /dev/null @@ -1,96 +0,0 @@ -- model: teams.team - pk: 1 - fields: - name: Chicago Firefighters -- model: teams.team - pk: 2 - fields: - name: Boston Flowers -- model: teams.team - pk: 3 - fields: - name: Philly Pies -- model: teams.team - pk: 4 - fields: - name: Yellowstone Magic -- model: teams.team - pk: 5 - fields: - name: Tokyo Lift -- model: teams.team - pk: 6 - fields: - name: Unlimited Tacos -- model: teams.team - pk: 7 - fields: - name: Dallas Steaks -- model: teams.team - pk: 8 - fields: - name: Charleston Shoe Thieves -- model: teams.team - pk: 9 - fields: - name: Hades Tigers -- model: teams.team - pk: 10 - fields: - name: Hellmouth Sunbeams -- model: teams.team - pk: 11 - fields: - name: San Francisco Lovers -- model: teams.team - pk: 12 - fields: - name: Hawai'i Fridays -- model: teams.team - pk: 13 - fields: - name: Breckenridge Jazz Hands -- model: teams.team - pk: 14 - fields: - name: Houston Spies -- model: teams.team - pk: 15 - fields: - name: New York Millennials -- model: teams.team - pk: 16 - fields: - name: Kansas City Breath Mints -- model: teams.team - pk: 17 - fields: - name: Mexico City Wild Wings -- model: teams.team - pk: 18 - fields: - name: Miami Dale -- model: teams.team - pk: 19 - fields: - name: Seattle Garages -- model: teams.team - pk: 20 - fields: - name: Canada Moist Talkers -- model: teams.team - pk: 21 - fields: - name: Atlantis Georgias -- model: teams.team - pk: 22 - fields: - name: Ohio Worms -- model: teams.team - pk: 23 - fields: - name: Core Mechanics -- model: teams.team - pk: 24 - fields: - name: Baltimore Crabs \ No newline at end of file diff --git a/teams/forms.py b/teams/forms.py deleted file mode 100644 index 6196f87..0000000 --- a/teams/forms.py +++ /dev/null @@ -1,7 +0,0 @@ -from django import forms -from .models import Team - -class TeamForm(forms.ModelForm): - class Meta: - model = Team - fields = ['name'] \ No newline at end of file diff --git a/teams/migrations/0001_initial.py b/teams/migrations/0001_initial.py deleted file mode 100644 index 5159e43..0000000 --- a/teams/migrations/0001_initial.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-07 17:43 - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Team', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ('image', models.FileField(null=True, upload_to='images/', validators=[django.core.validators.FileExtensionValidator(['jpg', 'png', 'svg'])])), - ], - ), - ] diff --git a/teams/migrations/__init__.py b/teams/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/teams/models.py b/teams/models.py deleted file mode 100644 index 781c55c..0000000 --- a/teams/models.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.db import models -from django.core.validators import FileExtensionValidator - -class Team(models.Model): - name = models.CharField(max_length = 50) - image = models.FileField(upload_to='images/', validators=[FileExtensionValidator(['jpg', 'png', 'svg'])], null=True) - - def __str__(self): - return f"{self.name}" \ No newline at end of file diff --git a/teams/tests.py b/teams/tests.py deleted file mode 100644 index dd0a73b..0000000 --- a/teams/tests.py +++ /dev/null @@ -1,41 +0,0 @@ -from django.urls import reverse -from django.test import TestCase -from .models import Team - -# Create your tests here. -class TestTeamModel(TestCase): - fixtures = ['blaseball'] - - def test_query_team(self): - """ - Return the desired team - """ - team = Team.objects.get(id=1) - self.assertEqual(team.name, "Chicago Firefighters") - -class TestTeamViews(TestCase): - fixtures = ['blaseball'] - - def test_team_list(self): - response = self.client.get(reverse('teams list')) - self.assertEqual(response.status_code, 200) - self.assertIn({'id':1, 'title':'Chicago Firefighters'}, response.context['items']) - self.assertIn({'id':2, 'title':'Boston Flowers'}, response.context['items']) - self.assertIn({'id':24, 'title':'Baltimore Crabs'}, response.context['items']) - - def test_team_edit(self): - response = self.client.get(reverse('edit team', args=[1])) - self.assertEqual(response.status_code, 200) - - #create new team - response = self.client.post(reverse('edit team', args=[0]), data={'name': "A new team"}) - self.assertEqual(201, response.status_code) - new_team = Team.objects.get(id=response.context['id']) - self.assertEqual('A new team',new_team.name, ) - - # modify team - response = self.client.post(reverse('edit team', args=[1]), data={'name': "A different team name"}) - self.assertEqual(200, response.status_code) - self.assertEqual(1, response.context['id']) - modified_team = Team.objects.get(id=response.context['id']) - self.assertEqual('A different team name', modified_team.name) \ No newline at end of file diff --git a/teams/urls.py b/teams/urls.py deleted file mode 100644 index f0d37f9..0000000 --- a/teams/urls.py +++ /dev/null @@ -1,12 +0,0 @@ -from django.contrib import admin - -from django.urls import path, include - -from . import views - -urlpatterns = [ - path('', views.root, name="root"), - path('list', views.TeamsListView.as_view(), name="teams list"), - path('edit/', views.TeamEditView.as_view(), name="edit team"), - path('edit', views.TeamEditView.as_view(), name="edit team") -] \ No newline at end of file diff --git a/teams/views.py b/teams/views.py deleted file mode 100644 index c4e8375..0000000 --- a/teams/views.py +++ /dev/null @@ -1,22 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from django.http import HttpResponse -from django.urls import reverse -from .forms import TeamForm -from .models import Team -from lib.views import BenchcoachListView, BenchcoachEditView - -def root(request): - return redirect(reverse('teams list')) - -class TeamsListView(BenchcoachListView): - Model = Team - edit_url = 'edit team' - list_url = 'teams list' - page_title = "Teams" - active_tabs = ['opponents_tab'] - -class TeamEditView(BenchcoachEditView): - Model = Team - edit_url = 'edit team' - list_url = 'teams list' - Form = TeamForm \ No newline at end of file diff --git a/teamsnap/forms.py b/teamsnap/forms.py index 7247922..f69398d 100644 --- a/teamsnap/forms.py +++ b/teamsnap/forms.py @@ -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 diff --git a/teamsnap/migrations/0002_auto_20211121_0035.py b/teamsnap/migrations/0002_auto_20211121_0035.py deleted file mode 100644 index 7d9b4c8..0000000 --- a/teamsnap/migrations/0002_auto_20211121_0035.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0002_event_game_type.py b/teamsnap/migrations/0002_event_game_type.py new file mode 100644 index 0000000..d09ae41 --- /dev/null +++ b/teamsnap/migrations/0002_event_game_type.py @@ -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), + ), + ] diff --git a/teamsnap/migrations/0003_auto_20211121_1540.py b/teamsnap/migrations/0003_auto_20211121_1540.py deleted file mode 100644 index 2b78008..0000000 --- a/teamsnap/migrations/0003_auto_20211121_1540.py +++ /dev/null @@ -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'), - ), - ] diff --git a/teamsnap/migrations/0003_auto_20211219_2058.py b/teamsnap/migrations/0003_auto_20211219_2058.py new file mode 100644 index 0000000..984cc08 --- /dev/null +++ b/teamsnap/migrations/0003_auto_20211219_2058.py @@ -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', + ), + ] diff --git a/teamsnap/migrations/0004_remove_member_name.py b/teamsnap/migrations/0004_remove_member_name.py deleted file mode 100644 index 19dff06..0000000 --- a/teamsnap/migrations/0004_remove_member_name.py +++ /dev/null @@ -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', - ), - ] diff --git a/teamsnap/migrations/0005_availability.py b/teamsnap/migrations/0005_availability.py deleted file mode 100644 index 02e08c5..0000000 --- a/teamsnap/migrations/0005_availability.py +++ /dev/null @@ -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, - }, - ), - ] diff --git a/teamsnap/migrations/0006_alter_availability_status_code.py b/teamsnap/migrations/0006_alter_availability_status_code.py deleted file mode 100644 index 24aeb64..0000000 --- a/teamsnap/migrations/0006_alter_availability_status_code.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0007_auto_20211121_1628.py b/teamsnap/migrations/0007_auto_20211121_1628.py deleted file mode 100644 index 638c677..0000000 --- a/teamsnap/migrations/0007_auto_20211121_1628.py +++ /dev/null @@ -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'), - ), - ] diff --git a/teamsnap/migrations/0008_alter_availability_options.py b/teamsnap/migrations/0008_alter_availability_options.py deleted file mode 100644 index a9e2671..0000000 --- a/teamsnap/migrations/0008_alter_availability_options.py +++ /dev/null @@ -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'}, - ), - ] diff --git a/teamsnap/migrations/0009_auto_20211121_1757.py b/teamsnap/migrations/0009_auto_20211121_1757.py deleted file mode 100644 index 6b49c38..0000000 --- a/teamsnap/migrations/0009_auto_20211121_1757.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0010_event_is_game.py b/teamsnap/migrations/0010_event_is_game.py deleted file mode 100644 index a7fde38..0000000 --- a/teamsnap/migrations/0010_event_is_game.py +++ /dev/null @@ -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, - ), - ] diff --git a/teamsnap/migrations/0011_lineupentry.py b/teamsnap/migrations/0011_lineupentry.py deleted file mode 100644 index da9e16b..0000000 --- a/teamsnap/migrations/0011_lineupentry.py +++ /dev/null @@ -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')}, - }, - ), - ] diff --git a/teamsnap/migrations/0012_auto_20211121_2010.py b/teamsnap/migrations/0012_auto_20211121_2010.py deleted file mode 100644 index 2294c80..0000000 --- a/teamsnap/migrations/0012_auto_20211121_2010.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0013_remove_lineupentry_name.py b/teamsnap/migrations/0013_remove_lineupentry_name.py deleted file mode 100644 index 763bba4..0000000 --- a/teamsnap/migrations/0013_remove_lineupentry_name.py +++ /dev/null @@ -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', - ), - ] diff --git a/teamsnap/migrations/0014_alter_lineupentry_teamsnap_id.py b/teamsnap/migrations/0014_alter_lineupentry_teamsnap_id.py deleted file mode 100644 index 214a198..0000000 --- a/teamsnap/migrations/0014_alter_lineupentry_teamsnap_id.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0015_auto_20211210_1744.py b/teamsnap/migrations/0015_auto_20211210_1744.py deleted file mode 100644 index 9e50f93..0000000 --- a/teamsnap/migrations/0015_auto_20211210_1744.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0016_auto_20211212_2240.py b/teamsnap/migrations/0016_auto_20211212_2240.py deleted file mode 100644 index bbfedfc..0000000 --- a/teamsnap/migrations/0016_auto_20211212_2240.py +++ /dev/null @@ -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', - ), - ] diff --git a/teamsnap/migrations/0017_auto_20211212_2356.py b/teamsnap/migrations/0017_auto_20211212_2356.py deleted file mode 100644 index dd0cd66..0000000 --- a/teamsnap/migrations/0017_auto_20211212_2356.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0018_user_managed_teams.py b/teamsnap/migrations/0018_user_managed_teams.py deleted file mode 100644 index 71aca00..0000000 --- a/teamsnap/migrations/0018_user_managed_teams.py +++ /dev/null @@ -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'), - ), - ] diff --git a/teamsnap/migrations/0019_auto_20211216_1851.py b/teamsnap/migrations/0019_auto_20211216_1851.py deleted file mode 100644 index af24b49..0000000 --- a/teamsnap/migrations/0019_auto_20211216_1851.py +++ /dev/null @@ -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'), - ), - ] diff --git a/teamsnap/migrations/0020_auto_20211216_1903.py b/teamsnap/migrations/0020_auto_20211216_1903.py deleted file mode 100644 index 17853fd..0000000 --- a/teamsnap/migrations/0020_auto_20211216_1903.py +++ /dev/null @@ -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', - ), - ] diff --git a/teamsnap/migrations/0021_auto_20211216_1905.py b/teamsnap/migrations/0021_auto_20211216_1905.py deleted file mode 100644 index a49bd6b..0000000 --- a/teamsnap/migrations/0021_auto_20211216_1905.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0022_auto_20211216_1909.py b/teamsnap/migrations/0022_auto_20211216_1909.py deleted file mode 100644 index 2c0c034..0000000 --- a/teamsnap/migrations/0022_auto_20211216_1909.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/migrations/0023_auto_20211216_1951.py b/teamsnap/migrations/0023_auto_20211216_1951.py deleted file mode 100644 index 51de447..0000000 --- a/teamsnap/migrations/0023_auto_20211216_1951.py +++ /dev/null @@ -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', - ), - ] diff --git a/teamsnap/migrations/0024_auto_20211216_1703.py b/teamsnap/migrations/0024_auto_20211216_1703.py deleted file mode 100644 index 5bdcb94..0000000 --- a/teamsnap/migrations/0024_auto_20211216_1703.py +++ /dev/null @@ -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, - ), - ] diff --git a/teamsnap/migrations/0025_opponent_benchcoach_object.py b/teamsnap/migrations/0025_opponent_benchcoach_object.py deleted file mode 100644 index 15fa911..0000000 --- a/teamsnap/migrations/0025_opponent_benchcoach_object.py +++ /dev/null @@ -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'), - ), - ] diff --git a/teamsnap/migrations/0026_auto_20211216_2003.py b/teamsnap/migrations/0026_auto_20211216_2003.py deleted file mode 100644 index 7f1017c..0000000 --- a/teamsnap/migrations/0026_auto_20211216_2003.py +++ /dev/null @@ -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), - ), - ] diff --git a/teamsnap/models.py b/teamsnap/models.py index 068adda..3562cef 100644 --- a/teamsnap/models.py +++ b/teamsnap/models.py @@ -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',) \ No newline at end of file + @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) \ No newline at end of file diff --git a/venues/__init__.py b/venues/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venues/admin.py b/venues/admin.py deleted file mode 100644 index eed5091..0000000 --- a/venues/admin.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.contrib import admin -from .models import Venue - -# Register your models here. -admin.site.register(Venue) \ No newline at end of file diff --git a/venues/apps.py b/venues/apps.py deleted file mode 100644 index 2bb5172..0000000 --- a/venues/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class VenuesConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'venues' diff --git a/venues/fixtures/2021cmba.json b/venues/fixtures/2021cmba.json deleted file mode 100644 index c148922..0000000 --- a/venues/fixtures/2021cmba.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Winnemac Park" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Southwest Park" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Taft HS" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Maywood Park" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Altgeld" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Maine South" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Walther Christian Academy" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Grosche" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Clemente" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Northeastern University" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Proviso East" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Columbus Park" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Ridgewood HS" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Mount Carmel HS" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Kroc Center" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Simeon" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Proviso West HS" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Jane Addams Park" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Ozinga" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "Lemont High School" - } - }, - { - "model": "venues.venue", - "pk": null, - "fields": { - "name": "K's Dugout" - } - } -] \ No newline at end of file diff --git a/venues/fixtures/blaseball.yaml b/venues/fixtures/blaseball.yaml deleted file mode 100644 index 0d38ba2..0000000 --- a/venues/fixtures/blaseball.yaml +++ /dev/null @@ -1,100 +0,0 @@ -- model: venues.venue - pk: 1 - fields: - name: Chesapeake Racetrack and Ballpark -- model: venues.venue - pk: 2 - fields: - name: Tokyo Fitness Center -- model: venues.venue - pk: 3 - fields: - name: Breckenridge Community Field -- model: venues.venue - pk: 4 - fields: - name: The Fire Safety Awareness Center -- model: venues.venue - pk: 5 - fields: - name: Sixth Circle Stadium -- model: venues.venue - pk: 6 - fields: - name: Basin of Mexico Park -- model: venues.venue - pk: 7 - fields: - name: The Atlantean Dome -- model: venues.venue - pk: 8 - fields: - name: Al Pastor Memorial Park -- model: venues.venue - pk: 9 - fields: - name: Miami International Arena -- model: venues.venue - pk: 10 - fields: - name: Boston Garden -- model: venues.venue - pk: 11 - fields: - name: Lower Moab Scenic Overlook Field -- model: venues.venue - pk: 12 - fields: - name: An Undisclosed Location -- model: venues.venue - pk: 13 - fields: - name: Wapakoneta Air, Space and Worm Museum and Ballpark -- model: venues.venue - pk: 14 - fields: - name: New York, New York Arena, Arena -- model: venues.venue - pk: 15 - fields: - name: George Fourman Stadium -- model: venues.venue - pk: 16 - fields: - name: San Franstadium -- model: venues.venue - pk: 17 - fields: - name: Tastycake Stadium -- model: venues.venue - pk: 18 - fields: - name: The Hotdogfingers Memorial Climate Pledge Garage and Parking Facility -- model: venues.venue - pk: 19 - fields: - name: Core Pillar Center -- model: venues.venue - pk: 20 - fields: - name: Hawai'i Viberight Field -- model: venues.venue - pk: 21 - fields: - name: Gleek Arena -- model: venues.venue - pk: 22 - fields: - name: Choux Stadium -- model: venues.venue - pk: 23 - fields: - name: Yellowstone National (Ball)Park -- model: venues.venue - pk: 24 - fields: - name: Kansas City FreshDome -- model: venues.venue - pk: 25 - fields: - name: ILB Historical Preservation Site \ No newline at end of file diff --git a/venues/forms.py b/venues/forms.py deleted file mode 100644 index d94c265..0000000 --- a/venues/forms.py +++ /dev/null @@ -1,7 +0,0 @@ -from django import forms -from .models import Venue - -class VenueForm(forms.ModelForm): - class Meta: - model = Venue - fields = ['name'] \ No newline at end of file diff --git a/venues/migrations/0001_initial.py b/venues/migrations/0001_initial.py deleted file mode 100644 index a5551d0..0000000 --- a/venues/migrations/0001_initial.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 3.2.6 on 2021-11-07 17:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Venue', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ], - ), - ] diff --git a/venues/migrations/__init__.py b/venues/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venues/models.py b/venues/models.py deleted file mode 100644 index 44947f7..0000000 --- a/venues/models.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.db import models - -class Venue(models.Model): - name = models.CharField(max_length = 50) - - def __str__(self): - return f"{self.name}" diff --git a/venues/tests.py b/venues/tests.py deleted file mode 100644 index 7c11b04..0000000 --- a/venues/tests.py +++ /dev/null @@ -1,40 +0,0 @@ -from django.test import TestCase -from django.urls import reverse -from .models import Venue - -class TestVenueModel(TestCase): - fixtures = ['blaseball'] - - def test_query_venue(self): - """ - Return the desired venue - """ - venue = Venue.objects.get(id=1) - self.assertEqual(venue.name, "Chesapeake Racetrack and Ballpark") - -class TestVenueViews(TestCase): - fixtures = ['blaseball'] - - def test_venue_list(self): - response = self.client.get(reverse('venues list')) - self.assertEqual(response.status_code, 200) - self.assertIn({'id':1, 'title':'Chesapeake Racetrack and Ballpark'}, response.context['items']) - self.assertIn({'id':2, 'title':'Tokyo Fitness Center'}, response.context['items']) - self.assertIn({'id':25, 'title':'ILB Historical Preservation Site'}, response.context['items']) - - def test_venue_edit(self): - response = self.client.get(reverse('edit venue', args=[1])) - self.assertEqual(response.status_code, 200) - - #create new venue - response = self.client.post(reverse('edit venue', args=[0]), data={'name': "A new venue"}) - self.assertEqual(201, response.status_code) - new_venue = Venue.objects.get(id=response.context['id']) - self.assertEqual('A new venue',new_venue.name, ) - - # modify venue - response = self.client.post(reverse('edit venue', args=[1]), data={'name': "A different venue name"}) - self.assertEqual(200, response.status_code) - self.assertEqual(1, response.context['id']) - modified_venue = Venue.objects.get(id=response.context['id']) - self.assertEqual('A different venue name', modified_venue.name) \ No newline at end of file diff --git a/venues/urls.py b/venues/urls.py deleted file mode 100644 index 7bd12b0..0000000 --- a/venues/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.contrib import admin -from django.urls import path, include -from . import views - -urlpatterns = [ - path('', views.root, name="root"), - path('list', views.VenueListView.as_view(), name="venues list"), - path('edit/', views.VenueEditView.as_view(), name="edit venue"), - path('edit', views.VenueEditView.as_view(), name="edit venue") -] \ No newline at end of file diff --git a/venues/views.py b/venues/views.py deleted file mode 100644 index 888c175..0000000 --- a/venues/views.py +++ /dev/null @@ -1,22 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from django.http import HttpResponse, HttpResponseBadRequest -from django.urls import reverse -from .models import Venue -from .forms import VenueForm -from lib.views import BenchcoachListView, BenchcoachEditView - -def root(request): - return redirect('/venues/list') - -class VenueListView(BenchcoachListView): - Model = Venue - edit_url = 'edit venue' - list_url = 'venues list' - page_title = "Venues" - active_tabs = ['venues_tab'] - -class VenueEditView(BenchcoachEditView): - Model = Venue - edit_url = 'edit venue' - list_url = 'venues list' - Form = VenueForm \ No newline at end of file