2
2
3
3
from django .db import models
4
4
from django .contrib .auth .models import User
5
- from django .db .models .signals import post_save
5
+ from django .db .models .signals import post_save , pre_save
6
6
from django .utils .translation import ugettext as _
7
7
from tastypie .models import create_api_key
8
8
9
9
10
10
class Person (models .Model ):
11
11
user = models .OneToOneField (User , blank = True )
12
- club = models .ForeignKey ('Club' , related_name = 'members' , blank = True )
12
+ clubs = models .ManyToManyField ('Club' , related_name = 'members' , blank = False )
13
13
14
14
# Fields used for user activation after signup
15
15
activation_key = models .CharField (max_length = 40 , blank = True )
@@ -59,6 +59,39 @@ def __unicode__(self):
59
59
class League (models .Model ):
60
60
name = models .CharField (max_length = 50 )
61
61
gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))))
62
+ age_group = models .CharField (max_length = 20 , choices = (('adults' , _ ('adults' )), ('juniors' , _ ('juniors' )), ('kids' , _ ('kids' ))))
63
+
64
+ union = models .ForeignKey ('Union' , related_name = 'leagues' , blank = True )
65
+ district = models .ForeignKey ('District' , related_name = 'leagues' , blank = True )
66
+ managers = models .ManyToManyField ('Person' , blank = True , related_name = 'leagues_managed' )
67
+
68
+ def __unicode__ (self ):
69
+ return self .name
70
+
71
+
72
+ class LeagueTemplate (models .Model ):
73
+ name = models .CharField (max_length = 50 )
74
+ gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))))
75
+ age_group = models .CharField (max_length = 20 , choices = (('adults' , _ ('adults' )), ('juniors' , _ ('juniors' )), ('kids' , _ ('kids' ))))
76
+
77
+ def __unicode__ (self ):
78
+ return self .name
79
+
80
+
81
+ class Group (models .Model ):
82
+ name = models .CharField (max_length = 50 )
83
+
84
+ union = models .ForeignKey ('Union' , related_name = 'groups' , blank = True )
85
+ district = models .ForeignKey ('District' , related_name = 'groups' , blank = True )
86
+ league = models .ForeignKey ('League' , related_name = 'groups' , blank = True )
87
+ teams = models .ManyToManyField ('Team' , related_name = 'groups' , blank = True )
88
+
89
+
90
+ class District (models .Model ):
91
+ name = models .CharField (max_length = 50 )
92
+
93
+ union = models .ForeignKey ('Union' , related_name = 'districts' )
94
+ managers = models .ManyToManyField ('Person' , blank = True , related_name = 'districts_managed' )
62
95
63
96
def __unicode__ (self ):
64
97
return self .name
@@ -85,8 +118,9 @@ class Game(models.Model):
85
118
timer = models .ForeignKey ('Person' , related_name = 'games_as_timer' )
86
119
secretary = models .ForeignKey ('Person' , related_name = 'games_as_secretary' )
87
120
winner = models .ForeignKey ('Team' , related_name = 'games_won' )
88
- union = models .ForeignKey ('Union' )
89
- league = models .ForeignKey ('League' )
121
+ # union = models.ForeignKey('Union')
122
+ # league = models.ForeignKey('League')
123
+ group = models .ForeignKey ('Group' , related_name = 'games' )
90
124
game_type = models .ForeignKey ('GameType' )
91
125
site = models .ForeignKey ('Site' )
92
126
players = models .ManyToManyField ('Person' , through = 'PlayerGameRelation' )
@@ -149,7 +183,24 @@ def create_user_profile(sender, instance, created, **kwargs):
149
183
if created :
150
184
Person .objects .create (user = instance , first_name = instance .first_name , last_name = instance .last_name )
151
185
186
+
187
+ def create_default_leagues (sender , instance , created , ** kwargs ):
188
+ # Create defaults leagues for District after creation
189
+ if created :
190
+ templates = LeagueTemplate .objects .all ()
191
+
192
+ for template in templates :
193
+ League .objects .create (name = template .name , gender = template .gender , age_group = template .age_group , district = instance )
194
+
195
+
196
+ def set_union_by_district (sender , instance , ** kwargs ):
197
+ # Set according union if district is set
198
+ if instance .district :
199
+ instance .union = instance .district .union
200
+
152
201
# post_save.connect(create_user_profile, sender=User)
153
202
154
203
# Create API key for a new user
155
204
post_save .connect (create_api_key , sender = User )
205
+ post_save .connect (create_default_leagues , sender = District )
206
+ pre_save .connect (set_union_by_district , sender = League )
0 commit comments