Add some badges for 3, 5, and 10 invites

This commit is contained in:
Trever Fischer
2012-06-08 13:28:42 -04:00
parent d730e28737
commit 517342a515
4 changed files with 59 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
import badges.api
def update_badges(user):
inviteCount = len(user.invites.filter(claimer__isnull=False))
if inviteCount >= 3:
badges.api.award(user, "three_invites")
if inviteCount >= 5:
badges.api.award(user, "five_invites")
if inviteCount >= 10:
badges.api.award(user, "ten_invites")

View File

@@ -1,7 +1,20 @@
from django.db.models.signals import post_syncdb
from notification import models as notification
import badges.api
import badges.models
from local import update_badges
from django.contrib.auth.models import User
def create_notice_types(app, created_models, verbosity, **kwargs):
notification.create_notice_type("invite_accepted", "Invite Accepted", "An invitation you sent has been accepted.")
post_syncdb.connect(create_notice_types, sender=notification)
def create_invite_badges(app, created_models, verbosity, **kwargs):
badges.api.create_badge("three_invites", "Three Invites", "You invited three people")
badges.api.create_badge("five_invites", "Five Invites", "You invited five people")
badges.api.create_badge("ten_invites", "Ten Invites", "You invited ten people")
for u in User.objects.all():
update_badges(u)
post_syncdb.connect(create_invite_badges, sender=badges.models)

View File

@@ -3,6 +3,8 @@ from django.contrib.auth.models import User
import shortuuid
from minecraft.models import MinecraftProfile
from django.db.models.signals import post_save
import badges.api
from local import update_badges
class CurrencyAccount(models.Model):
profile = models.OneToOneField(MinecraftProfile)
@@ -50,3 +52,9 @@ def create_account(sender, instance, created, **kwargs):
CurrencyAccount.objects.create(profile=instance)
post_save.connect(create_account, sender=MinecraftProfile)
def update_invite_badges(sender, instance, created, **kwargs):
user = instance.creator
update_badges(user)
post_save.connect(update_invite_badges, sender=Invite)

View File

@@ -3,6 +3,7 @@ from django.contrib.auth.models import User
from django.test.client import Client
from django.core.urlresolvers import reverse
from django.core import mail
import badges.api
import models
class InviteUseTest(TestCase):
@@ -75,3 +76,30 @@ class AccountCreationTest(TestCase):
user = User.objects.create_user('ValidUser', 'test@example.com')
self.assertIsNotNone(user.minecraftprofile.currencyaccount)
user.delete()
class InviteBadgeTest(TestCase):
def setUp(self):
self.inviter = User.objects.create_user('Inviter', 'test@example.com')
self.users = []
def tearDown(self):
self.inviter.delete()
for u in self.users:
u.delete()
def testThree(self):
self.assertFalse(badges.api.user_has_badge(self.inviter, "three_invites"))
for i in range(0, 3):
u = User.objects.create_user(i, 'test@example.com')
self.users.append(u)
models.Invite.objects.create(creator=self.inviter, claimer=u)
self.assertTrue(badges.api.user_has_badge(self.inviter, "three_invites"))
def testMultipleThree(self):
self.assertFalse(badges.api.user_has_badge(self.inviter, "three_invites"))
for i in range(0, 3):
u = User.objects.create_user(i, 'test@example.com')
self.users.append(u)
models.Invite.objects.create(creator=self.inviter, claimer=u)
self.assertTrue(badges.api.user_has_badge(self.inviter, "three_invites"))
self.assertEqual(1, len(self.inviter.awards.filter(badge__pk=badges.api.find_badge("three_invites").pk)))