def query_by_ruta(cls, urlkey_ruta, filtro=False):
     if filtro:
         ruta_key = ndb.Key(urlsafe=urlkey_ruta)
         return Cliente.query(ndb.AND(Cliente.ruta == ruta_key, Cliente.credito_activo == False)).order(Cliente.nombres).fetch()
     else:
         ruta_key = ndb.Key(urlsafe=urlkey_ruta)
         return Cliente.query(Cliente.ruta == ruta_key).order(Cliente.nombres).fetch()
 def delete_client(self, request):
     cliente = Cliente.get_by_id(request.id)
     if not cliente:  # If the stock doesn't exist, raise an error
         raise endpoints.BadRequestException("El ID de ese cliente no existe")
     cliente.key.delete()  # If the stock exists, it removes it from the database
     time.sleep(1)
     clientes = Cliente.query().fetch()
     return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
 def existe_documento(cls, documento):
     if documento:
         if Cliente.query(Cliente.documento == documento).fetch():
             return True
         else:
             return False
     else:
         return False
 def create_client(self, request):
     if not (request.documento and request.ruta and request.nombres and request.apellidos):
         raise endpoints.BadRequestException('Los datos: documento, ruta, nombres y apellidos, son obligatorios.')
     alert = ClientHelper.nuevo_registro(
                 request.documento, request.ruta, request.nombres, request.apellidos, request.dir_casa,
                 request.tel_casa, request.celular, request.nombre_est, request.dir_est)
     if alert[0] == "alert-danger":
         raise endpoints.BadRequestException(alert[1])
     time.sleep(1)
     clientes = Cliente.query().fetch()
     return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
 def update_client(self, request):
     cliente = Cliente.get_by_id(request.id)
     if not cliente:  # If the stock doesn't exist, raise an error
         raise endpoints.BadRequestException("El ID de ese cliente no existe")
     if not (request.documento and request.ruta and request.nombres and request.apellidos):
         raise endpoints.BadRequestException('Los datos: documento, ruta, nombres y apellidos, son obligatorios.')
     alert = ClientHelper.actualizar_registro(
                 cliente.key, request.documento, request.ruta, request.nombres, request.apellidos, request.dir_casa,
                 request.tel_casa, request.celular, request.nombre_est, request.dir_est)
     if alert[0] == "alert-danger":
         raise endpoints.BadRequestException(alert[1])
     time.sleep(1)
     clientes = Cliente.query().fetch()
     return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
 def has_children(cls, key):
     key = ndb.Key(urlsafe=key)
     kind = key.kind()
     children = 0
     if kind == 'Ciudad':
         children += Ruta.query(Ruta.ciudad == key).count()
     elif kind == 'Ruta':
         children += Abono.query(Abono.ruta == key).count()
         children += Cliente.query(Cliente.ruta == key).count()
         children += Credito.query(Credito.ruta == key).count()
         children += Transaccion.query(Transaccion.ruta == key).count()
         children += User.query(User.ruta == key).count()
     elif kind == 'Cliente':
         pass
     elif kind == 'Credito':
         pass
     return True if children > 0 else False
 def get_clients(self, request):
     clientes = Cliente.query().fetch()
     return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
 def query_all(cls, filtro=False):
     if filtro:
         return Cliente.query(Cliente.credito_activo == False).order(Cliente.nombres).fetch()
     else:
         return Cliente.query().order(Cliente.nombres).fetch()