slug = "Recipe Submitted" levels = ["Bronze"] events = [ "recipe_submitted", ] multiple = False user_message = "Recipe Submited Award" def award(self, **state): user = get_object_or_404(User, username=state["user"].username) recipes = user.recipes_submitted.all() if len(recipes) == 1: return BadgeAwarded() badges.register(FirstRecipeBadge) class FirstRecipeVote(Badge): slug = "Recipe Vote" levels = ["Bronze"] events = [ "vote_submitted", ] multiple = False user_message = "Recipe Vote Award" def award(self, **state): user = get_object_or_404(User, username=state["user"].username) if user.get_profile().votePoints == 1: return BadgeAwarded()
"points_awarded", ] multiple = False def award(self, **state): user = state["user"] points = user.stats.points if points > 10000: return BadgeAwarded(3) elif points > 7500: return BadgeAwarded(2) elif points > 5000: return BadgeAwarded(1) badges.register(PointsBadge) class BaseTestCase(TestCase): def assert_num_queries(self, n, func): current_debug = settings.DEBUG settings.DEBUG = True current = len(connection.queries) func() self.assertEqual(current+n, len(connection.queries), connection.queries[current:]) settings.DEBUG = current_debug class BadgesTests(BaseTestCase): def test_award(self): u = User.objects.create_user("Lars Bak", "*****@*****.**", "x864lyfe") PlayerStat.objects.create(user=u)
"points_awarded", ] multiple = False def award(self, **state): user = state["user"] points = user.stats.points if points > 10000: return BadgeAwarded(3) elif points > 7500: return BadgeAwarded(2) elif points > 5000: return BadgeAwarded(1) badges.register(PointsBadge) class BaseTestCase(TestCase): def assert_num_queries(self, n, func): current_debug = settings.DEBUG settings.DEBUG = True current = len(connection.queries) func() self.assertEqual(current + n, len(connection.queries), connection.queries[current:]) settings.DEBUG = current_debug class BadgesTests(BaseTestCase): def test_award(self):
#class MemeMagnate(MetaBadge): # slug="meme_magnate" # levels = [ # BadgeDetail("Meme Magnate", "Slowly learning to be a magnate..."), # ] # requirements = [ # { 'likes' : 0, 'donor' : 0 } # ] # events = ['badge_awarded_'+s for s in set(s for s_l in requirements for s in s_l.keys())] #class FavouriteMagnate(MetaBadge): # slug='favourite' # levels = [ # BadgeDetail("Starter Magnate", "Good job, but it's kind of easy to earn this one..."), # BadgeDetail("Favourite Magnate", "Given after you win Meme Magnate and Favourite Magnate"), # ] # requirements = [ # { 'rater' : 0, 'donor' : 0 }, # { 'favourite' : 0, 'meme_magnate' : 0 }, # ] # events = ['badge_awarded_'+s for s in set(s for s_l in requirements for s in s_l.keys())] badges.register(LikesBadge) #badges.register(DonorBadge) badges.register(RaterBadge) badges.register(QuestionerBadge) #badges.register(MemeMagnate) #badges.register(FavouriteMagnate)
"Expert", ] events = [ "skill_awarded", ] multiple = False def award(self, **state): user = state["user"] level = state.pop("level", None) current_highest = user.profile.highest_level(self.slug).level if (level and level == current_highest + 1) or state.get('force', None): return BadgeAwarded(level=level + 1) badges.register(SkillBadge) class PointsBadge(Badge): slug = "points" levels = [ "Novice Magic Marker", "Magic Marker", "Expert Magic Marker", "Novice Marker Bee", "Marker Bee", "Expert Marker Bee", "Novice Marksman", "Marksman", "Expert Marksman", "Novice Mark up",
BadgeDetail("I can see dead zeroes", "Complete a run with time ending with .000", 50), BadgeDetail("Pi", "Complete a run with exactly 3.142 seconds", 50), ] events = [ 'run_finished', ] multiple = False def award(self, **state): run = state['run'] time = run.time after_dec_point = time % 1 # 7.148 -> 0.148 if after_dec_point == Decimal('0.999'): return BadgeAwarded(level=1) if after_dec_point == Decimal('0.777'): return BadgeAwarded(level=2) if after_dec_point == Decimal('0.666'): return BadgeAwarded(level=3) if after_dec_point == Decimal('0.000'): return BadgeAwarded(level=4) if time == Decimal('3.142'): return BadgeAwarded(level=5) badges.register(RunCountBadge) badges.register(RuntimeBadge) badges.register(RunScoreBadge) badges.register(GlobetrotterBadge) badges.register(HailToTheKingBadge)
class NewbieBadge(Badge): slug = "newbie" levels = [ {"name":"Newbie", "description":"Signed Up"}, ] events = [ "registered", ] multiple = False def award(self, **state): user = state["user"] return BadgeAwarded(level=1) badges.register(NewbieBadge) class VeteranBadge(Badge): slug = "veteran" levels = [ {"name":"Veteran", "description":"Signed Up in V1 of Maptales"}, ] events = [ "existing_account", ] multiple = False def award(self, **state):
from brabeion import badges from brabeion.base import Badge as BadgeBase, BadgeAwarded from lib.brabeion_utils import BadgeDetail class MinionBadge(BadgeBase): slug = 'minion' levels = [ BadgeDetail("Teerace Minion", "Teerace staff member", 200), ] events = [ 'logged_in', ] multiple = False def award(self, **state): user = state['user'] if user.is_staff or user.is_superuser: return BadgeAwarded(level=1) badges.register(MinionBadge)
] events = ["user_rated_something"] multiple = False def award(self, **state): user = state["user"] ratings = total_ratings_by_user(user) if ratings >= 2: return BadgeAwarded(2) elif ratings >= 1: return BadgeAwarded(1) assert badges._registry == {} badges.register(TestLikesBadge_0) assert (len(badges._registry) == 1) assert isinstance(badges._registry[TestLikesBadge_0.slug], TestLikesBadge_0) badges.register(DonatedSomethingTestBadge) assert (len(badges._registry) == 2) assert isinstance(badges._registry[TestLikesBadge_0.slug], TestLikesBadge_0) assert isinstance(badges._registry[DonatedSomethingTestBadge.slug], DonatedSomethingTestBadge) badges.register(FearlessRaterBadge) assert (len(badges._registry) == 3) assert isinstance(badges._registry[TestLikesBadge_0.slug], TestLikesBadge_0) assert isinstance(badges._registry[DonatedSomethingTestBadge.slug],
from brabeion import badges from brabeion.base import Badge as BadgeBase, BadgeAwarded from lib.brabeion_utils import BadgeDetail from annoying.functions import get_config class LabRatBadge(BadgeBase): slug = 'labrat' levels = [ BadgeDetail("Lab Rat", "Participate in Teerace closed beta", 200), ] events = [ 'logged_in', ] multiple = False def award(self, **state): if get_config('BETA', False): return BadgeAwarded(level=1) badges.register(LabRatBadge)
def create_action_badge(action): slug = '%s-action-badge' % action.slug attributes = {'slug': slug, 'action': action, 'events': [event_name(action)]} action_badge = type(str(slug), (ActionBadge,), attributes) badge_cache.register(action_badge)
def update_action_badge(sender, instance, created, **kwargs): if created: create_action_badge(instance) models.signals.post_save.connect(update_action_badge, sender=Action) class TrendsetterBadge(Badge): events = ['took_the_pledge'] multiple = False levels = [''] slug = 'trendsetter-badge' name = 'Trendsetter' description = 'Took the Trendsetter Pledge' def award(self, **state): return BadgeAwarded() badge_cache.register(TrendsetterBadge) class FoundingFatherBadge(Badge): events = ['created_a_community'] multiple = False levels = [''] slug = 'founding-father-badge' name = 'Founding Father' description = 'Started a community' def award(self, **state): return BadgeAwarded() badge_cache.register(FoundingFatherBadge) class HostingHeroBadge(Badge): events = ['created_an_event']
slug = "Recipe Submitted" levels = [ "Bronze" ] events = [ "recipe_submitted", ] multiple = False user_message ="Recipe Submited Award" def award(self, **state): user=get_object_or_404(User,username=state["user"].username) recipes = user.recipes_submitted.all() if len(recipes) == 1: return BadgeAwarded() badges.register(FirstRecipeBadge) class FirstRecipeVote(Badge): slug = "Recipe Vote" levels = [ "Bronze" ] events = [ "vote_submitted", ] multiple = False user_message ="Recipe Vote Award" def award(self, **state): user=get_object_or_404(User,username=state["user"].username) if user.get_profile().votePoints == 1: return BadgeAwarded()