Files
caminus/badges/api.py
2012-06-08 13:09:34 -04:00

31 lines
1.0 KiB
Python

import models
import django.dispatch
badge_awarded = django.dispatch.Signal(providing_args=["award"])
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(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)
return len(awards) >= awardCount