Reorder badges.api.create_badge

This commit is contained in:
Trever Fischer
2012-06-08 13:09:34 -04:00
parent 692a1633af
commit 092c25de07
2 changed files with 17 additions and 12 deletions

View File

@@ -3,22 +3,27 @@ import django.dispatch
badge_awarded = django.dispatch.Signal(providing_args=["award"])
def award(user, badgeName, reason=""):
def award(user, badgeName, reason="", unique=True):
badge = find_badge(badgeName)
if unique and user_has_badge(user, badgeName):
for award in user.awards.all():
if award.badge == badge:
return award
return models.Award.objects.create(badge=badge, user=user, reason=reason)
def find_badge(badgeName):
return models.Badge.objects.get(slug=badgeName)
def create_badge(title, description, badgeName=None, secret=False):
if badgeName is None:
return models.Badge.objects.create(name=title, description=description, secret=secret)
else:
try:
badge = find_badge(badgeName)
except models.Badge.DoesNotExist:
return models.Badge.objects.create(slug=badgeName, name=title, description=description, secret=secret)
return badge
def create_badge(badgeName, title, description, secret=False):
try:
badge = find_badge(badgeName)
badge.description = description
badge.title = title
badge.secret = secret
badge.save()
except models.Badge.DoesNotExist:
return models.Badge.objects.create(slug=badgeName, name=title, description=description, secret=secret)
return badge
def user_has_badge(user, badgeName, awardCount=1):
awards = models.Award.objects.filter(badge=find_badge(badgeName), user=user)

View File

@@ -15,7 +15,7 @@ class APITest(unittest.TestCase):
api.badge_awarded.disconnect()
def testCreateBadge(self):
badge = api.create_badge("Test Badge", "Test Description", "test_badge")
badge = api.create_badge("test_badge", "Test Badge", "Test Description")
self.assertEqual(badge, api.find_badge("test_badge"))
def testAward(self):
@@ -34,7 +34,7 @@ class APITest(unittest.TestCase):
self.assertTrue(self.awarded)
def testSingleSignal(self):
api.create_badge("Test Badge", "Test Desc", "test_badge")
api.create_badge("test_badge", "Test Badge", "Test Desc")
api.badge_awarded.connect(self._gotAward, sender=api.find_badge("test_badge"))
api.award(self.user, "test_badge", "reason")
self.assertTrue(self.awarded)