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
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
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
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"
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
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"}
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
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"}
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
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" }
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"}
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
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
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
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
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
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 }
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
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"}
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"}
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"}
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"}
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
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"}
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"
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}
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