Pass badge tests
This commit is contained in:
@@ -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
|
||||
|
@@ -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):
|
||||
|
Reference in New Issue
Block a user