示例#1
0
def seteventosnovos():
    usecase = create_usecases()
    try:
        file = request.files.get('file')
        eventos = usecase.load_arquivo_eventos(file)
        for tipoevento, eventos in eventos.items():
            aclass = getattr(orm, tipoevento)
            for evento in eventos:
                try:
                    usecase.insert_evento(aclass, evento, commit=False)
                # Ignora exceções porque vai comparar no Banco de Dados
                except Exception as err:
                    logging.error(str(err))
            try:
                usecase.db_session.commit()
            except Exception as err:
                logging.error(str(err))
            result = []
            for evento in eventos:
                try:
                    IDEvento = evento.get('IDEvento')
                    evento_recuperado = usecase.load_evento(aclass, IDEvento)
                    ohash = hash(evento_recuperado)
                    result.append({'IDEvento': IDEvento, 'hash': ohash})
                    logger.info('Recinto: %s IDEvento: %d ID: %d hash: %d' %
                                (evento_recuperado.recinto, IDEvento,
                                 evento_recuperado.ID, ohash))
                except Exception as err:
                    result.append({'IDEvento': IDEvento, 'hash': str(err)})
                    logger.error('Evento ID:  %d erro: %s' %
                                 (IDEvento, str(err)))
    except Exception as err:
        logging.error(err, exc_info=True)
        return str(err), 405
    return jsonify(result), 201
示例#2
0
def add_evento(aclass, evento):
    usecase = create_usecases()
    try:
        novo_evento = usecase.insert_evento(aclass, evento)
        logger.info('Recinto: %s Classe: %s IDEvento: %d ID: %d Token: %d' %
                    (novo_evento.recinto, novo_evento.__class__.__name__,
                     novo_evento.IDEvento, novo_evento.ID, novo_evento.hash))
    except IntegrityError as err:
        usecase.db_session.rollback()
        logging.error(err, exc_info=True)
        return _response('Evento repetido ou campo invalido: %s' % err, 409)
    except Exception as err:
        usecase.db_session.rollback()
        logging.error(err, exc_info=True)
        return _response('Erro inesperado: %s ' % err, 400)
    return _response(novo_evento.hash, 201)
示例#3
0
def _commit(evento):
    db_session = current_app.config['db_session']
    try:
        evento.request_IP = request.environ.get('HTTP_X_REAL_IP',
                                                request.remote_addr)
        evento.recinto = get_recinto()
        # evento.time_created = datetime.datetime.utcnow()
        db_session.flush()
        db_session.refresh(evento)
        ohash = hash(evento)
        db_session.commit()
        logger.info('Recinto: %s Classe: %s IDEvento: %d ID: %d hash: %d' %
                    (evento.recinto, evento.__class__.__name__,
                     evento.IDEvento, evento.ID, ohash))
    except IntegrityError as err:
        db_session.rollback()
        logging.error(err, exc_info=True)
        return _response('Evento repetido ou campo invalido: %s' % err, 409)
    except Exception as err:
        db_session.rollback()
        logging.error(err, exc_info=True)
        return _response('Erro inesperado: %s ' % err, 400)
    return _response(ohash, 201)