From e0ec71cc31ae74c3b9769fd0524cf43a023c8f07 Mon Sep 17 00:00:00 2001 From: James Turk <james.p.turk@gmail.com> Date: Wed, 30 May 2012 21:39:06 -0400 Subject: [PATCH] avoid multiple overlapping title reigns --- fowl/game/models.py | 5 +++++ fowl/game/tests.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/fowl/game/models.py b/fowl/game/models.py index e97ccf5..74f876e 100644 --- a/fowl/game/models.py +++ b/fowl/game/models.py @@ -33,6 +33,11 @@ class Star(models.Model): return self.division != 'other' def win_title(self, title, date, tag_partner=None): + # if they have title on that date (or won it then), don't add anything + if (self.has_title(date) or + self.reigns.filter(title=title, begin_date=date).count()): + return + # end current title reigns TitleReign.objects.filter(title=title).update(end_date=date) self.reigns.create(title=title, begin_date=date) diff --git a/fowl/game/tests.py b/fowl/game/tests.py index f10c5a2..1aa4bb7 100644 --- a/fowl/game/tests.py +++ b/fowl/game/tests.py @@ -25,6 +25,12 @@ class StarTest(TestCase): self.assertEqual(Star.objects.get(pk='cmpunk').has_title(), None) self.assertEqual(Star.objects.get(pk='danielbryan').has_title(), 'wwe') + # test multiple win does nothing + dbry.win_title('wwe', datetime.date(2012,1,1)) + dbry.win_title('wwe', datetime.date(2012,2,1)) + dbry.win_title('wwe', datetime.date(2012,3,1)) + self.assertEqual(dbry.reigns.count(), 1) + # tag belt win self.assertEqual(Star.objects.get(pk='kofi').has_title(), 'tag') self.assertEqual(Star.objects.get(pk='rtruth').has_title(), 'tag')