My mistake -- looks like it always has a .create_form, but set to None in 
other cases. But in that case:

if form.create_form:

should work, though I think you said that didn't work -- what happened when 
you tried that?

Anthony

On Thursday, November 10, 2011 4:04:00 PM UTC-5, Richard wrote:
>
> Ok but it's not seem to work... I get this error trace back :
>
>  1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
>
> Traceback (most recent call last):
>
>   File "/web2py/gluon/restricted.py", line 194, in restricted
>
>     exec ccode in environment
>
>   File "/web2py/applications/sgddms/controllers/test.py", line 4437, in 
> <module>
>
>   File "/web2py/gluon/globals.py", line 149, in <lambda>
>
>     self._caller = lambda f: f()
>
>   File "/web2py/applications/sgddms/controllers/test.py", line 4396, in 
> test_sqlformgrid
>
>     for i in range(0,len(form.create_form[0])):
> TypeError: 'NoneType' object is unsubscriptable
>
> Any idea?
>
> It really the first time I play with SQLFORM.grid and it not documented 
> yet so I may ask kind of trivial question... Also I a bit under pressure.
>
> I really appreciate your help.
>
> Richard
>
> On Thu, Nov 10, 2011 at 3:57 PM, Anthony <[email protected]> wrote:
>
>> I'd go with the second option -- more fool proof.
>>
>>
>> On Thursday, November 10, 2011 3:11:11 PM UTC-5, Richard wrote:
>>
>>> Ok so this :
>>>
>>> "if 'new' in request.args and form.create_form:"
>>>
>>> or shorter :
>>>
>>> "if hasattr(form, 'create_form'):"
>>>
>>> ?
>>>
>>> Thank you.
>>>
>>> Richard
>>>
>>> On Thu, Nov 10, 2011 at 2:58 PM, Anthony <[email protected]> wrote:
>>>
>>>> If you have "if 'new' in request.args:' you should not also need "if 
>>>> form.create_form" (even if you did, you could simply put them in the same 
>>>> "if" statement with an "and"). Alternatively, use "if hasattr(form, 
>>>> 'create_form'):" -- all by itself.
>>>>
>>>> Anthony
>>>>
>>>>
>>>> On Thursday, November 10, 2011 2:48:49 PM UTC-5, Richard wrote:
>>>>
>>>>>  Here a working piece of code :
>>>>>
>>>>> def test_sqlformgrid():
>>>>>     form = SQLFORM.grid(db.TABLE, ui='jquery-ui', 
>>>>> editable=auth.has_membership('****reviewer'), 
>>>>> deletable=auth.has_membership(****'reviewer'), formstyle = 'divs')
>>>>>     if 'new' in request.args:
>>>>>         if form.create_form
>>>>>             for i in range(0,len(form.create_form[**0**])):
>>>>>                 if len(form.create_form[0][i][2][****0]) > 0:
>>>>>                     
>>>>> form.create_form[0][i][0].**appe**nd(SPAN((helpicon(), 
>>>>> SPAN(form.create_form[0][i][2]****[0])),_class='tooltip'))
>>>>>                 del(form.create_form[0][i][2])
>>>>>      return dict(form=form)
>>>>>
>>>>> Off course the for i in range... Is specific to my need but it the way 
>>>>> to manipulate the generated html form before it goes in user hand...
>>>>>
>>>>> :)
>>>>>
>>>>> Richard
>>>>>
>>>>> On Thu, Nov 10, 2011 at 2:44 PM, Richard Vézina <[email protected]>wrote:
>>>>>
>>>>>>  It was working "if form.create_form:"...
>>>>>>
>>>>>> I thought that grid use form variable doesn't matter if the 
>>>>>> SQLFORM.grid wasn't in a form variable at all...
>>>>>>
>>>>>> And my bad because I show form = crud... But it was not my 
>>>>>> SQLFORM.grid... Arrg.
>>>>>>
>>>>>> Sorry about that...
>>>>>>
>>>>>> Richard
>>>>>>
>>>>>> On Thu, Nov 10, 2011 at 1:26 PM, Anthony <[email protected]> wrote:
>>>>>>
>>>>>>> On Thursday, November 10, 2011 12:42:49 PM UTC-5, Richard wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> "if 'new' in request.args:" works (allow to load the grid) but the 
>>>>>>>> "if form.create_form:" not work alone or in conjunction with the former
>>>>>>>>
>>>>>>>
>>>>>>> Yeah, looks like it would have to be something like "if 
>>>>>>> hasattr(form, 'create_form'):". 
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>
>

Reply via email to