def cargarTiempos(tipo, request): timeInit = time.time() my_lock = redis.Redis().lock("Cargar") try: have_lock = my_lock.acquire(blocking=False) if have_lock: if (not (Settings.objects.get(setting='shapeAutoStatus').value == '1' and Settings.objects.get( setting='shapeCaminandoStatus').value == '1') or not utils.nothingLoading()): return [["Faltan cargar matrices o se estan cargando"]] status = Settings.objects.get( setting='statusMatrizIndividuoTiempoCentro') status.value = -1 status.save() #res, lineas = checkTiempos(tipo,request) #if not res: # return lineas if (tipo == 0): tipoId = "Caminando" else: tipoId = "Auto" csvfile = request.FILES['inputFile'] baseDirectory = settings.BASE_DIR + "/app/data/RawCsv/" utils.createFolder(baseDirectory) newCsv = open(baseDirectory + "tiempos" + tipoId + ".csv", 'wb') for chunk in csvfile.chunks(): newCsv.write(chunk) newCsv.close() #lineas=[] #lineas.extend(l) #lineas = lineas[1:] status = Settings.objects.get(setting='statusMatriz' + tipoId) status.value = 0 status.save() progressDone = Settings.objects.get(setting='currentMatriz' + tipoId) progressDone.value = 0.1 progressDone.save() asyncTask = saveTiemposToDB.apply_async(args=[tipo], queue='delegate') asyncKey = asyncTask.id utils.getOrCreateSettigs('asyncKey' + tipoId, asyncKey) else: print("Did not acquire lock.") return [["Faltan cargar matrices o se estan cargando"]] except Exception as e: if (tipo == 0): tipoId = "Caminando" else: tipoId = "Auto" status = Settings.objects.get(setting='statusMatriz' + tipoId) status.value = -1 status.save() return [["Faltan cargar matrices o se estan cargando"]] finally: print("Se preparo el cargado la Matriz en " + str(time.time() - timeInit) + "s") if have_lock: my_lock.release()
def loadShapes(request, tipo): timeInit = time.time() my_lock = redis.Redis().lock("Cargar") try: have_lock = my_lock.acquire(blocking=False) if have_lock: if (not utils.nothingLoading()): return [["Faltan cargar matrices o se estan cargando"]] if (tipo == 0): tipoNombre = "shapeCaminando" utils.getOrCreateSettigs('shapeCaminandoStatus', 0) if (tipo == 1): utils.getOrCreateSettigs('shapeAutoStatus', 0) tipoNombre = "shapeAuto" if (tipo == 2): utils.getOrCreateSettigs('shapeBusStatus', 0) tipoNombre = "shapeBus" status = Settings.objects.get( setting='statusMatrizIndividuoTiempoCentro') status.value = -1 status.save() status = Settings.objects.get(setting='statusMatrizCentro') status.value = -1 status.save() status = Settings.objects.get(setting='statusMatrizIndividuo') status.value = -1 status.save() content = request.FILES['inputFile'] unzipped = zipfile.ZipFile(content) baseDirectory = settings.BASE_DIR + "/app/data/shapes/" utils.createFolder(baseDirectory) for libitem in unzipped.namelist(): filename = libitem.split('.') file = open(baseDirectory + tipoNombre + "." + filename[1], 'wb') file.write(unzipped.read(libitem)) file.close() asyncTask = cargarSectores.apply_async(args=[tipo], queue='delegate') asyncTask.get() else: return [["Error 500"]] except: if (tipo == 0): tipoNombre = "shapeCaminando" utils.getOrCreateSettigs('shapeCaminandoStatus', -1) if (tipo == 1): utils.getOrCreateSettigs('shapeAutoStatus', -1) tipoNombre = "shapeAuto" if (tipo == 2): utils.getOrCreateSettigs('shapeBusStatus', -1) return [["Error 500"]] finally: print("Shapes cargados en " + str(time.time() - timeInit)) if have_lock: my_lock.release()
def cargarIndividuoAnclas(requestf): timeInit = time.time() my_lock = redis.Redis().lock("Cargar") try: have_lock = my_lock.acquire(blocking=False) if have_lock: if (not (Settings.objects.get(setting='statusTipoTransporte').value == '1' and Settings.objects.get( setting='statusMatrizAuto').value == '1' and Settings.objects.get(setting='statusMatrizBus').value == '1' and Settings.objects.get( setting='statusMatrizCaminando').value == '1') or not utils.nothingLoading()): return [["Faltan cargar matrices o se estan cargando"]] status = Settings.objects.get( setting='statusMatrizIndividuoTiempoCentro') status.value = -1 status.save() prestadores = [x.id for x in Prestador.objects.all()] tipos_transporte = [x.nombre for x in TipoTransporte.objects.all()] dicc_transporte = { x.nombre: x for x in TipoTransporte.objects.all() } res, lineas = checkIndividuoAnclas(requestf, prestadores, tipos_transporte) if not res: return lineas status = Settings.objects.get(setting='statusMatrizIndividuo') status.value = 0 status.save() progressDone = Settings.objects.get( setting='currentMatrizIndividuo') progressTotal = Settings.objects.get( setting='totalMatrizIndividuo') progressDone.value = 0.1 progressTotal.value = len(lineas) progressDone.save() progressTotal.save() asyncTask = saveIndividuosToDB.apply_async(args=[lineas], queue='delegate') asyncKey = asyncTask.id utils.getOrCreateSettigs('asyncKeyIndividuo', asyncKey) else: print("Did not acquire lock.") return [["Faltan cargar matrices o se estan cargando"]] except: utils.getOrCreateSettigs("statusMatrizIndividuo", -1) return [["Faltan cargar matrices o se estan cargando"]] finally: print("Se preparo el cargado de individuos " + str(time.time() - timeInit) + "s") if have_lock: my_lock.release()
def cargarMutualistas(request): timeInit = time.time() my_lock = redis.Redis().lock("Cargar") try: have_lock = my_lock.acquire(blocking=False) if have_lock: if (not utils.nothingLoading()): return [["Faltan cargar matrices o se estan cargando"]] utils.getOrCreateSettigs("statusPrestador", 0) status = Settings.objects.get( setting='statusMatrizIndividuoTiempoCentro') status.value = -1 status.save() status = Settings.objects.get(setting='statusMatrizCentro') status.value = -1 status.save() cursor = connection.cursor() cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( IndividuoTiempoCentro._meta.db_table)) cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( IndividuoCentro._meta.db_table)) cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( Centro._meta.db_table)) res, lineas = checkMutualistas(request) if not res: return lineas Prestador.objects.all().delete() prestadores = list() for linea in lineas: p = Prestador(int(linea[0]), linea[1]) prestadores.append(p) Prestador.objects.bulk_create(prestadores) utils.getOrCreateSettigs("statusPrestador", 1) print("Se cargo correctamente el archivo") else: return [["Faltan cargar matrices o se estan cargando"]] print("Did not acquire lock.") except: utils.getOrCreateSettigs("statusPrestador", -1) return [["Faltan cargar matrices o se estan cargando"]] finally: print("Se cargaron los prestadores en " + str(time.time() - timeInit) + "s") if have_lock: my_lock.release()
def cargarTiposTransporte(request): timeInit = time.time() my_lock = redis.Redis().lock("Cargar") try: have_lock = my_lock.acquire(blocking=False) if have_lock: if (not utils.nothingLoading()): return [["Faltan cargar matrices o se estan cargando"]] utils.getOrCreateSettigs("statusTipoTransporte", 0) cursor = connection.cursor() cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( IndividuoTiempoCentro._meta.db_table)) cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( IndividuoCentro._meta.db_table)) cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( AnclaTemporal._meta.db_table)) cursor.execute('TRUNCATE TABLE "{0}" CASCADE'.format( Individuo._meta.db_table)) status = Settings.objects.get(setting='statusMatrizIndividuo') status.value = -1 status.save() res, lineas = checkTiposTransporte(request) if not res: return lineas TipoTransporte.objects.all().delete() tipos = list() for linea in lineas: t = TipoTransporte(int(linea[0]), linea[1]) tipos.append(t) TipoTransporte.objects.bulk_create(tipos) print("Se cargo correctamente el archivo") utils.getOrCreateSettigs("statusTipoTransporte", 1) else: print("Did not acquire lock.") return [["Faltan cargar matrices o se estan cargando"]] except: utils.getOrCreateSettigs("statusTipoTransporte", -1) return [["Faltan cargar matrices o se estan cargando"]] finally: print("Se cargo tipos de transporte en " + str(time.time() - timeInit) + "s") if have_lock: my_lock.release()