Skip to content

Commit 270cd89

Browse files
committed
Add GamePlayerRelation resource; A couple of other adjustments
1 parent 2570655 commit 270cd89

File tree

3 files changed

+49
-26
lines changed

3 files changed

+49
-26
lines changed

admin.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,13 @@ class TeamCoachInline(admin.TabularInline):
1717
extra = 1
1818

1919

20+
class GamePlayerInline(admin.TabularInline):
21+
model = handball.models.GamePlayerRelation
22+
extra = 1
23+
24+
2025
class PersonAdmin(admin.ModelAdmin):
21-
inlines = (ClubMemberInline, TeamPlayerInline, TeamCoachInline)
26+
inlines = (ClubMemberInline, TeamPlayerInline, TeamCoachInline, GamePlayerInline)
2227

2328

2429
class ClubAdmin(admin.ModelAdmin):
@@ -29,16 +34,21 @@ class TeamAdmin(admin.ModelAdmin):
2934
inlines = (TeamPlayerInline, TeamCoachInline)
3035

3136

37+
class GameAdmin(admin.ModelAdmin):
38+
inlines = (GamePlayerInline,)
39+
40+
3241
admin.site.register(handball.models.Person, PersonAdmin)
3342
admin.site.register(handball.models.Club, ClubAdmin)
3443
admin.site.register(handball.models.Group)
3544
admin.site.register(handball.models.League)
3645
admin.site.register(handball.models.LeagueTemplate)
3746
admin.site.register(handball.models.District)
3847
admin.site.register(handball.models.Union)
39-
admin.site.register(handball.models.Game)
48+
admin.site.register(handball.models.Game, GameAdmin)
4049
admin.site.register(handball.models.GameType)
4150
admin.site.register(handball.models.Team, TeamAdmin)
4251
admin.site.register(handball.models.Site)
4352
admin.site.register(handball.models.Event)
4453
admin.site.register(handball.models.EventType)
54+
admin.site.register(handball.models.GamePlayerRelation)

api.py

+33-24
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ def dehydrate(self, bundle):
6060
return bundle
6161

6262

63+
class GroupResource(ModelResource):
64+
class Meta:
65+
queryset = Group.objects.all()
66+
authorization = Authorization()
67+
authentication = Authentication()
68+
69+
6370
class ClubResource(ModelResource):
6471
district = fields.ForeignKey(DistrictResource, 'district', full=True)
6572
# teams = fields.ToManyField('handball.api.TeamResource', 'teams')
@@ -150,26 +157,19 @@ def dehydrate(self, bundle):
150157
clubBundle = resource.build_bundle(obj=membership.club, request=bundle.request)
151158
bundle.data['clubs'].append(resource.full_dehydrate(clubBundle))
152159

153-
# del bundle.data['clubs']
154-
# del bundle.data['clubs_managed']
155-
# del bundle.data['teams']
156-
# del bundle.data['teams_managed']
157-
# del bundle.data['teams_coached']
158160
return bundle
159161

160162

161163
class GameTypeResource(ModelResource):
162164
class Meta:
163165
queryset = GameType.objects.all()
164-
include_resource_uri = False
165166
authorization = Authorization()
166167
authentication = Authentication()
167168

168169

169170
class SiteResource(ModelResource):
170171
class Meta:
171172
queryset = Site.objects.all()
172-
include_resource_uri = False
173173
authorization = Authorization()
174174
authentication = Authentication()
175175

@@ -180,33 +180,37 @@ class GameResource(ModelResource):
180180
referee = fields.ForeignKey(PersonResource, 'referee')
181181
timer = fields.ForeignKey(PersonResource, 'timer')
182182
secretary = fields.ForeignKey(PersonResource, 'secretary')
183-
winner = fields.ForeignKey(TeamResource, 'winner')
184-
union = fields.ForeignKey(UnionResource, 'union', full=True)
185-
league = fields.ForeignKey(LeagueResource, 'league', full=True)
186-
game_type = fields.ForeignKey(GameTypeResource, 'game_type', full=True)
187-
site = fields.ForeignKey(SiteResource, 'site', full=True)
188-
players = fields.ManyToManyField(PersonResource, 'players')
183+
supervisor = fields.ForeignKey(PersonResource, 'supervisor')
184+
winner = fields.ForeignKey(TeamResource, 'winner', null=True)
185+
group = fields.ForeignKey(GroupResource, 'group')
186+
game_type = fields.ForeignKey(GameTypeResource, 'game_type')
187+
site = fields.ForeignKey(SiteResource, 'site')
189188
events = fields.ToManyField('handball.api.EventResource', 'events', full=True)
190189

191190
class Meta:
192191
queryset = Game.objects.all()
193192
authorization = Authorization()
194193
authentication = Authentication()
194+
always_return_data = True
195195

196+
def hydrate_m2m(self, bundle):
197+
for item in bundle.data['events']:
198+
item[u'game'] = self.get_resource_uri(bundle)
199+
return super(GameResource, self).hydrate_m2m(bundle)
196200

197-
class EventTypeResource(ModelResource):
198-
game = fields.ForeignKey(GameResource, 'game')
199201

202+
class EventTypeResource(ModelResource):
200203
class Meta:
201204
queryset = EventType.objects.all()
202-
include_resource_uri = False
203205
authorization = Authorization()
204206
authentication = Authentication()
205207

206208

207209
class EventResource(ModelResource):
208-
player = fields.ForeignKey(PersonResource, 'person')
210+
person = fields.ForeignKey(PersonResource, 'person', full=True)
209211
game = fields.ForeignKey(GameResource, 'game')
212+
event_type = fields.ForeignKey(EventTypeResource, 'event_type')
213+
team = fields.ForeignKey(TeamResource, 'team')
210214

211215
class Meta:
212216
queryset = Event.objects.all()
@@ -226,6 +230,18 @@ class Meta:
226230
always_return_data = True
227231

228232

233+
class GamePlayerRelationResource(ModelResource):
234+
game = fields.ForeignKey(GameResource, 'game', full=True)
235+
player = fields.ForeignKey(PersonResource, 'player', full=True)
236+
team = fields.ForeignKey(TeamResource, 'team')
237+
238+
class Meta:
239+
queryset = GamePlayerRelation.objects.all()
240+
authorization = Authorization()
241+
authentication = Authentication()
242+
always_return_data = True
243+
244+
229245
class SiteResource(ModelResource):
230246
class Meta:
231247
queryset = Site.objects.all()
@@ -238,13 +254,6 @@ def dehydrate(self, bundle):
238254
return bundle
239255

240256

241-
class GroupResource(ModelResource):
242-
class Meta:
243-
queryset = Group.objects.all()
244-
authorization = Authorization()
245-
authentication = Authentication()
246-
247-
248257
"""
249258
Non-resource api endpoints
250259
"""

urls.py

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
v1_api.register(SiteResource())
1616
v1_api.register(GameTypeResource())
1717
v1_api.register(GroupResource())
18+
v1_api.register(GameResource())
19+
v1_api.register(EventResource())
20+
v1_api.register(EventTypeResource())
21+
v1_api.register(GamePlayerRelationResource())
1822

1923
urlpatterns = patterns('handball.views',
2024
(r'^$', 'index')

0 commit comments

Comments
 (0)