예제 #1
0
def verificarCodigoAccesoGenerado(codigoAcceso):
    codigoAccesoBD = ""
    existeCodigoAcceso = False
    docsTenants = consultarTenants()
    for docTenant in docsTenants:
        print "==================================="
        tenant = docTenant.get("urlTenant", "")
        print tenant
        if tenant == "":
            continue
        db = conexion.getConexionTenant(tenant)
        if db == None:
            continue
        try:
            filas = db.view(
                '_design/generadoresDeCarga/_view/listarCodigoGeneradoPorCodigoAcceso',
                key=[codigoAcceso])
            for fila in filas:
                key = fila.key
                value = fila.value
                doc = fila.doc
                existeCodigoAcceso = True
        except ValueError:
            return False
    return existeCodigoAcceso
예제 #2
0
def procesarEvaluacionConduccionContinua(tenant):
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return {'success': False, 'mensaje': "existe el bd"}
    try:
        CONDUCCIONCONTINUATIEMPOMAXCONDUCCION = obtenerValorConduccionContinuaTiempoMaxConduccion(
            db)
        CONDUCCIONCONTINUATIEMPONOCONDUCCION = obtenerValorConduccionContinuaTiempoNoConduccion(
            db)
        CONDUCCIONCONTINUATIEMPOTOLERANCIA = obtenerValorConduccionContinuaTiempoTolerancia(
            db)
        filas = db.view('_design/vehiculos/_view/vehiculos', include_docs=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            #Obtiene el identficador de cada vehiculo
            idVehiculo = doc.get('_id')
            ultimaFechaRevision = obtenerUltimaRevisionConduccionContinua(
                db, idVehiculo)
            procesarPosicionesVehiculosFechaCreacion(
                db, idVehiculo, ultimaFechaRevision,
                CONDUCCIONCONTINUATIEMPOMAXCONDUCCION,
                CONDUCCIONCONTINUATIEMPONOCONDUCCION,
                CONDUCCIONCONTINUATIEMPOTOLERANCIA, tenant)
    except ValueError:
        pass
예제 #3
0
def buscarTodosVehiculosActivadosTenant(peticion):
    #Busca todos los vehiculos activados del generador de carga logueado
    autenticacion = peticion['autenticacion']
    tenant = autenticacion['tenant']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    codigoAcceso = autenticacion['codigoAcceso']
    db = conexion.getConexionTenant(tenant)
    listaVehiculosRespuesta = []
    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    try:
        dataRaw = []

        filas = db.view(
            '_design/generadoresDeCarga/_view/listarCodigoGeneradoPorCodigoAcceso',
            key=[codigoAcceso],
            include_docs=True,
            limit=1)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            vehiculos = doc.get('vehiculos', '')
        return vehiculos
    except ValueError:
        return False
예제 #4
0
def guardarCodigoDelGenerador(infoCodAcceso, idDocGenerador):
    tenantGeneradorCarga = settings.TENANT_GENERADOR_CARGA
    db = conexion.getConexionTenant(tenantGeneradorCarga)
    if db == None:
        return False
    try:
        doc_id, doc_rev = db.save({
            "tipoDato":
            "codigosAcceso",
            "creadoEn":
            datetime.now().isoformat(),
            "idDocCodAcceso":
            infoCodAcceso["idDoc"],
            "tenantDelCodGenerado":
            infoCodAcceso["tenant"],
            "idGeneradorCarga":
            idDocGenerador,
            "codigo":
            infoCodAcceso["codigo"],
            "activo":
            True
        })
        return True
    except ValueError:
        return False
def guardarDocumentoImagenesProgramacionVigilancia(tenant, idVehiculo,
                                                   datosJson, posicion,
                                                   identificadorImagenIsabu,
                                                   idVigilancia):
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return {'success': False, 'mensaje': "existe el bd"}
    doc_id, doc_rev = db.save({
        "tipoDato":
        "imagenesProgramacionVigilancia",
        "creadoEn":
        datosJson[0],
        "horaRegistrada":
        datetime.now().isoformat(),
        "latitud":
        posicion["latitud"],
        "longitud":
        posicion["longitud"],
        "idVehiculo":
        idVehiculo,
        "idImagen":
        identificadorImagenIsabu,
        "urlImagen":
        settings.RUTA_ARCHIVO_NISABU.format(str(identificadorImagenIsabu)),
        "activo":
        True,
        "idProgramacion":
        idVigilancia
    })

    return doc_id
def guardarDocumentoCapturaImagenes(tenant, idVehiculo, datosJson, posicion,
                                    identificadorImagenIsabu):
    db = conexion.getConexionTenant(tenant)
    if db == None:
        #return { 'success' : False, 'mensaje': "existe el bd" }
        return False
    doc_id, doc_rev = db.save({
        "tipoDato":
        "capturaImagenes",
        "creadoEn":
        datosJson[0],
        "modificadoEn":
        datetime.now().isoformat(),
        "modificadoPor":
        "",
        "horaRegistrada":
        datetime.now().isoformat(),
        "latitud":
        posicion["latitud"],
        "longitud":
        posicion["longitud"],
        "idVehiculo":
        idVehiculo,
        "idImagen":
        identificadorImagenIsabu,
        #"urlImagen"			: "http://localhost/nisabu/image/{}".format(str(identificadorImagenIsabu)),
        "urlImagen":
        settings.RUTA_ARCHIVO_NISABU.format(str(identificadorImagenIsabu)),
        "activo":
        True
    })

    return doc_id
def buscarVehiculoRangoFechas2(tenant, fechaCreacion, fechaHoraActual,
                               idVehiculo):
    db = conexion.getConexionTenant(tenant)
    posicion = {}
    #fechaCreacion 	= parser.parse(fechaCreacion).astimezone(settings.EST).isoformat()
    #fechaCreacion  	= fechaCreacion[0:19]
    fechaHoraActual = fechaHoraActual[0:19]
    posicion["latitud"] = ""
    posicion["longitud"] = ""
    if db == None:
        print "No existe bd"
    try:
        logging.warning("BUscando {} {} fecha actual {}".format(
            fechaCreacion, idVehiculo, fechaHoraActual))
        filas = db.view(
            '_design/posicionVehiculos/_view/posicionFechaCreacion',
            include_docs=True,
            startkey=[idVehiculo, fechaCreacion],
            limit=1,
            descending=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            posicion["latitud"] = doc.get('latitud', "")
            posicion["longitud"] = doc.get('longitud', "")
        return posicion
    except ValueError:
        print "error"
예제 #8
0
def buscarVehiculosActivados(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    codigoAcceso = autenticacion['codigoAcceso']
    db = conexion.getConexionTenant(tenant)
    vehiculos = []
    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    try:
        dataRaw = []

        filas = db.view(
            '_design/generadoresDeCarga/_view/listarCodigoGeneradoPorCodigoAcceso',
            key=[codigoAcceso],
            include_docs=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            vehiculos = doc.get('vehiculos', '')
        return vehiculos
    except ValueError:
        pass
예제 #9
0
def crearCodigoAcceso(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    codigoAcceso = datos['codigoAcceso']
    fechaGeneracion = datos['fechaGeneracion']
    descripcion = datos['descripcion']
    vehiculos = datos['vehiculos']
    fechaCaducidad = datos['fechaCaducidad']
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    try:
        doc_id, doc_rev = db.save({
            "tipoDato": "codigosGenerados",
            "creadoEn": datetime.now().isoformat(),
            "modificadoEn": datetime.now().isoformat(),
            "modificadoPor": usuario,
            "codigo": codigoAcceso,
            "fechaGeneracion": fechaGeneracion,
            "fechaCaducidad": fechaCaducidad,
            "descripcion": descripcion,
            "vehiculos": vehiculos,
            "anulado": False,
            "tenant": tenant,
            "activo": True
        })
        return {'success': True}
    except ValueError:
        return {'success': False, 'mensaje': "error desconocido"}
예제 #10
0
def colgarLlamadasEnCurso(tenant):
    account_sid = settings.TWILIO_ACCOUNT_SID
    auth_token = settings.TWILIO_AUTH_TOKEN
    client = TwilioRestClient(account_sid, auth_token)
    db = conexion.getConexionTenant(tenant)
    idLlamada = ""
    sidLlamada = ""
    estado = ""
    if db == None:
        print "No existe bd"
    try:
        filas = db.view('_design/llamadas/_view/llamadasEnCurso',
                        include_docs=True,
                        key=["En curso"])
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            idLlamada = doc.get('_id')
            razonLLamada = doc.get('razonLLamada')
            limite = doc.get('limite')
            creadoEn = doc.get('creadoEn')
            sidLlamada = doc.get('sidLlamada')
            estado = doc.get('estado')
        if estado == "En curso":
            docLlamada = db[idLlamada]
            docLlamada["estado"] = "Finalizado"
            db.save(docLlamada)
            print "termina llamada"
            print sidLlamada
            terminarLlamada(client, sidLlamada)  # Terminar llamada Twilio
    except ValueError as err:
        print err
예제 #11
0
def autenticarGeneradorCargaLogin(peticion):
    usuario = peticion['usuario']
    accion = peticion['accion']
    #tenant = "generadorescarga"
    tenant = settings.TENANT_GENERADOR_CARGA
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return {'success': False, "mensaje": "No existe el tenant"}

    if accion == 'ingresar':
        contrasena = salarConMd5(peticion['contrasena'])
        logging.warning(contrasena)
        idUsuario = buscarIdGeneradorCarga(usuario)
        filas = db.view(
            '_design/generadoresDeCarga/_view/generadoresCargaPorContrasena',
            include_docs=True,
            startkey=[usuario, contrasena],
            endkey=[usuario, contrasena],
            limit=1)
        for fila in filas:
            doc = fila.doc
            llave = fila.key
            token = uuid.uuid4().hex
            idUsuario = doc.get("_id")
            nombreGenerador = doc.get("nombreGenerador")
            doc_id, doc_rev = db.save({
                "tipoDato": "autenticacion",
                "activo": True,
                "creadoEn": datetime.now().isoformat(),
                "loginUsuario": idUsuario,
                "token": token
            })
            return {
                'success': True,
                'token': token,
                'login': usuario,
                'nombreUsuario': usuario,
                'idUsuario': idUsuario,
                'tenant': tenant,
                'nombreGenerador': nombreGenerador,
                'perfil': "generadorCarga",
                'mensaje': "Bienvenido a FleetBi"
            }
        return {'success': False, "mensaje": "Usuario o contraseña incorrecta"}
    elif accion == 'cerrar':
        token = peticion['token']
        filas = db.view('_design/autenticaciones/_view/autenticacion',
                        include_docs=True,
                        key=[usuario, token],
                        limit=1)
        for fila in filas:
            doc = fila.doc
            db.delete(doc)
            return {'success': True}
    return {'success': False, "mensaje": "Error desconocido login"}
예제 #12
0
def colgarLlamadaEnCurso(tenant):
	account_sid     = settings.TWILIO_ACCOUNT_SID 
	auth_token      = settings.TWILIO_AUTH_TOKEN 
	client      = TwilioRestClient(account_sid, auth_token)
	db = conexion.getConexionTenant(tenant)
	if db == None:
		print "No existe bd"
	try:
		filas = db.view('_design/llamadas/_view/llamadasEnCurso',
		            include_docs  = True, 
                    key      = ["En curso"])
		for fila in filas:
		    key 			= fila.key
		    value 			= fila.value
		    doc 			= fila.doc
		    idLlamada 		= doc.get('_id')
		    razonLLamada	= doc.get('razonLLamada')
		    limite			= doc.get('limite')
		    creadoEn		= doc.get('creadoEn')
		    sidLlamada		= doc.get('sidLlamada')
		    activoPanico  	= doc.get('activoPanico') # si en algun momento se activo boton de panico
		    if razonLLamada == "zonaAlarma":
		    	if activoPanico:
		    		examinarLlamadaBotonPanico(idLlamada, limite, creadoEn, sidLlamada, db)
		    		urlAudio            = consultarUrlGrabacion(sidLlamada, client)
		    		#urlAudio			= "URL AUDIO"
		    		actualizarEstadocapturaAudioZonaAlarma(idLlamada, urlAudio, limite, db)
		    	else:	
		    		#cuelga la llamada de zonaAlarma si ya cumplio el limite
		    		examinarLlamadaZonaAlarma(idLlamada, limite, creadoEn, sidLlamada, db)
		    if razonLLamada == "programacionVigilancia":
		    	if activoPanico:
		    		examinarLlamadaBotonPanico(idLlamada, limite, creadoEn, sidLlamada, db)
		    		urlAudio            = consultarUrlGrabacion(sidLlamada, client)
		    		#urlAudio			= "URL AUDIO"
		    		actualizarEstadocapturaAudioProgramacionVigilancia(idLlamada, urlAudio, limite, db)
		    	else:	
		    		#cuelga la llamada de la profamacion vigilancia si ya cumplio el limite
		    		examinarLlamadaProgramacionVigilancia(idLlamada, limite, creadoEn, sidLlamada, db)
		    if razonLLamada == "zonaAlarmaProgramacionVigilancia":
		    	if activoPanico:
		    		examinarLlamadaBotonPanico(idLlamada, limite, creadoEn, sidLlamada, db)
		    		urlAudio            = consultarUrlGrabacion(sidLlamada, client)
		    		#urlAudio			= "URL AUDIO"
		    		actualizarEstadocapturaAudioZonaAlarma(idLlamada, urlAudio, limite, db)
		    		actualizarEstadocapturaAudioProgramacionVigilancia(idLlamada,urlAudio, limite, db)		    		
		    	else:	
		    		examinarLlamadaZAPVSimultanea(idLlamada, limite, creadoEn, sidLlamada, db)
		    if razonLLamada == "botonPanico":
		    	#si la llamada solo corresponde al boton de panico
		    	examinarLlamadaBotonPanico(idLlamada, limite, creadoEn, sidLlamada, db)	
	except ValueError as err:
		print err
예제 #13
0
def autenticarGeneradorCarga(peticion):
    datos = peticion['data']
    nombreGenerador = datos['nombreGenerador']
    codigoAcceso = datos['codigoAcceso']
    email = datos['email']
    contrasena = datos['contrasena']
    infoCodAcceso = {}
    docGenerador = {}
    #existeCodigoAcceso  = verificarCodigoAccesoGeneradorCarga(codigoAcceso)
    infoCodAcceso = verificarCodigoAccesoGeneradorCarga(codigoAcceso)
    #tenant = "generadorescarga"
    tenant = settings.TENANT_GENERADOR_CARGA
    #valida que le email no este registrado
    existemail = validarEmail(email, tenant)
    if infoCodAcceso["existeCodigoAcceso"] and not (existemail):
        # si un cliente ha creado el código de acceso se permitira ingresar al sistema
        md5Contrasena = salarConMd5(contrasena)
        token = uuid.uuid4().hex
        docGenerador = guardarGeneradorCarga(nombreGenerador, email,
                                             md5Contrasena, tenant)
        guardarAutenticacion(token, email, tenant)
        if docGenerador["guardoDoc"]:
            #guarda el cod del generador en el tenant fleetbigeneradorCarga
            guardarCodigoDelGenerador(infoCodAcceso, docGenerador["docId"])
            db = conexion.getConexionTenant(tenant)
            if db == None:
                return {'success': False, "mensaje": "No existe el tenant"}
            doc_id, doc_rev = db.save({
                "tipoDato": "autenticacion",
                "activo": True,
                "creadoEn": datetime.now().isoformat(),
                "loginUsuario": docGenerador["docId"],
                "token": token
            })
            return {
                'success': True,
                'token': token,
                'login': email,
                'nombreUsuario': email,
                'idUsuario': docGenerador["docId"],
                'tenant': tenant,
                'nombreGenerador': nombreGenerador,
                'perfil': "generadorCarga",
                'mensaje': "Bienvenido a FleetBi"
            }
        else:
            return {'success': False, 'mensaje': "Error desconocido"}
    else:
        return {
            'success': False,
            'mensaje': "El código de acceso o el email no es válido"
        }
예제 #14
0
def listarCodigosGenerados(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    fechaInicio = datos['fechaInicio']
    fechaFin = datos['fechaFin']

    db = conexion.getConexionTenant(tenant)

    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}

    try:
        dataRaw = []
        filas = db.view(
            '_design/generadoresDeCarga/_view/listarCodigosGenerados',
            startkey=[fechaInicio],
            endkey=[fechaFin],
            include_docs=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            cantidadVehiculos = doc['vehiculos']
            fechaCaducidad = doc['fechaCaducidad']
            if doc['anulado']:
                estado = "Anulado"
            else:
                fecha1 = parser.parse(fechaCaducidad)
                fechaActual = str(datetime.now(settings.EST).isoformat())
                fecha2 = parser.parse(fechaActual)
                diferencia = fecha1 - fecha2
                segundosDiferencias = diferencia.total_seconds()
                if segundosDiferencias < 0:
                    estado = "Vencido"
                else:
                    estado = "Disponible"
            dataRaw.append({
                'id': doc['_id'],
                'codigo': doc['codigo'],
                'fechaGeneracion': doc['fechaGeneracion'],
                'fechaCaducidad': fechaCaducidad,
                'descripcion': doc['descripcion'],
                'vehiculos': len(cantidadVehiculos),
                'estado': estado
            })
        return {'success': True, 'data': dataRaw}
    except ValueError:
        pass

    return {'success': False, 'mensaje': "error desconocido"}
예제 #15
0
def guardarAutenticacion(token, email, tenant):
    #guarda la autenticacion en el tenant 'generadorescarga'
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return False
    try:
        doc_id, doc_rev = db.save({
            "tipoDato": "autenticacion",
            "creadoEn": datetime.now().isoformat(),
            "loginUsuario": email,
            "token": token,
            "activo": True
        })
        return True
    except ValueError:
        return False
예제 #16
0
def existeCodigoDelGenerador(codigoAcceso, idGeneradorCarga):
    tenant = settings.TENANT_GENERADOR_CARGA
    existeCodigo = False
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return False
    try:
        filas = db.view(
            '_design/codigosAcceso/_view/listarCodigosAccesoPorCodigo',
            key=[codigoAcceso, idGeneradorCarga])
        for fila in filas:
            key = fila.key
            value = fila.value
            existeCodigo = True
        return existeCodigo
    except ValueError:
        pass
예제 #17
0
def buscarCofiguracionGenerador(peticion):
    autenticacion = peticion['autenticacion']
    tenant = autenticacion['tenant']
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return {'success': False, 'mensaje': "existe el bd"}
    try:
        filas = db.view('_design/configuracion/_view/configuraciones',
                        key=["CONFIGURACIONGENERADORCARGA"],
                        limit=1,
                        include_docs=False)
        for fila in filas:
            key = fila.key
            value = fila.value
        return value
    except ValueError:
        pass
예제 #18
0
def validarEmail(email, tenant):
    existemail = False
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return False
    try:
        filas = db.view(
            '_design/generadoresDeCarga/_view/listarGeneradoresCarga',
            key=[email])
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            existemail = True
        return existemail
    except ValueError:
        return False
예제 #19
0
def procesarEvaluacionEncendidoApagado(tenant):
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return { 'success' : False, 'mensaje': "existe el bd" }
    try:
        filas = db.view('_design/vehiculos/_view/vehiculos',
                    include_docs  = True)
        for fila in filas:
            key                     = fila.key
            value                   = fila.value
            doc                     = fila.doc
            #Obtiene el identficador de cada vehiculo
            idVehiculo           = doc.get('_id')
            ultimaFechaRevision = obtenerUltimaRevisionEncendidoApagado(db, idVehiculo)       
            procesarPosicionesVehiculosFechaCreacion(db, idVehiculo, ultimaFechaRevision, tenant)
        #actualizo la ultima revision en el documento
    except ValueError:
        pass
예제 #20
0
def obtenerDatosCodAcceso(idDocCodAcceso, tenantDelCodGenerado):
    #funcion que consulta los datos del cod generado segun el cliente
    db = conexion.getConexionTenant(tenantDelCodGenerado)
    docCodigoAcceso = db[idDocCodAcceso]
    idDoc = docCodigoAcceso["_id"]
    codigo = docCodigoAcceso["codigo"]
    fechaGeneracion = docCodigoAcceso["fechaGeneracion"]
    fechaCaducidad = docCodigoAcceso["fechaCaducidad"]
    vehiculos = docCodigoAcceso["vehiculos"]
    anulado = docCodigoAcceso["anulado"]
    return {
        'id': idDoc,
        'codigo': codigo,
        'fechaGeneracion': fechaGeneracion,
        'fechaCaducidad': fechaCaducidad,
        'transportador': tenantDelCodGenerado,
        'vehiculos': len(vehiculos),
        'anulado': anulado
    }
예제 #21
0
def buscarIdGeneradorCarga(usuario):
    tenant = settings.TENANT_GENERADOR_CARGA
    docId = None
    db = conexion.getConexionTenant(tenant)
    if db == None:
        return False
    try:
        filas = db.view(
            '_design/generadoresDeCarga/_view/listarGeneradoresCarga',
            key=[usuario],
            include_docs=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            docId = doc.get('_id', None)
        return docId
    except ValueError:
        return False
예제 #22
0
def clientesCodGenerados(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']

    db = conexion.getConexionTenant(tenant)

    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    #idGeneradorCarga = buscarIdGeneradorCarga(usuario)
    idGeneradorCarga = usuario
    try:
        dataRaw = []

        filas = db.view('_design/codigosAcceso/_view/listarCodigosAcceso',
                        key=[idGeneradorCarga],
                        include_docs=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            codigoAcceso = doc.get('codigo', '')
            infoCodAcceso = verificarCodigoAccesoGeneradorCarga(codigoAcceso)
            if infoCodAcceso["existeCodigoAcceso"]:
                dataRaw.append({
                    'tenant':
                    infoCodAcceso["tenant"],
                    'nombre':
                    u"{} - {} ".format(infoCodAcceso["codigo"],
                                       infoCodAcceso["tenant"]),
                    'codigoAcceso':
                    infoCodAcceso["codigo"],
                    'fechaGeneracion':
                    infoCodAcceso["fechaGeneracion"],
                    'fechaCaducidad':
                    infoCodAcceso["fechaCaducidad"]
                })
        return {'success': True, 'data': dataRaw}
    except ValueError:
        pass

    return {'success': False, 'mensaje': "error desconocido"}
예제 #23
0
def generarCodigoAcceso(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    #cantidadCaracteres      = int(datos['cantidadCaracteres'])
    cantidadCaracteres = settings.CANTIDAD_CARACTERES_CODIGO_ACCESO
    codigoAccesoGenerado = construirCodigoAcceso(cantidadCaracteres)

    db = conexion.getConexionTenant(tenant)

    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    try:
        return {'success': True, "codigoAccesoGenerado": codigoAccesoGenerado}
    except ValueError:
        pass

    return {'success': False, 'mensaje': "error desconocido"}
예제 #24
0
def actualizarDatosCuentaGeneradorCarga(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    #tenant          = autenticacion['tenant']
    tenantGeneradorCarga = settings.TENANT_GENERADOR_CARGA
    dbTenant = conexion.getConexionTenant(tenantGeneradorCarga)
    resultado = False
    #funcion para actualizar los datos del generador de carga
    nombreGenerador = datos["nombreGenerador"]
    correo = datos["correo"]
    existeEmail = verificarExisteEmail(correo, usuario)
    #si no existe email se puede actualizar los datos
    if not (existeEmail):
        resultado = actualizarDocGeneradorCarga(dbTenant, usuario, datos)
    if resultado:
        return {'success': True}
    else:
        return {'success': False, 'mensaje': "El email ya se está registrado"}
예제 #25
0
def consultarDetalleVehiculosCodigoGenerado(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    doc_idCodigosGenerados = datos['id']

    db = conexion.getConexionTenant(tenant)

    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    try:
        dataRaw = []
        placa = ""
        nombresConductor = ""
        apellidosConductor = ""
        docCodigosGenerados = db[doc_idCodigosGenerados]
        #obtiene la lista de los vehiculos
        vehiculos = docCodigosGenerados["vehiculos"]
        for idDocVehiculo in vehiculos:
            #consulta la placa del vehiculo
            docVehiculos = db[idDocVehiculo]
            placa = docVehiculos["placa"]  #se envia al html
            idDocConductor = docVehiculos["conductor"]
            #consulta el nombre del conductor asignado
            if idDocConductor != "":
                docConductor = db[idDocConductor]
                nombresConductor = docConductor["nombres"]
                apellidosConductor = docConductor["apellidos"]
            else:
                nombresConductor = ""
                apellidosConductor = ""
            dataRaw.append({
                'placa': placa,
                'nombres': nombresConductor,
                'apellidos': apellidosConductor
            })
        return {'success': True, 'data': dataRaw}
    except ValueError:
        pass

    return {'success': False, 'mensaje': "error desconocido"}
예제 #26
0
def verificarCodigoAccesoGeneradorCarga(codigoAcceso):
    #verifica los codigos de acceso en todos los tenants
    infoCodAcceso = {}
    infoCodAcceso["existeCodigoAcceso"] = False
    codigoAccesoBD = ""
    existeCodigoAcceso = False
    docsTenants = consultarTenants()
    for docTenant in docsTenants:
        print "==================================="
        tenant = docTenant.get("urlTenant", "")
        print tenant
        if tenant == "":
            continue
        db = conexion.getConexionTenant(tenant)
        if db == None:
            continue
        try:
            filas = db.view(
                '_design/generadoresDeCarga/_view/listarCodigoGeneradoPorCodigoAcceso',
                key=[codigoAcceso],
                include_docs=True)
            for fila in filas:
                key = fila.key
                value = fila.value
                doc = fila.doc
                codAcceso = doc.get('anulado', False)
                fechaCaducidad = doc.get('fechaCaducidad')
                estaVencido = verificarVencimientoCodAcceso(fechaCaducidad)
                if not (codAcceso) and not (estaVencido):
                    #existeCodigoAcceso = True
                    infoCodAcceso["existeCodigoAcceso"] = True
                    infoCodAcceso["idDoc"] = doc.get('_id')
                    infoCodAcceso["codigo"] = doc.get('codigo')
                    infoCodAcceso["fechaGeneracion"] = doc.get(
                        'fechaGeneracion')
                    infoCodAcceso["fechaCaducidad"] = doc.get('fechaCaducidad')
                    infoCodAcceso["tenant"] = doc.get('tenant')
                    infoCodAcceso["vehiculos"] = doc.get('vehiculos')
        except ValueError:
            return False
    #return existeCodigoAcceso
    return infoCodAcceso
예제 #27
0
def anularCodigoGenerado(peticion):
    autenticacion = peticion['autenticacion']
    datos = peticion['data']
    usuario = autenticacion['usuario']
    tenant = autenticacion['tenant']
    doc_idCodigosGenerados = datos['id']

    db = conexion.getConexionTenant(tenant)

    if db == None:
        return {'success': False, 'mensaje': "existe el tenant"}
    try:
        docCodigosGenerados = db[doc_idCodigosGenerados]
        docCodigosGenerados["anulado"] = True
        db.save(docCodigosGenerados)
        return {'success': True}
    except ValueError:
        pass

    return {'success': False, 'mensaje': "error desconocido"}
예제 #28
0
def verificarEstadoVehiculo(tenant):
  db = conexion.getConexionTenant(tenant)
  if db == None:
    print "No existe bd"
  try:
    filas = db.view('_design/posicionVehiculos/_view/ultimaPosicionGuardada',
                include_docs  = True,
                startkey      = [True, 0],
                endKey = [True, {}])
    print len(filas)
    for fila in filas:
        key                 = fila.key
        value               = fila.value
        doc                 = fila.doc
        horaRegistrada      = doc.get('horaRegistrada')
        horaAdecuada        = validarHoras(horaRegistrada)
        if not(horaAdecuada):
          #doc["estado"] = "inactivo"
          db.save(doc)
  except ValueError:
    print "error"
예제 #29
0
def recuperarContrasena(peticion):
    #recordar crear vistas en la base de datos modelo y fleetbi y exxonmobil usuariosporcontrasena y recuperacionContrasena
    try:
        correoInput = peticion['correo']
        tenant = settings.TENANT_GENERADOR_CARGA
        db = conexion.getConexionTenant(tenant)
        correo = buscarCorreoGeneradorBD(db, correoInput)
        if not correo == None:
            intento = 1
            tiempo = time.time()
            token = salarConMd5('{}{}{}'.format(correo, str(tiempo),
                                                str(intento)))
            existeToken = False
            #verificar si alguna vez se ha registrado el token
            existeToken = buscarExistenciaTokenGenerador(db, token)
            while existeToken:
                intento += 1
                token = salarConMd5('{}{}{}'.format(correo, str(tiempo),
                                                    str(intento)))
                existeToken = buscarExistenciaTokenGenerador(db, token)
                #se guarda en bd del tenant
            guardarDocRecuperarContrasena(db, token, correo)
            url = "{}{}".format(
                settings.BASE_URL_RECUPERARCONTRASENA,
                reverse('recuperarContrasena', args=[tenant, token]))
            #url = "http://52.55.0.240/webfleetbigui/generadorescarga/login"
            asunto = u"Recuperación de contraseña"
            html = u"""
                <h2>Se ha solicitado una recuperación de contraseña</h2>
                </br>
                Puede cambiar su contraseña en el siguiente enlace 
                <a href="{}">cambiar contrasena</a>
                """.format(url)
            envioGodaddy(correo, html, asunto, settings.CORREO_USUARIO)
        else:
            return {'success': False}

    except ValueError as e:
        pass
    return {'success': True}
예제 #30
0
def verificarExisteEmail(correo, idUsuario):
    tenant = settings.TENANT_GENERADOR_CARGA
    db = conexion.getConexionTenant(tenant)
    existeEmail = False
    if db == None:
        return False
    try:
        filas = db.view(
            '_design/generadoresDeCarga/_view/listarGeneradoresCarga',
            key=[correo],
            include_docs=True)
        for fila in filas:
            key = fila.key
            value = fila.value
            doc = fila.doc
            docId = doc.get('_id', None)
            email = doc.get('email', None)
            if email == correo and docId != idUsuario:
                existeEmail = True
        return existeEmail
    except ValueError:
        pass