modificar "addrecords" grid

45 views
Skip to first unread message

Jorge Cedermaz

unread,
Aug 14, 2015, 2:55:37 PM8/14/15
to web2py-usuarios
Buenas tardes, queria consultarles si es posible modificar el controlador del boton "addrecords" de un grid. Para explicarme mejor, les dejo un ejemplo:

#funcion que me genera un formulario de una nueva entidad

@auth.requires_login()
def nueva_entidad():
    form = SQLFORM(db.entidad)
    roles = db(db.roles).select()
    for rol in roles:
        check = TR(TD(LABEL(rol.denominacion)),TD(INPUT(_type='checkbox', _name='roles', _value=rol.id)))
        form[0].insert(-1, check)
    if form.process().accepted:
        response.flash='Entidad Guardada'
        entidad = form.vars.id
        listacheck = request.vars.roles
        for elem in listacheck:
           id = db.rol_entidad.insert(id_rol = elem, id_entidad = entidad)
    elif form.errors:
        response.flash = 'Hay errores, por favor corrijalos.'
    return dict(form=form)

#controlador que permite gestionar entidades
@auth.requires_login()
def entidades():
    form = SQLFORM.grid(db.entidad)
    return dict(form=form)

Lo que necesito es que cuando un usuario que ingresa a "entidades" y quiera ingresar una nueva, el grid llame al controlador nueva_cirugia() y no al que llama por defecto. Lo mismo haría para las vistas y para editar llamando a sus respectivos controladores. Es posible esto?

Yoel Benitez Fonseca

unread,
Aug 15, 2015, 9:55:39 AM8/15/15
to web2py-...@googlegroups.com
Lo que creo que debes hacer es crear el GRID pasandole editable=False
y creae=False, y dandole mediante el parametro links los enlaces que
necesites para esas funciones.

El 14/8/15, Jorge Cedermaz <cederma...@gmail.com> escribió:
> --
> Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios"
> de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a web2py-usuari...@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/d/optout.
>


--
Msc. Yoel Benítez Fonseca
Especialista en TI
Redacción Adelante
Tel.: (53 32)284701

Jorge Cedermaz

unread,
Aug 18, 2015, 8:03:25 AM8/18/15
to web2py-usuarios
Yoel, gracias por responder. Me podrías dar un ejemplo de como seria el código?

Jorge Cedermaz

unread,
Aug 18, 2015, 10:46:27 AM8/18/15
to web2py-usuarios
Usando un SmartGrid logre realizar el ABM de entidades de una manera que me resulta util. Me quedan dos temas a resolver:
* El primero es que una vez que doy de alta una una nueva entidad, me gustaría que me redireccione al ABM rol_entidad de la misma manera que lo hace linked_tables
* Segundo es que dentro de rol_entidad, las opciones se muestran con el widget checkboxes. Como se puede recorrer esos checkbox para ver si están "tildados". El formulario rol_entidad lo puedo recuperar con form.vars.rol_entidad?
Me pareció muy cómodo el formulario SmartgGrid pero la documentación carece de ejemplos de implementación lo cual a mi entender no permite usarlo en todo su potencial.
Este es el codigo que uso:

def entidades():
    #form = SQLFORM.grid(db.entidad)
    titulos = {'entidad.id':   'ID',
           'entidad.nombre': 'Nombre',
           'entidad.apellido': 'Apellido',
           'entidad.dni': 'DNI',
           'rol_entidad.id_rol': 'Rol'}
    form = SQLFORM.smartgrid(db.entidad,fields=(db.entidad.nombre, db.entidad.apellido, db.entidad.dni, db.entidad.sexo, db.rol_entidad.id_rol), headers=titulos, linked_tables=['rol_entidad'])
    return dict(form=form)
Reply all
Reply to author
Forward
0 new messages