From eb194d0b9627dc0865291688e0fbc652541d8955 Mon Sep 17 00:00:00 2001 From: Andrey Niakhaichyk Date: Tue, 21 May 2013 17:00:54 +0300 Subject: [PATCH] Tournaments application and models for it --- README.md | 6 ++++-- ss_chess_tour/settings.py | 1 + tournaments/__init__.py | 0 tournaments/models.py | 38 ++++++++++++++++++++++++++++++++++++++ tournaments/tests.py | 16 ++++++++++++++++ tournaments/views.py | 1 + 6 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 tournaments/__init__.py create mode 100644 tournaments/models.py create mode 100644 tournaments/tests.py create mode 100644 tournaments/views.py diff --git a/README.md b/README.md index 00fc273..e60354b 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,11 @@ swiss-system-chess-tournament The system is for helping judges to provide chess tournaments based on swiss system. #### Requirements: -Python 2.7 -Django 1.5.1 +* Python 2.7 +* Django 1.5.1 #### Features: +#### Problems: +* How to store players for game? One record or two record? diff --git a/ss_chess_tour/settings.py b/ss_chess_tour/settings.py index c0b54bc..284b1de 100644 --- a/ss_chess_tour/settings.py +++ b/ss_chess_tour/settings.py @@ -124,6 +124,7 @@ 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', + 'tournaments', ) # A sample logging configuration. The only tangible logging diff --git a/tournaments/__init__.py b/tournaments/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tournaments/models.py b/tournaments/models.py new file mode 100644 index 0000000..ea16585 --- /dev/null +++ b/tournaments/models.py @@ -0,0 +1,38 @@ +from django.db import models + +# Create your models here. +class Player(models.Model): + name = models.CharField(max_length=200) + register_date = models.DateTimeField('registration date') + initial_rating = models.IntegerField() + rating = models.IntegerField() + fide_id = models.BigIntegerField('FIDE ID') + fide_title = models.CharField(max_length=10) + +class Tournament(models.Model): + name = models.CharField(max_length=200) + start_date = models.DateTimeField() + end_date = models.DateTimeField() + players = models.ManyToManyField(Player) + +class Round(models.Model): + tournament = models.ForeignKey(Tournament) + name = models.CharField(max_length=200) + round_date = models.DateTimeField() + +class Game(models.Model): + GAME_STATUSES = ( + ('planned', 'planned'), + ('finished', 'finished'), + ('walkover', 'walkover'), + ) + + round = models.ForeignKey(Round) + player = models.ForeignKey(Player, related_name="player_a") + player_score = models.DecimalField(max_digits=4, decimal_places=1) + opponent = models.ForeignKey(Player, related_name="player_b") + opponent_score = models.DecimalField(max_digits=4, decimal_places=1) + status = models.CharField(max_length=10, + choices=GAME_STATUSES, + default='planned') + diff --git a/tournaments/tests.py b/tournaments/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/tournaments/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/tournaments/views.py b/tournaments/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/tournaments/views.py @@ -0,0 +1 @@ +# Create your views here.