I did what you suggested but the calls to:

db.owner.own_end_date.writable = False # not writable
db.owner.own_end_date.readable = False # do not show is at all!

are effective only if executed before the call to form = 
SQLFORM.smartgrid(db.owner, ...
When executed after, have no effect.
I want to make db.owner.own_end_date not writeable conditionally:
   ...
   ...
   if ((len(request.args)>1) and (request.args(1)=='edit')):
        if (form.element('input',_name='own_end_date')['_value']!=''):
            db.owner.own_end_date.writable=False # <----- no effect
    ...
    ...

If the edited record contains a date value in that field then user must not 
change it. How can I make that field not writeable in such a case?
Thanks

On Monday, June 23, 2014 1:00:05 AM UTC-4, 98u...@gmail.com wrote:
>
> Why readonly elements (select and date field) of a form respond to clicks 
> and allow for changes and can be submitted? They look grayed out as if 
> readonly but when I click on date field the date picker appears and works 
> as it shoud also the select option is grayed out but it offers a list to 
> choose an option and the form can be submitted with these changed values 
> even though this is not intended.
> #this is the model
>
> db.define_table('owner',
>                 Field('own_cust_fk','reference customer',label='Customer'),
>                 Field('own_veh_fk','reference vehicle',label='Vehicle'),
>                 Field('own_plate','string',label='Plate'),
>                 Field('own_comment','string',label='Comment'),
>                 Field('own_start_date','date',default=now,label='Start 
> date'),
>                 
> Field('own_end_date','date',default=None,label='Terminated'),
>                 migrate='owner.table',format='%(own_plate)s 
> %(own_cust_fk)s',
>                 plural='Owner'
>                 )
>
>
> def index():
>
>     ...
>     ...
>
>     form = SQLFORM.smartgrid(db.owner,
>                              fields=fields,
>                              headers=headers,
>                              paginate=all,
>                              details=True,
>                              editable=True,
>                              deletable=False,
>                              create=False,
>                              showbuttontext=False,
>                              maxtextlength=40,
>                              maxtextlengths=maxtextlengths,
>                              buttons_placement = 'left',
>                              )
>     ...
>     ...
>
>     if ((len(request.args)>1) and (request.args(1)=='edit')):
>             form.element('select',_name='own_cust_fk')['_readonly']='True'
>             form.element('input',_name='own_end_date')['_readonly']='True'
>     ...
>     ...
>     return dict(form=form)
>
>
>
> Any help would be appreciated!
> Thanks
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to