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