7
7
from tastypie .models import create_api_key
8
8
9
9
10
- class Person (models .Model ):
11
- user = models .OneToOneField ( User , blank = True , null = True , related_name = 'handball_profile' )
10
+ class Union (models .Model ):
11
+ name = models .CharField ( max_length = 50 )
12
12
13
- first_name = models .CharField (max_length = 50 )
14
- last_name = models .CharField (max_length = 50 )
15
- address = models .CharField (max_length = 50 , blank = True )
16
- city = models .CharField (max_length = 50 , blank = True )
17
- zip_code = models .IntegerField (null = True , blank = True )
18
- birthday = models .DateField (null = True , blank = True )
19
- pass_number = models .IntegerField (null = True , blank = True )
20
- gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))), default = 'male' )
21
- mobile_number = models .CharField (max_length = 20 , blank = True )
13
+ managers = models .ManyToManyField ('Person' , blank = True , related_name = 'unions_managed' , through = 'UnionManagerRelation' )
22
14
23
15
def __unicode__ (self ):
24
- return self .first_name + ' ' + self . last_name
16
+ return self .name
25
17
26
18
27
- class Team (models .Model ):
19
+ class District (models .Model ):
28
20
name = models .CharField (max_length = 50 )
29
- validated = models .BooleanField (blank = True , default = False )
30
21
31
- players = models .ManyToManyField ('Person' , blank = True , related_name = 'teams' , through = 'TeamPlayerRelation' )
32
- coaches = models .ManyToManyField ('Person' , blank = True , related_name = 'teams_coached' , through = 'TeamCoachRelation' )
33
- # league = models.ForeignKey('League', related_name='league', blank=True)
34
- club = models .ForeignKey ('Club' , related_name = 'teams' )
35
- managers = models .ManyToManyField ('Person' , blank = True , related_name = 'teams_managed' , through = 'TeamManagerRelation' )
22
+ union = models .ForeignKey ('Union' , related_name = 'districts' )
23
+ managers = models .ManyToManyField ('Person' , blank = True , related_name = 'districts_managed' , through = 'DistrictManagerRelation' )
36
24
37
25
def __unicode__ (self ):
38
- return self .club . name + ' ' + self . name
26
+ return self .name
39
27
40
28
41
29
class Club (models .Model ):
@@ -51,64 +39,82 @@ def __unicode__(self):
51
39
return self .name
52
40
53
41
54
- class League (models .Model ):
42
+ class Team (models .Model ):
55
43
name = models .CharField (max_length = 50 )
56
- gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))))
57
- age_group = models .CharField (max_length = 20 , choices = (('adults' , _ ('adults' )), ('juniors' , _ ('juniors' )), ('kids' , _ ('kids' ))))
44
+ validated = models .BooleanField (blank = True , default = False )
58
45
59
- union = models .ForeignKey ('Union' , related_name = 'leagues' , blank = True )
60
- district = models .ForeignKey ('District' , related_name = 'leagues' , blank = True )
61
- managers = models .ManyToManyField ('Person' , blank = True , related_name = 'leagues_managed' , through = 'LeagueManagerRelation' )
46
+ players = models .ManyToManyField ('Person' , blank = True , related_name = 'teams' , through = 'TeamPlayerRelation' )
47
+ coaches = models .ManyToManyField ('Person' , blank = True , related_name = 'teams_coached' , through = 'TeamCoachRelation' )
48
+ # league = models.ForeignKey('League', related_name='league', blank=True)
49
+ club = models .ForeignKey ('Club' , related_name = 'teams' )
50
+ managers = models .ManyToManyField ('Person' , blank = True , related_name = 'teams_managed' , through = 'TeamManagerRelation' )
62
51
63
52
def __unicode__ (self ):
64
- return u'{0} {1} {2}' . format ( self .name , self . gender , self .age_group )
53
+ return self .club . name + ' ' + self .name
65
54
66
55
67
- class LeagueTemplate (models .Model ):
56
+ class LeagueLevel (models .Model ):
68
57
name = models .CharField (max_length = 50 )
69
- gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))))
70
- age_group = models .CharField (max_length = 20 , choices = (('adults' , _ ('adults' )), ('juniors' , _ ('juniors' )), ('kids' , _ ('kids' ))))
71
58
72
- def __unicode__ (self ):
73
- return u'{0} {1} {2}' .format (self .name , self .gender , self .age_group )
59
+ union_specific = models .BooleanField (default = False )
60
+ district_specific = models .BooleanField (default = False )
61
+
62
+
63
+ class AgeGroup (models .Model ):
64
+ name = models .CharField (max_length = 20 )
65
+
66
+ min_age = models .IntegerField ()
67
+ max_age = models .IntegerField ()
74
68
75
69
76
70
class Group (models .Model ):
77
71
name = models .CharField (max_length = 50 )
72
+ kind = models .CharField (max_length = 20 , choices = (('league' , _ ('league' )), ('cup' , _ ('cup' )), ('tournament' , _ ('tournament' ))))
73
+ gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))), default = 'male' )
78
74
79
- union = models .ForeignKey ('Union' , related_name = 'groups' , blank = True )
80
- district = models .ForeignKey ('District' , related_name = 'groups' , blank = True )
81
- league = models .ForeignKey ('League' , related_name = 'groups' , blank = True )
82
- teams = models .ManyToManyField ('Team' , related_name = 'groups' , blank = True )
75
+ level = models .ForeignKey ('LeagueLevel' , blank = True , null = True )
76
+ age_group = models .CharField (max_length = 20 , choices = (('adults' , _ ('adults' )), ('juniors_a' , _ ('juniors a' )),
77
+ ('juniors_b' , _ ('juniors b' )), ('juniors_c' , _ ('juniors c' )), ('juniors_d' , _ ('juniors d' )), ('juniors_e' , _ ('juniors e' ))))
78
+ union = models .ForeignKey ('Union' , related_name = 'leagues' , blank = True , null = True )
79
+ district = models .ForeignKey ('District' , related_name = 'leagues' , blank = True , null = True )
80
+ teams = models .ManyToManyField ('Team' , related_name = 'groups' , through = 'GroupTeamRelation' )
81
+ managers = models .ManyToManyField ('Person' , blank = True , related_name = 'groups_managed' , through = 'GroupManagerRelation' )
83
82
84
83
def __unicode__ (self ):
85
- return u'{0}, {1}, {2}, {3}' .format (self .name , self .league .name , self .league .gender , self .league .age_group , self .league .district .name )
86
-
84
+ return u'{0}: {1} {2} {3}' .format (self .kind , self .name , self .gender , self .age_group .name )
87
85
88
- class District (models .Model ):
89
- name = models .CharField (max_length = 50 )
90
86
91
- union = models .ForeignKey ('Union' , related_name = 'districts' )
92
- managers = models .ManyToManyField ('Person' , blank = True , related_name = 'districts_managed' , through = 'DistrictManagerRelation' )
87
+ class GroupTeamRelation (models .Model ):
88
+ group = models .ForeignKey ('Group' )
89
+ team = models .ForeignKey ('Team' )
93
90
94
- def __unicode__ ( self ):
95
- return self . name
91
+ points = models . IntegerField ()
92
+ position = models . IntegerField ()
96
93
97
94
98
- class Union (models .Model ):
99
- name = models .CharField ( max_length = 50 )
95
+ class Person (models .Model ):
96
+ user = models .OneToOneField ( User , blank = True , null = True , related_name = 'handball_profile' )
100
97
101
- managers = models .ManyToManyField ('Person' , blank = True , related_name = 'unions_managed' , through = 'UnionManagerRelation' )
98
+ first_name = models .CharField (max_length = 50 )
99
+ last_name = models .CharField (max_length = 50 )
100
+ address = models .CharField (max_length = 50 , blank = True )
101
+ city = models .CharField (max_length = 50 , blank = True )
102
+ zip_code = models .IntegerField (null = True , blank = True )
103
+ birthday = models .DateField (null = True , blank = True )
104
+ pass_number = models .IntegerField (null = True , blank = True )
105
+ gender = models .CharField (max_length = 10 , choices = (('male' , _ ('male' )), ('female' , _ ('female' ))), default = 'male' )
106
+ mobile_number = models .CharField (max_length = 20 , blank = True )
102
107
103
108
def __unicode__ (self ):
104
- return self .name
109
+ return self .first_name + ' ' + self . last_name
105
110
106
111
107
112
class Game (models .Model ):
108
113
number = models .IntegerField (unique = True , blank = True , null = True )
109
114
start = models .DateTimeField ()
110
115
score_home = models .IntegerField ()
111
116
score_away = models .IntegerField ()
117
+ duration = models .IntegerField (default = 60 )
112
118
113
119
home = models .ForeignKey ('Team' , related_name = 'games_home' )
114
120
away = models .ForeignKey ('Team' , related_name = 'games_away' )
@@ -117,22 +123,15 @@ class Game(models.Model):
117
123
secretary = models .ForeignKey ('Person' , related_name = 'games_as_secretary' )
118
124
supervisor = models .ForeignKey ('Person' , related_name = 'games_as_supervisor' )
119
125
winner = models .ForeignKey ('Team' , related_name = 'games_won' , blank = True , null = True )
120
- group = models .ForeignKey ('Group' , related_name = 'games' )
121
- game_type = models .ForeignKey ( 'GameType' )
126
+ group = models .ForeignKey ('Group' , related_name = 'games' , blank = True , null = True )
127
+ # game_type = models.CharField(max_length=20, choices=(('cub', _('cub')), ('friendly', _('friendly')), ('league', _('league')), ('tournament', _('tournament'))) )
122
128
site = models .ForeignKey ('Site' )
123
129
players = models .ManyToManyField ('Person' , through = 'GamePlayerRelation' )
124
130
125
131
def __unicode__ (self ):
126
132
return u'{0}/{1}/{2}: {3} {4} vs. {5} {6}' .format (self .start .year , self .start .month , self .start .day , self .home .club .name , self .home .name , self .away .club .name , self .away .name )
127
133
128
134
129
- class GameType (models .Model ):
130
- name = models .CharField (max_length = 20 )
131
-
132
- def __unicode__ (self ):
133
- return self .name
134
-
135
-
136
135
class Site (models .Model ):
137
136
# name = models.CharField(max_length=50)
138
137
address = models .CharField (max_length = 50 )
@@ -180,7 +179,7 @@ class TeamCoachRelation(models.Model):
180
179
coach = models .ForeignKey ('Person' )
181
180
team = models .ForeignKey ('Team' )
182
181
183
- member_confirmed = models .BooleanField (default = False )
182
+ coach_confirmed = models .BooleanField (default = False )
184
183
manager_confirmed = models .BooleanField (default = False )
185
184
186
185
@@ -196,10 +195,10 @@ class TeamManagerRelation(models.Model):
196
195
appointed_by = models .ForeignKey (User , related_name = 'handball_team_managers_appointed' , blank = True , null = True )
197
196
198
197
199
- class LeagueManagerRelation (models .Model ):
200
- league = models .ForeignKey ('League ' )
198
+ class GroupManagerRelation (models .Model ):
199
+ group = models .ForeignKey ('Group ' )
201
200
manager = models .ForeignKey ('Person' )
202
- appointed_by = models .ForeignKey (User , related_name = 'handball_league_managers_appointed ' , blank = True , null = True )
201
+ appointed_by = models .ForeignKey (User , related_name = 'handball_group_managers_appointed ' , blank = True , null = True )
203
202
204
203
205
204
class DistrictManagerRelation (models .Model ):
@@ -230,29 +229,28 @@ def __unicode__(self):
230
229
return self .name
231
230
232
231
233
- def create_default_leagues (sender , instance , created , ** kwargs ):
234
- # Create defaults leagues for District after creation
235
- if created :
236
- templates = LeagueTemplate .objects .all ()
237
-
238
- for template in templates :
239
- League .objects .create (name = template .name , gender = template .gender , age_group = template .age_group , district = instance )
240
-
241
-
242
232
def set_union_by_district (sender , instance , ** kwargs ):
243
233
# If district is set, set according union
244
234
if instance .district :
245
235
instance .union = instance .district .union
246
236
247
237
248
- def set_club_by_team (sender , instance , created , ** kwargs ):
238
+ def player_to_club_member (sender , instance , created , ** kwargs ):
249
239
try :
250
240
ClubMemberRelation .objects .get (member = instance .player , club = instance .team .club )
251
241
except ClubMemberRelation .DoesNotExist :
252
242
ClubMemberRelation .objects .create (member = instance .player , club = instance .team .club ,
253
243
manager_confirmed = instance .manager_confirmed , member_confirmed = instance .player_confirmed )
254
244
255
245
246
+ def coach_to_club_member (sender , instance , created , ** kwargs ):
247
+ try :
248
+ ClubMemberRelation .objects .get (member = instance .coach , club = instance .team .club )
249
+ except ClubMemberRelation .DoesNotExist :
250
+ ClubMemberRelation .objects .create (member = instance .coach , club = instance .team .club ,
251
+ manager_confirmed = instance .manager_confirmed , member_confirmed = instance .coach_confirmed )
252
+
253
+
256
254
def add_player_to_team (sender , instance , created , ** kwargs ):
257
255
try :
258
256
TeamPlayerRelation .objects .get (team = instance .team , player = instance .player )
@@ -287,9 +285,9 @@ def club_primary_check(sender, instance, **kwargs):
287
285
288
286
# Create API key for a new user
289
287
post_save .connect (create_api_key , sender = User )
290
- post_save .connect (create_default_leagues , sender = District )
291
- pre_save .connect (set_union_by_district , sender = League )
292
- post_save .connect (set_club_by_team , sender = TeamPlayerRelation )
288
+ pre_save .connect (set_union_by_district , sender = Group )
289
+ post_save .connect (player_to_club_member , sender = TeamPlayerRelation )
290
+ post_save .connect (coach_to_club_member , sender = TeamCoachRelation )
293
291
post_save .connect (add_player_to_team , sender = GamePlayerRelation )
294
292
post_save .connect (club_member_to_manager , sender = ClubMemberRelation )
295
293
post_save .connect (team_player_to_manager , sender = TeamPlayerRelation )
0 commit comments