def coin_amount(amount, coin=None): if coin is None: coin = Coin.get('points') else: coin = Coin.get(coin) if coin is None: return '%f (not setup)' % amount return '<div class="coin-amount coin-%s" title="%s">%s</div>' % (coin.name, coin.name, amount)
def coin_amount(amount, coin=None): if coin is None: coin = Coin.get('points') else: coin = Coin.get(coin) if coin is None: return '%f (not setup)' % amount return '<div class="coin-amount coin-%s" title="%s">%s</div>' % ( coin.name, coin.name, amount)
def coin_amount(amount, coin=None): if coin is None: coin = Coin.get('points') else: coin = Coin.get(coin) if coin is None: return '(not setup)' if isinstance(amount, Player): amount = amount.coins.get(coin.name, 0) return '<div class="coin-amount coin-%s" title="%s">%s</div>' % (coin.name, coin.name, amount)
def coin_amount(amount, coin=None): if coin is None: coin = Coin.get('points') else: coin = Coin.get(coin) if coin is None: return '(not setup)' if isinstance(amount, Player): amount = amount.coins.get(coin.name, 0) return '<div class="coin-amount coin-%s" title="%s">%s</div>' % ( coin.name, coin.name, amount)
def score_simple(player, coin, amount, game=None, formula=None, external_id=None, percents=100): """ Give amount of coin to the player. """ if not isinstance(game, Game) and game is not None: game = game.get_instance() if not isinstance(player, Player): raise InvalidScoreCall() user = player.user coin = Coin.get(coin) formula = Formula.get(formula) computed_amount = 1.0 * amount * percents / 100 hs = History.objects.create(user=user, coin=coin, amount=computed_amount, game=game, formula=formula, external_id=external_id, percents=percents) # update user.points asap if coin.id == 'points': player.points += computed_amount player.save() update_points(player, game) logging.debug("Scored %s with %f %s" % (user, computed_amount, coin)) return hs
def score_simple(player, coin, amount, game=None, formula=None, external_id=None, percents=100 ): """ Give amount of coin to the player. """ if not isinstance(game, Game) and game is not None: game = game.get_instance() if not isinstance(player, Player): raise InvalidScoreCall() user = player.user player = user.get_profile() user = player.user coin = Coin.get(coin) formula = Formula.get(formula) computed_amount = 1.0 * amount * percents / 100 hs = History.add(user=user, coin=coin, amount=computed_amount, game=game, formula=formula, external_id=external_id, percents=percents) # update user.points asap if coin.name == 'points': if player.magic.has_modifier('top-disguise'): computed_amount = 1.0 * computed_amount * player.magic.modifier_percents('top-disguise') / 100 player.points += computed_amount player.save() update_points(player, game) logging.debug("Scored %s with %f %s" % (user, computed_amount, coin)) return hs
def penalise(cls, player, formula, external_id=None): coins = Coin.get('penalty') if not coins is None: score(user=player, game=None, formula=formula, external_id=external_id)
def score_simple(player, coin, amount, game=None, formula=None, external_id=None, percents=100): """ Give amount of coin to the player. """ if not isinstance(game, Game) and game is not None: game = game.get_instance() if not isinstance(player, Player): raise InvalidScoreCall() user = player.user player = user.get_profile() user = player.user coin = Coin.get(coin) formula = Formula.get(formula) computed_amount = 1.0 * amount * percents / 100 hs = History.add(user=user, coin=coin, amount=computed_amount, game=game, formula=formula, external_id=external_id, percents=percents) # update user.points asap if coin.name == 'points': if player.magic.has_modifier('top-disguise'): computed_amount = 1.0 * computed_amount * player.magic.modifier_percents('top-disguise') / 100 player.points += computed_amount player.save() update_points(player, game) logging.debug("Scored %s with %f %s" % (user, computed_amount, coin)) return hs
def setup(): """ Prepare database for Scoring """ for cc in CORE_POINTS: if not Coin.get(cc): Coin.add(cc, name=cc) # special case, gold is integer gold = Coin.get('gold') gold.integer = True gold.save() # iterate through games and register formulas for game in get_games(): for formula in game.get_formulas(): if not Formula.get(formula.id): Formula.add(formula) # add wouso formulas for formula in God.get_system_formulas(): if not Formula.get(formula.id): Formula.add(formula)
def sync_user(player): """ Synchronise user points with database """ coin = Coin.get('points') points = real_points(player) if player.points != points and not player.magic.has_modifier('top-disguise'): logging.debug('%s had %d instead of %d points' % (player, player.points, points)) player.points = points player.level_no = God.get_level_for_points(player.points) player.save()
def sync_user(player): """ Synchronise user points with database """ coin = Coin.get("points") result = History.objects.filter(user=player.user, coin=coin).aggregate(total=models.Sum("amount")) points = result["total"] if result["total"] is not None else 0 if player.points != points and not player.magic.has_modifier("top-disguise"): logging.debug("%s had %d instead of %d points" % (player, player.points, points)) player.points = points player.level_no = God.get_level_for_points(player.points) player.save()
def sync_user(player): """ Synchronise user points with database """ coin = Coin.get('points') result = History.objects.filter(user=player.user,coin=coin).aggregate(total=models.Sum('amount')) points = result['total'] if result['total'] is not None else 0 if player.points != points: logging.debug('%s had %d instead of %d points' % (player, player.points, points)) player.points = points player.level_no = God.get_level_for_points(player.points) player.save()
def sync_user(player): """ Synchronise user points with database """ coin = Coin.get('points') result = History.objects.filter( user=player.user, coin=coin).aggregate(total=models.Sum('amount')) points = result['total'] if result['total'] is not None else 0 if player.points != points: logging.debug('%s had %d instead of %d points' % (player, player.points, points)) player.points = points player.level_no = God.get_level_for_points(player.points) player.save()
def history_for(user, game, external_id=None, formula=None, coin=None): """ Return all history entries for given (user, game) pair. """ # TODO: check usage fltr = {} if external_id: fltr['external_id'] = external_id if formula: fltr['formula'] = Formula.get(formula) if coin: fltr['coin'] = Coin.get(coin) if not isinstance(game, Game): game = game.get_instance() if not isinstance(user, User): user = user.user try: return History.objects.filter(user=user, game=game, **fltr) except History.DoesNotExist: return None
def history_for(user, game, external_id=None, formula=None, coin=None): """ Return all history entries for given (user, game) pair. """ # TODO: check usage fltr = {} if external_id: fltr["external_id"] = external_id if formula: fltr["formula"] = Formula.get(formula) if coin: fltr["coin"] = Coin.get(coin) if not isinstance(game, Game): game = game.get_instance() if not isinstance(user, User): user = user.user try: return History.objects.filter(user=user, game=game, **fltr) except History.DoesNotExist: return None
def real_points(player): coin = Coin.get('points') result = History.objects.filter(user=player.user,coin=coin).aggregate(total=models.Sum('amount')) return result['total'] if result['total'] is not None else 0
def check_setup(): """ Check if the module has been setup """ if Coin.get('points') is None: return False return True
def check_setup(): """ Check if the module has been setup """ if Coin.get("points") is None: return False return True
def real_points(player): coin = Coin.get("points") result = History.objects.filter(user=player.user, coin=coin).aggregate(total=models.Sum("amount")) return result["total"] if result["total"] is not None else 0
def test_setup(self): for c in CORE_POINTS: self.assertFalse(Coin.get(c)) setup_scoring() for c in CORE_POINTS: self.assertTrue(Coin.get(c))
def penalise(cls, player, formula): coins = Coin.get('penalty') from wouso.core.scoring import score if not coins is None: score(user=player, game=None, formula=formula)
def real_points(player): coin = Coin.get('points') result = History.objects.filter( user=player.user, coin=coin).aggregate(total=models.Sum('amount')) return result['total'] if result['total'] is not None else 0