Skip to content

Commit f852799

Browse files
committed
Refactor post_save handlers; Add post_save handler for game
1 parent 4872d05 commit f852799

File tree

1 file changed

+55
-31
lines changed

1 file changed

+55
-31
lines changed

Diff for: models.py

+55-31
Original file line numberDiff line numberDiff line change
@@ -219,68 +219,92 @@ class Event(models.Model):
219219
team = models.ForeignKey('Team')
220220

221221

222-
def set_union_by_district(sender, instance, **kwargs):
222+
def group_post_save(sender, instance, **kwargs):
223223
# If district is set, set according union
224224
if instance.district:
225225
instance.union = instance.district.union
226226

227227

228-
def player_to_club_member(sender, instance, created, **kwargs):
228+
def team_player_post_save(sender, instance, created, **kwargs):
229+
# Add player to club if not member already
229230
try:
230231
ClubMemberRelation.objects.get(member=instance.player, club=instance.team.club)
231232
except ClubMemberRelation.DoesNotExist:
232-
ClubMemberRelation.objects.create(member=instance.player, club=instance.team.club,
233-
manager_confirmed=instance.manager_confirmed, member_confirmed=instance.player_confirmed)
233+
ClubMemberRelation.objects.create(member=instance.player, club=instance.team.club, validated=instance.validated)
234234

235+
# If first team member, asign as manager
236+
managers = TeamManagerRelation.objects.filter(team=instance.team)
237+
if len(managers) == 0:
238+
TeamManagerRelation.objects.create(team=instance.team, manager=instance.player)
235239

236-
def coach_to_club_member(sender, instance, created, **kwargs):
240+
241+
def team_coach_post_save(sender, instance, created, **kwargs):
242+
# Add coach to club if not member already
237243
try:
238244
ClubMemberRelation.objects.get(member=instance.coach, club=instance.team.club)
239245
except ClubMemberRelation.DoesNotExist:
240-
ClubMemberRelation.objects.create(member=instance.coach, club=instance.team.club,
241-
manager_confirmed=instance.manager_confirmed, member_confirmed=instance.coach_confirmed)
246+
ClubMemberRelation.objects.create(member=instance.coach, club=instance.team.club, validated=instance.validated)
247+
248+
# If first team member, asign as manager
249+
managers = TeamManagerRelation.objects.filter(team=instance.team)
250+
if len(managers) == 0:
251+
TeamManagerRelation.objects.create(team=instance.team, manager=instance.coach)
242252

243253

244-
def add_player_to_team(sender, instance, created, **kwargs):
254+
def game_player_post_save(sender, instance, created, **kwargs):
245255
try:
246256
TeamPlayerRelation.objects.get(team=instance.team, player=instance.player)
247257
except TeamPlayerRelation.DoesNotExist:
248-
TeamPlayerRelation.objects.create(team=instance.team, player=instance.player, manager_confirmed=True, player_confirmed=True)
258+
TeamPlayerRelation.objects.create(team=instance.team, player=instance.player, validated=True)
249259

250260

251-
def club_member_to_manager(sender, instance, created, **kwargs):
261+
def club_member_post_save(sender, instance, created, **kwargs):
262+
# If first member, make manager
252263
managers = ClubManagerRelation.objects.filter(club=instance.club)
253264
if len(managers) == 0:
254265
ClubManagerRelation.objects.create(club=instance.club, manager=instance.member, validated=True)
255266

256-
257-
def team_player_to_manager(sender, instance, created, **kwargs):
258-
managers = TeamManagerRelation.objects.filter(team=instance.team)
259-
if len(managers) == 0:
260-
TeamManagerRelation.objects.create(team=instance.team, manager=instance.player)
267+
# If first club, make primary
268+
clubs = ClubMemberRelation.objects.filter(member=instance.member)
269+
if len(clubs) == 0:
270+
instance.primary = True
261271

262272

263-
def team_coach_to_manager(sender, instance, created, **kwargs):
264-
managers = TeamManagerRelation.objects.filter(team=instance.team)
265-
if len(managers) == 0:
266-
TeamManagerRelation.objects.create(team=instance.team, manager=instance.coach)
273+
def game_post_save(sender, instance, created, **kwargs):
274+
if created:
275+
winner_score = 1
276+
home_score = winner_score if instance.winner and instance.home.id == instance.winner.id else 0
277+
away_score = winner_score if instance.winner and instance.away.id == instance.winner.id else 0
267278

279+
# Set site as default home site if not set yet
280+
if not instance.home.club.home_site:
281+
instance.home.club.home_site = instance.site
282+
instance.home.club.save()
268283

269-
def club_primary_check(sender, instance, **kwargs):
270-
clubs = ClubMemberRelation.objects.filter(member=instance.member)
284+
# Add teams to group if not already in it,
285+
# Add score to winner team
286+
try:
287+
rel = GroupTeamRelation.objects.get(team=instance.home, group=instance.group)
288+
rel.score += home_score
289+
rel.save()
290+
except GroupTeamRelation.DoesNotExist:
291+
GroupTeamRelation.objects.create(team=instance.home, group=instance.group, score=home_score)
271292

272-
if len(clubs) == 0:
273-
instance.primary = True
293+
try:
294+
rel = GroupTeamRelation.objects.get(team=instance.away, group=instance.group)
295+
rel.score += away_score
296+
rel.save()
297+
except GroupTeamRelation.DoesNotExist:
298+
GroupTeamRelation.objects.create(team=instance.away, group=instance.group, score=away_score)
274299

275300

276301
# Create API key for a new user
277302
post_save.connect(create_api_key, sender=User)
278-
pre_save.connect(set_union_by_district, sender=Group)
279-
post_save.connect(player_to_club_member, sender=TeamPlayerRelation)
280-
post_save.connect(coach_to_club_member, sender=TeamCoachRelation)
281-
post_save.connect(add_player_to_team, sender=GamePlayerRelation)
282-
post_save.connect(club_member_to_manager, sender=ClubMemberRelation)
283-
post_save.connect(team_player_to_manager, sender=TeamPlayerRelation)
284-
post_save.connect(team_coach_to_manager, sender=TeamCoachRelation)
285-
pre_save.connect(club_primary_check, sender=ClubMemberRelation)
303+
304+
pre_save.connect(group_post_save, sender=Group)
305+
post_save.connect(team_player_post_save, sender=TeamPlayerRelation)
306+
post_save.connect(team_coach_post_save, sender=TeamCoachRelation)
307+
post_save.connect(game_player_post_save, sender=GamePlayerRelation)
308+
post_save.connect(club_member_post_save, sender=ClubMemberRelation)
309+
post_save.connect(game_post_save, sender=Game)
286310
# m2m_changed.connect(set_club_by_team, sender=Team.players.through)

0 commit comments

Comments
 (0)