Пример #1
0
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}