def grid_panel(context, request, data): model_class = data['model_class'] grid = Grid(model_class, instances=data['items']) fields = [] for column in data['columns']: field = column.field or grid._fields.get(column.name) if field is None: # field = AttributeField(getattr(model_class, column.name), grid) field = Field(column.name, fatypes.String) field.set(label=column.label) fields.append(field) # def checkbox(item): # return u"""<input type="checkbox" name="_check" value="%d" />""" % item.id # field = Field('check', fatypes.String, checkbox, label=u"") # grid.insert(grid["id"], field) # fields.insert(0, field) model_name = data['model_name'] def edit_link(item): url = request.route_url('admin_edit', model=model_name, id=item.id) return EDIT_LINK_TEMPLATE % dict(url=url, label='Edit') field = Field('edit', fatypes.String, edit_link) grid.append(field) fields.append(field) grid.configure(pk=1, include=fields) return {"grid": grid, "request": request}