Add some badges for 3, 5, and 10 invites
This commit is contained in:
@@ -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")
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)))
|
||||
|
Reference in New Issue
Block a user