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
>