Ok I just read trunk sqlhtml.py that already have the patch I was about to
submit (Miss this easy one :)

if create and len(request.args)>1 and request.args[-2]=='new':
            check_authorization()
            table = db[request.args[-1]]
            create_form = SQLFORM(
                table,
                _class='web2py_form',
                *formstyle = formstyle*
                ).process(next=referrer,
                          onvalidation=onvalidation,
                          onsuccess=oncreate,
                          formname=formname)

Just adding formstyle functionnality that is not present in 1.99.2...


Now I would like to know how I can intercept the html form before it get in
the face of the user... I mean I use to do this hack to show user help
bubble to the user :


form = crud.create(db[request.args(0)])
for i in range(0,len(form[0])):
                if len(form[0][i][2][0]) > 0:
                    form[0][i][0].append(SPAN((helpicon(),
SPAN(form[0][i][2][0])),_class='tooltip'))
                del(form[0][i][2])

So I would do the same with create, update form generated by SQLFORM.grid

Thanks for any suggestion.

Richard

On Wed, Nov 9, 2011 at 4:54 PM, Cliff <[email protected]> wrote:

> In grid you can also do ...
>
> if 'new' in request.args:
>   db.sometable.is_active.readable =\
>   db.sometable.is_active.writable =\
>   False
>
>   query=db.othertable.otherfield==avalue
>   db.sometable.foreign_key.requires =\
>   IS_IN_DB(db(query), 'othertable.otherfield' ...)
>
>   # even more
>   # for those times when the grid default form isn't sufficient
>   form = SQLFORM(db.sometable, .....)
>   if form.accepts(...) #old method, I know
>      yada
>      yada
>   return dict(form=form)
>
> Haven't tried this in smartgrid yet.
>
> On Nov 9, 4:26 pm, Massimo Di Pierro <[email protected]>
> wrote:
> > grid takes any query (even a join)
> > smartgrid takes a table but (can) follow linked tables (no joins).
> >
> > On Nov 9, 3:19 pm, Jim Steil <[email protected]> wrote:
> >
> >
> >
> >
> >
> >
> >
> > >  From what I can gather, smartgrid is the same as grid except that it
> > > will also display/work with related tables.  Grid works with one table
> > > only (please correct me if I'm wrong).
> >
> > >      -Jim
> >
> > > On 11/9/2011 3:14 PM, Richard V�zina wrote:
> >
> > > > Thank a lot Jim I will play a bit with your example... Pretty
> helpful...
> >
> > > > I would like to know more about the difference between grid and
> > > > smartgrid... I just start to read the sqlhtml.py to understand better
> > > > new grid and smartgrid...
> >
> > > > Thanks again.
> >
> > > > Richard
> >
> > > > On Wed, Nov 9, 2011 at 4:07 PM, Jim Steil <[email protected]
> > > > <mailto:[email protected]>> wrote:
> >
> > > >     Here is a sample of one of my controllers.
> >
> > > >     @auth.requires_permission('select', db.priceTemplate)
> > > >     def priceTemplates():
> > > >        response.view='list.html'
> > > >        table = db.priceTemplate
> > > >        response.title = '%s - %s' % (response.section,
> table['_plural'])
> > > >        columns = ['priceTemplate.name', 'priceTemplate.plantId',
> > > >                   'priceTemplate.iwhsPosition',
> > > >                   'contactPriceTemplate.contactId']
> >
> > > >        #  Setup Permissions
> > > >        editable = auth.has_permission('update', table)
> > > >        create = auth.has_permission('create', table)
> > > >        deletable = auth.has_permission('delete', table)
> > > >        details = auth.has_permission('read', table)
> >
> > > >        orderby = dict(priceTemplate=[db.priceTemplate.name
> > > >     <http://db.priceTemplate.name>])
> >
> > > >        db.contactPriceTemplate._plural = 'Contacts'
> >
> > > >        db.contactPriceTemplate.priceTemplateId.writable = False
> > > >        db.contactPriceTemplate.priceTemplateId.readable = False
> >
> > > >        grid = SQLFORM.smartgrid(db.priceTemplate, columns=columns,
> > > >                                 orderby=orderby,
> > > >                                 create=create, details=details,
> > > >                                 editable=editable,
> deletable=deletable,
> > > >                                 csv=False, search_widget=None,
> > > >                                 paginate=15, maxtextlength=45)
> > > >        return dict(grid=grid)
> >
> > > >     In it I'm setting read/write capabilities for one of the fields
> > > >     (notice that it isn't a field in the primary table, but a related
> > > >     table.  I'm also using standard auth to test for permissions
> > > >     (thanks Anthony).  I can control sorting for primary table and
> > > >     related tables.  In looking at the method signature for
> > > >     SQLFORM.grid it appears that formstyle will work just like it did
> > > >     for CRUD.  From what little I know, it would appear to me that
> the
> > > >     CSS styling is the same as CRUD so your CSS should work.
> >
> > > >     SQLFORM.smartgrid is amazing.  If you have your models setup
> > > >     properly you can get highly sophisticated CRUD forms, with
> > > >     relationships with very little boilerplate code.  Thanks Massimo!
> >
> > > >        -Jim
> >
> > > >     On 11/9/2011 2:55 PM, Richard wrote:
> >
> > > >         Hello,
> >
> > > >         I would like to know I can control generated form with
> > > >         SQLFORM.grid...
> > > >         I use to do extensively :
> >
> > > >         If user and group and permission and row field value:
> > > >            crud.table.field.readable =\
> > > >            crud.table.field.writable =False
> > > >            form = crud.create, read or update(db.table)
> >
> > > >         And I customize my form a bit with CSS
> (crud.settings.formstyle =
> > > >         'divs') so I would like to know if I can recycle my CSS with
> > > >         SQLFORM.grid??
> >
> > > >         Thanks.
> >
> > > >         Richard
>

Reply via email to