return _('Asked a question with %s views') % str(self.nviews)
def award_to(self, action):
- if action.question.extra_count == int(self.nviews):
- return action.question.author
+ if action.node.extra_count == int(self.nviews):
+ return action.node.author
class PopularQuestion(QuestionViewBadge):
nviews = settings.FAMOUS_QUESTION_VIEWS
-
-
class NodeScoreBadge(AbstractBadge):
abstract = True
listen_to = (VoteAction,)
- @property
- def description(self):
- return _('Answer voted up %s times') % str(self.expected_score)
-
def award_to(self, action):
if (action.node.node_type == self.node_type) and (action.node.score == int(self.expected_score)):
return action.node.author
-
+
class QuestionScoreBadge(NodeScoreBadge):
abstract = True
node_type = "question"
+ @property
+ def description(self):
+ return _('Question voted up %s times') % str(self.expected_score)
+
class NiceQuestion(QuestionScoreBadge):
expected_score = settings.NICE_QUESTION_VOTES_UP
name = _("Nice Question")
abstract = True
node_type = "answer"
+ @property
+ def description(self):
+ return _('Answer voted up %s times') % str(self.expected_score)
+
class NiceAnswer(AnswerScoreBadge):
expected_score = settings.NICE_ANSWER_VOTES_UP
name = _("Nice Answer")
name = _("Great Answer")
-
class FavoriteQuestionBadge(AbstractBadge):
abstract = True
listen_to = (FavoriteAction,)
expected_count = settings.FAVORITE_QUESTION_FAVS
class StellarQuestion(FavoriteQuestionBadge):
+ type = Badge.GOLD
name = _("Stellar Question")
expected_count = settings.STELLAR_QUESTION_FAVS
-
class Disciplined(AbstractBadge):
listen_to = (DeleteAction,)
name = _("Disciplined")
class FirstActionBadge(AbstractBadge):
award_once = True
abstract = True
-
+
def award_to(self, action):
if (self.listen_to[0].objects.filter(user=action.user).count() == 1):
return action.user
return user
-
class CivicDuty(AbstractBadge):
type = Badge.SILVER
award_once = True
description = _('Left %s comments') % settings.PUNDIT_COMMENT_COUNT
def award_to(self, action):
- if (action.user.nodes.filter(node_type="comment", deleted=None)) == int(settings.CIVIC_DUTY_VOTES):
+ if action.user.nodes.filter_state(deleted=False).filter(node_type="comment").count() == int(
+ settings.PUNDIT_COMMENT_COUNT):
return action.user
def award_to(self, action):
if (action.node.node_type == "answer") and (action.node.author == action.node.parent.author) and (
- action.node.score == int(settings.SELF_LEARNER_UP_VOTES)):
+ action.node.score == int(settings.SELF_LEARNER_UP_VOTES)):
return action.node.author
class StrunkAndWhite(AbstractBadge):
+ type = Badge.SILVER
award_once = True
listen_to = (ReviseAction,)
name = _("Strunk & White")
description = _('Asked first question with at least one up vote')
def award_to(self, action):
- if (action.node.node_type == "question") and (action.node.author.nodes.filter(node_type="question", deleted=None, score=1).count() == 1):
+ if (action.node.node_type == "question") and (action.node.author.nodes.filter_state(deleted=False).filter(
+ node_type="question", score=1).count() == 1):
return action.node.author
description = _('Answered first question with at least one up vote')
def award_to(self, action):
- if (action.node.node_type == "answer") and (action.node.author.nodes.filter(node_type="answer", deleted=None, score=1).count() == 1):
+ if (action.node.node_type == "answer") and (action.node.author.nodes.filter_state(deleted=False).filter(
+ node_type="answer", score=1).count() == 1):
return action.node.author
def award_to(self, action):
if (action.node.node_type == "answer") and (action.node.accepted) and (
- action.node.score >= int(settings.ENLIGHTENED_UP_VOTES)):
+ action.node.score >= int(settings.ENLIGHTENED_UP_VOTES)):
return action.node.author
def award_to(self, action):
if (action.node.node_type == "answer") and (action.node.accepted) and (
- action.node.score >= int(settings.ENLIGHTENED_UP_VOTES)):
+ action.node.score >= int(settings.GURU_UP_VOTES)):
return action.node.author
def award_to(self, action):
if (action.node.node_type == "answer") and (
- action.node.added_at >= (action.node.question.added_at + timedelta(days=int(settings.NECROMANCER_DIF_DAYS)))):
+ action.node.added_at >= (action.node.question.added_at + timedelta(days=int(settings.NECROMANCER_DIF_DAYS)))
+ ) and (int(action.node.score) == int(settings.NECROMANCER_UP_VOTES)):
return action.node.author
class Taxonomist(AbstractBadge):
def award_to(self, action):
return None
+class ValidatedEmail(AbstractBadge):
+ type = Badge.BRONZE
+ listen_to = (EmailValidationAction,)
+ name = _("Validated Email")
+ description = _("User who has validated email associated to the account")
+
+ def award_to(self, action):
+ return action.user
\ No newline at end of file