import json from django.http import HttpResponse from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt from Tierra_2.core.connect import Connector from Tierra_2.pro03 import servicios from django.conf import settings from monitorT.task import Task class CustomTask(Task): CONTROL = True def cancel(self): pass def pause(self): pass @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def test_db(task, request=None): if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] r = Connector().test(conn) task.set_progress(100) return HttpResponse(r) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def suavizar(task, request=None): respuesta = "Error genérico" origen = None destino = None iteraciones = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" origen = data["origen"] destino = data["destino"] iteraciones = data["iteraciones"] if origen is None or destino is None or iteraciones is None: respuesta = {"metodo": "suavizar", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.suavizar(conn, esquema, origen, esquema_dest, destino, iteraciones, task) except Exception as e: respuesta = { "metodo": "suavizar", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def simplificar(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None tolerancia = None ignorar_topo = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] ignorar_topo = data["ignorar_topo"] if "ignorar_topo" in data else None check_interferencias = data["check_interferencias"] if "check_interferencias" in data else None if ignorar_topo is None: ignorar_topo = True elif str(ignorar_topo).capitalize() == "True": ignorar_topo = True else: ignorar_topo = False if origen is None or destino is None: raise Exception("No se han definido los parámetros necesarios") else: respuesta = servicios.simplificar(conn, esquema, origen, esquema_dest, destino, tolerancia, ignorar_topo, check_interferencias, task) except Exception as e: respuesta = "simplificar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def simplificar_topo(task, request=None): respuesta = "Error genérico" origen = None destino = None tolerancia = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] check_interferencias = data["check_interferencias"] if "check_interferencias" in data else None if origen is None or destino is None: raise Exception("No se han definido los parámetros necesarios") else: respuesta = servicios.simplificar_topo(conn, None, esquema, origen, esquema_dest, destino, tolerancia, check_interferencias, task) except Exception as e: respuesta = { "metodo": "simplificar_topo", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def simplificar_geo(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None tolerancia = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] check_interferencias = data["check_interferencias"] if "check_interferencias" in data else None if origen is None or destino is None: raise Exception("No se han definido los parámetros necesarios") else: respuesta = servicios.simplificar_geo(conn, None, esquema, origen, esquema_dest, destino, tolerancia, check_interferencias, task) except Exception as e: respuesta = { "metodo": "simplificar_geo", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def disolver(task, request=None): respuesta = "Error genérico" origen = None destino = None campos_comunes = None campos_sum = None campos_avg = None campos_min = None campos_max = None forzar_geom_simple = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] campos_comunes = data["campos_comunes"] campos_sum = data["campos_sum"] campos_avg = data["campos_avg"] campos_min = data["campos_min"] campos_max = data["campos_max"] forzar_geom_simple = data["forzar_geom_simple"] if forzar_geom_simple is None: forzar_geom_simple = False elif str(forzar_geom_simple).capitalize() == "True": forzar_geom_simple = True else: forzar_geom_simple = False if origen is None or destino is None or campos_comunes is None: respuesta = {"metodo": "disolver", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.disolver(conn, esquema, origen, esquema_dest, destino, campos_comunes, campos_sum, campos_avg, campos_min, campos_max, forzar_geom_simple, task) except Exception as e: respuesta = { "metodo": "disolver", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def limpiar_tolerancia(task, request=None): respuesta = "Error genérico" origen = None destino = None tolerancia = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] if origen is None or destino is None or tolerancia is None: respuesta = {"metodo": "limpiar_tolerancia", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.limpiar_tolerancia(conn, esquema, origen, esquema_dest, destino, tolerancia, task) except Exception as e: respuesta = { "metodo": "limpiar_tolerancia", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def limpiar(task, request=None): respuesta = "Error genérico" origen = None destino = None tolerancia = None filtro = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] filtro = data["filtro"] if origen is not None and destino is not None and (tolerancia is not None or filtro is not None): respuesta = servicios.limpiar_param(conn, esquema, origen, esquema_dest, destino, tolerancia, filtro, task) else: respuesta = {"metodo": "limpiar", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} except Exception as e: respuesta = { "metodo": "limpiar", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def check(task, request=None): respuesta = "Error genérico" try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" origen = data["origen"] destinos = data["destinos"] if "destinos" in data else data["origen"] # Si no hay destinos se hace contra la propia capa buffer = data["buffer"] if "buffer" in data and len(data["buffer"]) > 0 else 0 filtro = data["filtro"] if "filtro" in data else None de9im = data["de9im"] if "de9im" in data else 'T********' if origen is not None: respuesta = servicios.check(conn, esquema, origen, esquema_dest, destinos, None, None, None, buffer, filtro, de9im, task) else: respuesta = {"metodo": "check_interferencias", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} except Exception as e: respuesta = { "metodo": "check_interferencias", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def cambiar_estado(task, request=None): respuesta = "Error genérico" capa_itf = None id_itf = None estado_itf = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) capa_itf = data["capa_itf"] id_itf = data["id_itf"] estado_itf = data["estado_itf"] conn = data["connOrigen"] if capa_itf is not None and estado_itf is not None: respuesta = servicios.cambiar_estado(conn, capa_itf, id_itf, estado_itf, task) else: respuesta = {"metodo": "cambiar_estado", "resultado": "ERROR", "mensajes": ["No se ha modificado el estado"]} except Exception as e: respuesta = { "metodo": "cambiar_estado", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def disolver_geo(task, request=None): respuesta = "Error genérico" esquema = None origen = None destino = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] origen = data["origen"] destino = data["destino"] esquema = data["esquema"] if "esquema" in data else "public" esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" buffer = data["buffer"] if "buffer" in data and len(data["buffer"]) > 0 else 0 if origen is None or destino is None: respuesta = {"metodo": "disolver_geo", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.disolver_geo(conn, esquema, esquema_dest, origen, destino, buffer, task) except Exception as e: respuesta = { "metodo": "disolver_geo", "resultado": "ERROR", "mensajes": [e] } finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def exagerar(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] escala = data["escala"] where = data["where"] if origen is None or destino is None: respuesta = {"metodo": "exagerar", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.exagerar(conn, esquema, origen, esquema_dest, destino, escala, where, task) except Exception as e: respuesta = "exagerar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def desplazar(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] desplazamientoX = data["desplazamientoX"] desplazamientoY = data["desplazamientoY"] where = data["where"] if origen is None or destino is None: respuesta = {"metodo": "desplazar", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.desplazar(conn, esquema, origen, esquema_dest, destino, desplazamientoX, desplazamientoY, where, task) except Exception as e: respuesta = "desplazar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def agregar(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None dist = None minp = None conn = None ajuste = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] dist = data["dist"] if "dist" in data else 0 minp = data["minp"] if "nump" in data else 3 ajuste = data["ajuste"] if "ajuste" in data else 1 if ajuste > 1 or ajuste < 0: respuesta = {"metodo": "agregar", "resultado": "ERROR", "mensajes": ["El ajuste debe ser un valor entre 0 y 1"]} if origen is None or destino is None: respuesta = {"metodo": "agregar", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: if ajuste < 0.7: print("Es posible que el tiempo de cálculo sea alto. Utilice valores de ajuste entre 0.7 y 1.0") respuesta = servicios.agregar(conn, esquema, origen, esquema_dest, destino, dist, minp, ajuste, task) except Exception as e: respuesta = "desplazar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def generar_poligonos(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None borrar_capas = None conn = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] if "tolerancia" in data else None filtro = data["filtro"] if "filtro_area" in data else "" borrar_capas = data["borrar_capas_intermedias"] if "borrar_capas_intermedias" in data else None if tolerancia is not None and type(tolerancia) is not str: tolerancia = str(tolerancia) if origen is None or destino is None: respuesta = {"metodo": "generar_poligonos", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.generar_poligonos(conn, esquema, origen, esquema_dest, destino, tolerancia, filtro, borrar_capas, task) except Exception as e: respuesta = "desplazar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def generar_edificaciones(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None borrar_capas = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] tolerancia = data["tolerancia"] if "tolerancia" in data else None filtro = data["filtro"] if "filtro" in data else "" borrar_capas = data["borrar_capas_intermedias"] if "borrar_capas_intermedias" in data else None if tolerancia is not None and type(tolerancia) is not str: tolerancia = str(tolerancia) if origen is None or destino is None: respuesta = {"metodo": "generar_edificaciones", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.generar_edificaciones(conn, esquema, origen, esquema_dest, destino, tolerancia, filtro, borrar_capas, task) except Exception as e: respuesta = "desplazar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def generar_ejesferrocarril(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None borrar_capas = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] dist = data["distancia"] if "distancia" in data else 0 buffer = data["buffer"] if "buffer" in data else 0 borrar_capas = data["borrar_capas_intermedias"] if "borrar_capas_intermedias" in data else None if origen is None or destino is None: respuesta = {"metodo": "generar_ejesferrocarril", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.generar_ejesferrocarril(conn, esquema, origen, esquema_dest, destino, buffer, dist, borrar_capas, task) except Exception as e: respuesta = "generar ejes ferrrocarril:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def generar_ptorelieve(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None borrar_capas = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] elev = data["campo_elevacion"] dist = data["distancia_cluster"] if "distancia_cluster" in data else None borrar_capas = data["borrar_capas_intermedias"] if "borrar_capas_intermedias" in data else None if origen is None or destino is None or elev is None: respuesta = {"metodo": "generar_ptorelieve", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.generar_ptorelieve(conn, esquema, origen, esquema_dest, destino, elev, dist, borrar_capas, task) except Exception as e: respuesta = "desplazar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def generar_polhidro(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None borrar_capas = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino = data["destino"] filtro = data["filtro_area"] if "filtro_area" in data else "" borrar_capas = data["borrar_capas_intermedias"] if "borrar_capas_intermedias" in data else None if origen is None or destino is None: respuesta = {"metodo": "generar_polhidro", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.generar_polhidro(conn, esquema, origen, esquema_dest, destino, filtro, borrar_capas, task) except Exception as e: respuesta = "desplazar:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False) @csrf_exempt @settings.MASTER_TASK_LIST.as_decorator @CustomTask.as_decorator def simplificar_suavizar(task, request=None): respuesta = "Error genérico" esquema = None origen = None esquema_dest = None destino = None conn = None borrar_capas = None try: if request.method == "GET": raise Exception("Petición GET no soportada") elif request.method == "POST": data = json.loads(request.body.decode("utf-8")) conn = data["connOrigen"] esquema = data["esquema"] if "esquema" in data else "public" origen = data["origen"] esquema_dest = data["esquema_dest"] if "esquema_dest" in data else "public" destino_simplificado = data["destino_simplificado"] destino_suavizado = data["destino_suavizado"] escala = data["escala"] if origen is None or destino_simplificado is None or destino_suavizado is None: respuesta = {"metodo": "curvas_nivel", "resultado": "ERROR", "mensajes": ["No se han definido los parámetros necesarios"]} else: respuesta = servicios.simplificar_suavizar(conn, esquema, origen, esquema_dest, destino_simplificado, destino_suavizado, escala, task) except Exception as e: respuesta = "curvas_nivel:ERROR:" + str(e) finally: print(respuesta) task.set_progress(100) return JsonResponse(respuesta, safe=False)