On Monday, March 25, 2019 at 7:58:56 PM UTC-4, João Matos wrote:
>
> I need the records from the grid itself.
> The objective is to be able to compare the modified_on field from the 
> record of the grid with the same record on the db at the moment of the save 
> (onvalidation) to detect if there was a record change between those 2 
> moments.
> Like the detect_record_change of the form, but for the grid.
> I found that the grid has a attribute rows which are the records and was 
> able to make it work.
>

The grid.rows object is None during requests that create and process the 
forms, so not sure how you could be accessing grid.rows from onvalidation 
during the processing of an edit form. In any case, you want to compare the 
submitted record with the version that was presented in the edit form (not 
the version that was presented in the grid, which could possibly differ). 
My original means of accessing the current record is not necessary, as you 
can actually get it via form.record within the onvalidation function. If 
you want to compare the modified_on field, you also need to pass that to 
the edit form (as a hidden field) when it is first created so the original 
value gets submitted back with the form. To do that, you can take Val K's 
approach, or to save an extra fetch of the record from the database, you 
can do the following:

def my_grid():
    def onvalidation(form):
        if request.post_vars.modified_on != str(form.record.modified_on):
            form.errors['modified_on'] = True
            response.flash = 'Record change detected.'

    grid = SQLFORM.grid(db.mytable, ...)

    if 'edit' in request.args:
        form = grid.update_form
        form['hidden'].update(modified_on=form.record.modified_on)

    return dict(grid=grid)

Anthony

>

-- 
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