示例#1
0
 def logged_fn(self, *args, **kw):
     usuario = None
     if settings.OFFLINE == True:
         if meta.USUARIO_OFFLINE:
             usuario = meta.USUARIO_OFFLINE
         else:
             # recupera da url o uid
             uid = kw["uid"]
             logging.debug("uid: %s" % uid)
             usuario = Usuario().get(uid)
             meta.USUARIO_OFFLINE = usuario
             
     else:
         user_cookie = get_user_from_cookie(kw.get('request_handler').cookies, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET)
         if user_cookie:
             logging.debug("user_cookie: %s" % user_cookie)
             usuario = Usuario().get(user_cookie["uid"])
             logging.debug("usuario: %s" % usuario.as_dict())
             if not usuario:
                 return kw.get('request_handler').redirect("/login")
             else:
                 usuario.access_token = user_cookie["access_token"]
         else:
             return kw.get('request_handler').redirect("/login")
     
     return fn(self, usuario=usuario, *args, **kw)
示例#2
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()
示例#3
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