well, there's a reason why those are called "database callbacks". Those are the lower-side of things when you need to put a check somewhere. They have nothing to do with forms or grids, and IMHO, they should stay as they are until a proper "resolution" is found for the common issue of multiple pkeys, unique constraints, and so on....
On Monday, August 18, 2014 5:55:43 PM UTC+2, Paolo Valleri wrote: > > The first issue is that, I don't know a simple way (using sqlform.grid) to > return to the form even if the validation has passed successfully. The > second is to display the error message. > Maybe we can add an error_message parameter to _before_* ? > > > Paolo > > > 2014-08-18 17:35 GMT+02:00 Anthony <abas...@gmail.com <javascript:>>: > >> So, you want to add some logic to SQLFORM.accepts so if an insert or >> update fails after validation passes, the form still reports an error? >> Would you specify the error message in the call to SQLFORM.accepts? >> >> Anthony >> >> >> On Monday, August 18, 2014 11:25:32 AM UTC-4, Paolo Valleri wrote: >>> >>> Hi all, >>> a common problem is a constraint on multiple fields. There are few ways >>> to handle this situation, I tried by using the _before_* callbacks. >>> Currently, if the the callback return True (which means that the >>> constrains validation is failed) the sqlform.grid doesn't raise any message >>> or notification. >>> Is that the correct behavior? >>> >>> An example is that: >>> def index(): >>> def some_logic(f): return True >>> db.define_table('station', >>> Field('name'), >>> ) >>> db.station._before_insert.append(some_logic) >>> grid = SQLFORM.grid(db.station) >>> >>> return {'grid':grid} >>> By using this example, a record will be never stored but the grid will >>> 'correctly' return every time. If you have many items, it will be difficult >>> to understand what really happened. >>> I know that I can add session.flash = 'error message' in the some_logic >>> function to display a flash message in case of error but even in this case >>> the user will lose the form with the filled fields. >>> >>> From my point of view, a possible alternative scenario would be to >>> 'stay' in the form and to show to the user a general error message on top >>> of the form. >>> Any idea? >>> >>> Paolo >>> >> -- >> 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 a topic in the >> Google Groups "web2py-users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/web2py/BB32aGzGtuQ/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.