def award(cls, user, action, once=False): if once: node = None awarded = AwardAction.get_for(user, cls.ondb) else: node = action.node awarded = AwardAction.get_for(user, cls.ondb, node) trigger = isinstance(action, Action) and action or None if not awarded: AwardAction(user=user, node=node, ip=action.ip).save(data=dict(badge=cls.ondb, trigger=trigger))
def award(cls, user, action, once=False): try: if once: node = None awarded = AwardAction.get_for(user, cls.ondb) else: node = action.node awarded = AwardAction.get_for(user, cls.ondb, node) trigger = isinstance(action, Action) and action or None if not awarded: AwardAction(user=user, node=node).save(data=dict(badge=cls.ondb, trigger=trigger)) except MultipleObjectsReturned: if node: logging.error('Found multiple %s badges awarded for user %s (%s)' % (self.name, user.username, user.id)) else: logging.error('Found multiple %s badges awarded for user %s (%s) and node %s' % (self.name, user.username, user.id, node.id))