Beispiel #1
0
    def comprar_card(usuario_id, atleta_json):

        try:

            if not atleta_json:
                raise AtletaNotFoundError()

            session = meta.get_session()
            session.begin()

            usuario = Usuario().get(usuario_id)

            # valida o patrimonio
            valor = float(atleta_json["valor"])
            if usuario.patrimonio < valor or usuario.patrimonio - valor < 0:
                logging.debug("usuario.patrimonio < float(valor): %s < %s" % (usuario.patrimonio, valor))
                raise SaldoInsuficienteError()

            # seta as informacoes
            card = Card()
            card.usuario_id = usuario.id
            card.atleta_id = atleta_json["atleta_id"]
            card.valor = valor

            # cria o card.
            session.add(card)

            # atualiza o patrimonio
            usuario.patrimonio = usuario.patrimonio - card.valor
            session.add(usuario)

            # faz commit
            session.commit()

            return card

        except IntegrityError, e:
            session.rollback()
            logging.error("card já comprado %s " % e)
            raise CardJaCompradoError()
Beispiel #2
0
    def descartar_card(usuario_id, atleta_id):
        from supercraques.model.desafio import Desafio

        try:

            session = meta.get_session()
            session.begin()

            # recupera o usuario
            usuario = Usuario().get(usuario_id)

            card_delete = None
            cards = Card().get_cards(usuario.id)
            for card in cards:
                if atleta_id == card.atleta_id:
                    card_delete = card
                    break

            if card_delete:
                if Desafio().existe_desafio(usuario.id, card.id):
                    raise SuperCraquesError("Existe um desafio para esse card")
                else:
                    # deleta o card.
                    session.delete(card)
            else:
                raise SuperCraquesError()

            # atualiza o patrimonio
            usuario.patrimonio = usuario.patrimonio + card.valor
            session.add(usuario)

            # faz commit
            session.commit()

        except SuperCraquesError, e:
            session.rollback()
            raise e