Skip to content

Commit ea21d97

Browse files
committed
Initial commit
0 parents  commit ea21d97

File tree

8 files changed

+415
-0
lines changed

8 files changed

+415
-0
lines changed

handball/__init__.py

Whitespace-only changes.

handball/admin.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import handball.models
2+
from django.contrib import admin
3+
4+
admin.site.register(handball.models.Person)
5+
admin.site.register(handball.models.Club)
6+
admin.site.register(handball.models.League)
7+
admin.site.register(handball.models.Union)
8+
admin.site.register(handball.models.Game)
9+
admin.site.register(handball.models.GameType)
10+
admin.site.register(handball.models.Team)
11+
admin.site.register(handball.models.Site)
12+
admin.site.register(handball.models.Event)
13+
admin.site.register(handball.models.EventType)
14+
admin.site.register(handball.models.PlayerGameRelation)

handball/api.py

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
from tastypie.resources import ModelResource
2+
from tastypie import fields
3+
from handball.models import *
4+
from django.contrib.auth.models import User
5+
from tastypie.authorization import DjangoAuthorization, Authorization
6+
from tastypie.authentication import BasicAuthentication
7+
8+
9+
class UnionResource(ModelResource):
10+
clubs = fields.ToManyField('handball.api.ClubResource', 'clubs', full=True)
11+
12+
class Meta:
13+
queryset = Union.objects.all()
14+
allowed_methods = ['get', 'post', 'put']
15+
authorization = DjangoAuthorization()
16+
authentication = BasicAuthentication()
17+
18+
19+
class ClubResource(ModelResource):
20+
union = fields.ForeignKey(UnionResource, 'union')
21+
teams = fields.ToManyField('handball.api.TeamResource', 'teams')
22+
23+
class Meta:
24+
queryset = Club.objects.all()
25+
allowed_methods = ['get', 'post', 'put']
26+
authorization = DjangoAuthorization()
27+
28+
29+
class LeagueResource(ModelResource):
30+
class Meta:
31+
queryset = Team.objects.all()
32+
allowed_methods = ['get', 'post', 'put']
33+
authorization = DjangoAuthorization()
34+
35+
36+
class TeamResource(ModelResource):
37+
club = fields.ForeignKey(ClubResource, 'club', full=True)
38+
league = fields.ForeignKey(LeagueResource, 'league', full=True)
39+
40+
class Meta:
41+
queryset = Team.objects.all()
42+
authorization = DjangoAuthorization()
43+
44+
45+
class UserResource(ModelResource):
46+
person = fields.OneToOneField('handball.api.PersonResource', 'person', full=True)
47+
48+
class Meta:
49+
queryset = User.objects.all()
50+
excludes = ["email", "password"]
51+
52+
53+
class PersonResource(ModelResource):
54+
user = fields.ForeignKey(UserResource, 'user')
55+
teams = fields.ManyToManyField(TeamResource, 'teams')
56+
57+
class Meta:
58+
queryset = Person.objects.all()
59+
authorization = DjangoAuthorization()
60+
61+
62+
class GameTypeResource(ModelResource):
63+
class Meta:
64+
queryset = GameType.objects.all()
65+
include_resource_uri = False
66+
authorization = DjangoAuthorization()
67+
68+
69+
class SiteResource(ModelResource):
70+
class Meta:
71+
queryset = Site.objects.all()
72+
include_resource_uri = False
73+
authorization = DjangoAuthorization()
74+
75+
76+
class GameResource(ModelResource):
77+
home = fields.ForeignKey(TeamResource, 'home')
78+
away = fields.ForeignKey(TeamResource, 'away')
79+
referee = fields.ForeignKey(PersonResource, 'referee')
80+
timer = fields.ForeignKey(PersonResource, 'timer')
81+
secretary = fields.ForeignKey(PersonResource, 'secretary')
82+
winner = fields.ForeignKey(TeamResource, 'winner')
83+
union = fields.ForeignKey(UnionResource, 'union', full=True)
84+
league = fields.ForeignKey(LeagueResource, 'league', full=True)
85+
game_type = fields.ForeignKey(GameTypeResource, 'game_type', full=True)
86+
site = fields.ForeignKey(SiteResource, 'site', full=True)
87+
players = fields.ManyToManyField(PersonResource, 'players')
88+
events = fields.ToManyField('handball.api.EventResource', 'events', full=True)
89+
90+
class Meta:
91+
queryset = Game.objects.all()
92+
authorization = DjangoAuthorization()
93+
94+
95+
class EventTypeResource(ModelResource):
96+
game = fields.ForeignKey(GameResource, 'game')
97+
98+
class Meta:
99+
queryset = EventType.objects.all()
100+
include_resource_uri = False
101+
authorization = DjangoAuthorization()
102+
103+
104+
class EventResource(ModelResource):
105+
player = fields.ForeignKey(PersonResource, 'person')
106+
game = fields.ForeignKey(GameResource, 'game')
107+
108+
class Meta:
109+
queryset = Event.objects.all()
110+
authorization = DjangoAuthorization()
111+
include_resource_uri = False

handball/forms.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from django import forms
2+
from django.utils.translation import ugettext as _
3+
from django.contrib.auth.models import User
4+
5+
6+
class SignUpForm(forms.Form):
7+
username = forms.CharField(label=_('User name'), required=True)
8+
email = forms.EmailField(label=_('Email'), required=True)
9+
password = forms.CharField(widget=forms.PasswordInput,
10+
label=_('Password'), required=True)
11+
password_repeat = forms.CharField(widget=forms.PasswordInput,
12+
label=_('Repeat password'), required=True)
13+
14+
def clean_username(self):
15+
data = self.cleaned_data['username']
16+
try:
17+
User.objects.get(username=data)
18+
except User.DoesNotExist:
19+
return data
20+
raise forms.ValidationError(_('This username is already taken.'))
21+
22+
def clean_email(self):
23+
data = self.cleaned_data['email']
24+
try:
25+
User.objects.get(email=data)
26+
except User.DoesNotExist:
27+
return data
28+
raise forms.ValidationError(
29+
_('A user with this email is already registered.'))
30+
31+
def clean(self):
32+
cleaned_data = super(SignUpForm, self).clean()
33+
password = cleaned_data.get('password')
34+
password_repeat = cleaned_data.get('password_repeat')
35+
36+
# check if passwords match
37+
if password and password_repeat and password != password_repeat:
38+
msg = _('The passwords do not match!')
39+
self._errors['password'] = self.error_class([msg])
40+
self._errors['password_repeat'] = self.error_class([msg])
41+
42+
del cleaned_data['password']
43+
del cleaned_data['password_repeat']
44+
45+
return cleaned_data

handball/models.py

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from django.db import models
4+
from django.contrib.auth.models import User
5+
from django.db.models.signals import post_save
6+
from django.utils.translation import ugettext as _
7+
8+
9+
class Person(models.Model):
10+
user = models.OneToOneField(User)
11+
12+
# Fields used for user activation after signup
13+
activation_key = models.CharField(max_length=40, null=True)
14+
key_expires = models.DateTimeField(null=True)
15+
16+
first_name = models.CharField(max_length=50)
17+
last_name = models.CharField(max_length=50)
18+
adress = models.CharField(max_length=50, blank=True)
19+
city = models.CharField(max_length=50, blank=True)
20+
zip_code = models.IntegerField(null=True, blank=True)
21+
birthday = models.DateField(null=True, blank=True)
22+
pass_number = models.IntegerField(unique=True, null=True, blank=True)
23+
is_coach = models.BooleanField(default=False)
24+
is_referee = models.BooleanField(default=False)
25+
is_player = models.BooleanField(default=True)
26+
is_exec = models.BooleanField(default=False)
27+
28+
teams = models.ManyToManyField('Team')
29+
30+
def __unicode__(self):
31+
return self.first_name + ' ' + self.last_name
32+
33+
34+
class Team(models.Model):
35+
name = models.CharField(max_length=50)
36+
37+
league = models.ForeignKey('League')
38+
club = models.ForeignKey('Club', related_name='teams')
39+
managers = models.ManyToManyField('Person')
40+
41+
def __unicode__(self):
42+
return self.club.name + ' ' + self.name
43+
44+
45+
class Club(models.Model):
46+
name = models.CharField(max_length=50)
47+
48+
union = models.ForeignKey('Union', related_name='clubs')
49+
managers = models.ManyToManyField('Person')
50+
51+
def __unicode__(self):
52+
return self.name
53+
54+
55+
class League(models.Model):
56+
name = models.CharField(max_length=50)
57+
gender = models.CharField(max_length=10, choices=(('male', _('male')), ('female', _('female'))))
58+
59+
def __unicode__(self):
60+
return self.name
61+
62+
63+
class Union(models.Model):
64+
name = models.CharField(max_length=50)
65+
66+
managers = models.ManyToManyField('Person')
67+
68+
def __unicode__(self):
69+
return self.name
70+
71+
72+
class Game(models.Model):
73+
number = models.IntegerField(primary_key=True)
74+
start = models.DateTimeField()
75+
goals_home = models.IntegerField()
76+
goals_away = models.IntegerField()
77+
78+
home = models.ForeignKey('Team', related_name='games_home')
79+
away = models.ForeignKey('Team', related_name='games_away')
80+
referee = models.ForeignKey('Person', related_name='games_as_referee')
81+
timer = models.ForeignKey('Person', related_name='games_as_timer')
82+
secretary = models.ForeignKey('Person', related_name='games_as_secretary')
83+
winner = models.ForeignKey('Team', related_name='games_won')
84+
union = models.ForeignKey('Union')
85+
league = models.ForeignKey('League')
86+
game_type = models.ForeignKey('GameType')
87+
site = models.ForeignKey('Site')
88+
players = models.ManyToManyField('Person', through='PlayerGameRelation')
89+
90+
def __unicode__(self):
91+
return '{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)
92+
93+
94+
class GameType(models.Model):
95+
name = models.CharField(max_length=20)
96+
97+
def __unicode__(self):
98+
return self.name
99+
100+
101+
class Site(models.Model):
102+
name = models.CharField(max_length=50)
103+
adress = models.CharField(max_length=50)
104+
city = models.CharField(max_length=50)
105+
zip_code = models.IntegerField()
106+
number = models.IntegerField(primary_key=True)
107+
108+
def __unicode__(self):
109+
return self.name
110+
111+
112+
class PlayerGameRelation(models.Model):
113+
player = models.ForeignKey('Person')
114+
game = models.ForeignKey('Game')
115+
116+
team = models.ForeignKey('Team')
117+
shirt_number = models.IntegerField()
118+
goals = models.IntegerField()
119+
warnings = models.IntegerField()
120+
penalties = models.IntegerField()
121+
disqualifications = models.IntegerField()
122+
team_penalties = models.IntegerField()
123+
penalty_shots_hit = models.IntegerField()
124+
penalty_shots_miss = models.IntegerField()
125+
126+
127+
class Event(models.Model):
128+
time = models.IntegerField()
129+
130+
person = models.ForeignKey('Person')
131+
event_type = models.ForeignKey('EventType')
132+
game = models.ForeignKey('Game', related_name='events')
133+
team = models.ForeignKey('Team')
134+
135+
136+
class EventType(models.Model):
137+
name = models.CharField(max_length=20)
138+
139+
def __unicode__(self):
140+
return self.name
141+
142+
143+
def create_user_profile(sender, instance, created, **kwargs):
144+
# Create user profile for user after creation
145+
if created:
146+
Person.objects.create(user=instance, first_name=instance.first_name, last_name=instance.last_name)
147+
148+
post_save.connect(create_user_profile, sender=User)

handball/tests.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""
2+
This file demonstrates writing tests using the unittest module. These will pass
3+
when you run "manage.py test".
4+
5+
Replace this with more appropriate tests for your application.
6+
"""
7+
8+
from django.test import TestCase
9+
10+
11+
class SimpleTest(TestCase):
12+
def test_basic_addition(self):
13+
"""
14+
Tests that 1 + 1 always equals 2.
15+
"""
16+
self.assertEqual(1 + 1, 2)

handball/urls.py

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from django.conf.urls.defaults import *
2+
3+
4+
urlpatterns = patterns('handball.views',
5+
(r'^$', 'index'),
6+
(r'^signup/$', 'sign_up'),
7+
(r'^activate/([abcdef0123456789]+)$', 'activate'),
8+
(r'^thanks/$', 'thanks')
9+
)

0 commit comments

Comments
 (0)