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)
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()
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