diff --git a/teamsnap/fixtures/_2021cmba.json b/teamsnap/fixtures/_2021cmba.json
deleted file mode 100644
index 280ad39..0000000
--- a/teamsnap/fixtures/_2021cmba.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"model": "teamsnap.user", "pk": 1, "fields": {"teamsnap_id": "25560745", "access_token": "u2SqDq78FumVvhkt1D-V1CQ2ZIaB-nUVlzGwd1YhGtA"}}, {"model": "teamsnap.team", "pk": 1, "fields": {"teamsnap_id": "7644001", "name": null, "bencoach_team": null}}]
\ No newline at end of file
diff --git a/teamsnap/forms.py b/teamsnap/forms.py
index f69398d..fefcf35 100644
--- a/teamsnap/forms.py
+++ b/teamsnap/forms.py
@@ -1,25 +1,29 @@
from django import forms
-from .models import LineupEntry, Event
-import benchcoach.models
+from .models import Team, Location, Opponent, Event, Member
from django.forms import modelformset_factory
-class LineupEntryForm(forms.ModelForm):
- availability = None
- class Meta:
- model = LineupEntry
- widgets = {
- 'label': forms.Select(attrs={'class': 'form-control form-control-sm'})
- }
- exclude = ()
+select_kwargs = {
+ 'attrs':{'class': 'form-control form-control-sm'}
+}
-LineupEntryFormSet = modelformset_factory(
- model=LineupEntry,
- form=LineupEntryForm,
- extra=0
-)
+text_input_kwargs = {
+ 'attrs':{"readonly": "readonly", 'class':'form-control form-control-sm'}
+}
+
+class MemberForm(forms.ModelForm):
+ class Meta:
+ model = Member
+ fields = ('first_name', 'last_name', 'benchcoach_object')
+ labels = {
+ 'benchcoach_object': 'BenchCoach Link',
+ }
+ widgets = {
+ "benchcoach_object": forms.Select(**select_kwargs),
+ "first_name": forms.TextInput(**text_input_kwargs),
+ "last_name": forms.TextInput(**text_input_kwargs),
+ }
class EventForm(forms.ModelForm):
- availability = None
class Meta:
model = Event
fields = ('formatted_title', 'start_date', 'benchcoach_object')
@@ -29,12 +33,45 @@ class EventForm(forms.ModelForm):
'start_date':'Date/Time'
}
widgets = {
- "formatted_title":forms.TextInput(attrs={"disabled":"disabled"}),
- "start_date": forms.DateTimeInput(attrs={"disabled": "disabled"})
+ "benchcoach_object": forms.Select(**select_kwargs),
+ "formatted_title":forms.TextInput(**text_input_kwargs),
+ "start_date": forms.DateTimeInput(**text_input_kwargs)
}
-EventFormSet = modelformset_factory(
- model=Event,
- form=EventForm,
- extra=0
-)
+class TeamForm(forms.ModelForm):
+ class Meta:
+ model = Team
+ fields = ('name', 'benchcoach_object')
+ labels ={
+ 'benchcoach_object':'BenchCoach Link',
+ }
+ widgets = {
+ "name":forms.TextInput(**text_input_kwargs),
+ "benchcoach_object": forms.Select(**select_kwargs)
+ }
+
+class OpponentForm(forms.ModelForm):
+ class Meta:
+ model = Opponent
+ fields = ('name', 'benchcoach_object')
+ labels ={
+ 'benchcoach_object':'BenchCoach Link',
+ }
+ widgets = {
+ "name":forms.TextInput(**text_input_kwargs),
+ "benchcoach_object": forms.Select(**select_kwargs)
+ }
+
+class LocationForm(forms.ModelForm):
+ class Meta:
+ model = Location
+ fields = ('name', 'benchcoach_object')
+ labels ={
+ 'benchcoach_object':'BenchCoach Link',
+ }
+ widgets = {
+ "name":forms.TextInput(**text_input_kwargs),
+ "benchcoach_object": forms.Select(**select_kwargs)
+ }
+
+
diff --git a/teamsnap/migrations/0004_auto_20211222_0957.py b/teamsnap/migrations/0004_auto_20211222_0957.py
new file mode 100644
index 0000000..a9803d6
--- /dev/null
+++ b/teamsnap/migrations/0004_auto_20211222_0957.py
@@ -0,0 +1,23 @@
+# Generated by Django 3.2.6 on 2021-12-22 15:57
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('teamsnap', '0003_auto_20211219_2058'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='event',
+ name='is_game',
+ field=models.BooleanField(null=True),
+ ),
+ migrations.AlterField(
+ model_name='member',
+ name='is_non_player',
+ field=models.BooleanField(null=True),
+ ),
+ ]
diff --git a/teamsnap/models.py b/teamsnap/models.py
index 3562cef..409b09b 100644
--- a/teamsnap/models.py
+++ b/teamsnap/models.py
@@ -26,6 +26,7 @@ class Team(TeamsnapBaseModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Team,
null=True,
+ blank=True,
on_delete=models.CASCADE,
related_name="teamsnap_team"
)
@@ -35,7 +36,8 @@ class Team(TeamsnapBaseModel):
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)
+ id = data.pop('id')
+ team, created = cls.objects.update_or_create(id=id, defaults=data)
return (team, created)
class User(TeamsnapBaseModel):
@@ -55,7 +57,8 @@ class User(TeamsnapBaseModel):
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)
+ id = user_data.pop('id')
+ user, created = cls.objects.update_or_create(id=id, defaults=user_data)
user.managed_teams.add(*managed_teams)
return (user, created)
@@ -80,6 +83,7 @@ class Opponent(TeamsnapManagedObjectModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Team,
null=True,
+ blank=True,
on_delete=models.CASCADE,
related_name="teamsnap_opponent"
)
@@ -90,8 +94,10 @@ class Opponent(TeamsnapManagedObjectModel):
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)
+ id = opponent_data.pop('id')
+ opponent, created = cls.objects.update_or_create(id=id, defaults=opponent_data)
opponent.team = team
+ opponent.save()
return (opponent, created)
class Location(TeamsnapManagedObjectModel):
@@ -100,6 +106,7 @@ class Location(TeamsnapManagedObjectModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Venue,
null=True,
+ blank=True,
on_delete=models.CASCADE,
related_name="teamsnap_location"
)
@@ -110,8 +117,10 @@ class Location(TeamsnapManagedObjectModel):
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)
+ id = opponent_data.pop('id')
+ location, created = cls.objects.update_or_create(id=id, defaults=opponent_data)
location.team = team
+ location.save()
return (location, created)
class Member(TeamsnapManagedObjectModel):
@@ -123,13 +132,14 @@ class Member(TeamsnapManagedObjectModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Player,
null=True,
+ blank=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()
+ is_non_player = models.BooleanField(null=True)
ApiObject = teamsnap.teamsnap.api.Member
@classmethod
@@ -137,8 +147,10 @@ class Member(TeamsnapManagedObjectModel):
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)
+ id = member_data.pop('id')
+ member, created = cls.objects.update_or_create(id=id, defaults= member_data)
member.team = team
+ member.save()
return (member, created)
def __str__(self):
@@ -156,6 +168,7 @@ class Event(TeamsnapManagedObjectModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Event,
null=True,
+ blank=True,
on_delete=models.CASCADE,
related_name="teamsnap_event"
)
@@ -166,7 +179,7 @@ class Event(TeamsnapManagedObjectModel):
formatted_title = models.CharField(max_length = 50, null=True)
points_for_opponent = models.PositiveSmallIntegerField(null=True)
points_for_team = models.PositiveSmallIntegerField(null=True)
- is_game = models.BooleanField()
+ is_game = models.BooleanField(null=True)
game_type = models.CharField(max_length = 50, null=True)
ApiObject = teamsnap.teamsnap.api.Event
@@ -187,13 +200,15 @@ class Event(TeamsnapManagedObjectModel):
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)
+ id = event_data.pop('id')
+ event, created = cls.objects.update_or_create(id=id, defaults=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)
+ event.save()
+ return (team, created)
def __str__(self):
return f"{self.formatted_title} ({self.id})"
@@ -214,6 +229,7 @@ class Availability(TeamsnapManagedObjectModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Availability,
null=True,
+ blank=True,
on_delete=models.CASCADE,
related_name="teamsnap_availability"
)
@@ -238,10 +254,12 @@ class Availability(TeamsnapManagedObjectModel):
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)
+ id = availability_data.pop('id')
+ availability, created = cls.objects.update_or_create(id=id, defaults=availability_data)
availability.team = team
availability.event = event
availability.member = member
+ availability.save()
return (availability, created)
class LineupEntry(TeamsnapManagedObjectModel):
@@ -263,6 +281,7 @@ class LineupEntry(TeamsnapManagedObjectModel):
benchcoach_object = models.OneToOneField(
benchcoach.models.Positioning,
null=True,
+ blank=True,
on_delete=models.CASCADE,
related_name="teamsnap_lineupentry"
)
@@ -283,8 +302,10 @@ class LineupEntry(TeamsnapManagedObjectModel):
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)
+ id = lineup_entry_data.pop('id')
+ lineup_entry, created = cls.objects.update_or_create(id=id, defaults=lineup_entry_data)
lineup_entry.team = team
lineup_entry.event = event
lineup_entry.member = member
+ lineup_entry.save()
return (lineup_entry, created)
\ No newline at end of file
diff --git a/teamsnap/templates/teamsnap/event_list.html b/teamsnap/templates/teamsnap/event_list.html
deleted file mode 100644
index c973204..0000000
--- a/teamsnap/templates/teamsnap/event_list.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{% extends "base.html" %}
-{% block title %} {{ title }}{% endblock %}
-
-{% block content %}
-
-
{{ title }}
-{##}
-{% for item in object_list %}
-
- {{ item.formatted_title }}
- {{ item.subtitle }}
-{# {% if item.body %}#}
-{#
{{ item.body }}#}
-
{{ item.start_date|date:"D, M j, g:i A" }},
{{item.location.name}}
-{# {% endif %}#}
-
- {% for button in item.buttons %}
- {{ button.label }}
- {% endfor %}
-
-{% endfor %}
-
-{% endblock %}
\ No newline at end of file
diff --git a/teamsnap/templates/teamsnap/home.html b/teamsnap/templates/teamsnap/home.html
index 8d65c96..7779e31 100644
--- a/teamsnap/templates/teamsnap/home.html
+++ b/teamsnap/templates/teamsnap/home.html
@@ -7,32 +7,30 @@
TeamSnap: {{ teamsnap_user.email }}
TeamSnap Managed Team: {{ teamsnap_team.name }}
-