Reorder badges.api.create_badge
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user