Devel:listadospaginados

From WikiNesia

Jump to: navigation, search

La truco de los listados paginados se basa en recuperar los criterios de búsqueda especificados en el formulario como una cadena json. Podría guardarse en la sesión o en una cookie de cliente (en el listado de filestatus, se optó por la segunda opción).

Una vez recuperada la jsonquery, deberá obtener el objeto QueryInfo representado por ella. Cada entidad del modelo de datos deberá tener un método que reciba una instancia QueryInfo correspondiente (por ej, la entidad filestatus deberá tener un queryinfo apropiado a lo que se quiere buscar en filestatus) y una instancia de limiting, determinando el listado paginado.

Para la traducción de la jsonquery al QueryInfo, se hace uso del método getqueryinfo, al que se le pasa una referencia a función que realiza el cambio (en el ejemplo, filestatushelper.parse).

controllers.py
...
def filestatus(self, jsonquery, pageNum = 0, pageSize = 25)
 ...
 queryInfo = self.getqueryinfo('filestatus', jsonquery, filestatushelper.parse)       # se obtiene el query info
 limiting = Limiting(pageNum = pageNum, pageSize = pageSize)                          # se crea el objeto que define las características de paginación
 files = FileStatus.query(queryInfo, limiting)                                        # obtiene listado paginado
 count = FileStatus.queryCount(queryInfo)                                             # obtiene número total de resultados
 totalPages = (count - 1) / pageSize + 1                                              # calcula número de páginas.
 ...

Personal tools