DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Flexigrid Django Utility Class
// Utility class for working with jQuery Flexigrid data grid plugin from with Django
import simplejson
from django.core.paginator import Paginator
class Flexigrid:
'''
Utility class for interacting with Flexigrid
This snippet is (c) 2009 Jason McVetta <jason.mcvetta@gmail.com>, and
is released under the GPL.
'''
def __init__(self, request):
'''
Extracts standard Flexigrid variables from a Django REQUEST object.
'''
log.debug('request.POST: %s' % request.POST)
self.sortname = request.REQUEST.get('sortname', 'id') # Field to sort on
self.page = request.REQUEST.get('page', 1) # What page we are on
self.sortorder = request.REQUEST.get('sortorder', 'asc') # Ascending/descending
self.rp = int(request.REQUEST.get('rp', settings.CASES_PER_PAGE)) # Num requests per page
self.qtype = request.REQUEST.get('qtype', None) # Query type
self.query = request.REQUEST.get('query', None) # Query string
log.debug('sortname: %s' % self.sortname)
log.debug('page: %s' % self.page)
log.debug('sortorder: %s' % self.sortorder)
log.debug('rp: %s' % self.rp)
log.debug('qtype: %s' % self.qtype)
log.debug('query: %s' % self.query)
def json(self, rows, use_paginator=True):
'''
Returns JSON suitable for feeding to Flexigrid.
@type rows: [{'id': 1, 'cell': ['field1, 'field2', ...]}, ...]
@param use_paginator: Set this to false if you are going to do
pagination outside this class, for instance if you have a very
large set of objects and do not want to fetch all rows.
'''
p = Paginator(rows, self.rp)
if use_paginator:
rows = p.page(self.page).object_list
json_dict = {
'page': self.page,
'total': p.count,
'rows': rows
}
json = simplejson.dumps(json_dict)
return json






Comments
Snippets Manager replied on Wed, 2009/12/30 - 8:31pm