Pass badge tests

This commit is contained in:
Trever Fischer
2012-06-08 11:27:11 -04:00
parent 898c020e9c
commit 692a1633af
2 changed files with 24 additions and 4 deletions

View File

@@ -1,7 +1,25 @@
import models
import django.dispatch
badge_awarded = django.dispatch.Signal(providing_args=["user", "badge"])
badge_awarded = django.dispatch.Signal(providing_args=["award"])
def award(user, badge, reason=""):
models.Award.objects.create(badge=badge, user=user, reason=reason)
def award(user, badgeName, reason=""):
badge = find_badge(badgeName)
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 user_has_badge(user, badgeName, awardCount=1):
awards = models.Award.objects.filter(badge=find_badge(badgeName), user=user)
return len(awards) >= awardCount

View File

@@ -3,6 +3,8 @@ from django.contrib.auth.models import User
import api
from notification import models as notification
from django.dispatch import dispatcher
def unique_slug(item,slug_source,slug_field):
"""Ensures a unique slug field by appending an integer counter to duplicate slugs.
@@ -52,7 +54,7 @@ class Award(models.Model):
def save(self, *args, **kwargs):
super(Award, self).save(*args, **kwargs)
api.badge_awarded.send_robust(sender=self, user=self.user, badge=self.badge)
api.badge_awarded.send_robust(sender=self.badge, award=self)
notification.send([self.user], "badge_awarded", {"award": self})
def __unicode__(self):