feature. not a bug. "required" is not a form directive but a DAL directive. 
Tells the DAL not to accept inserts if the field is missing.

On Wednesday, 6 January 2016 10:58:04 UTC-6, Scott Hunter wrote:
>
> I've solved 1/2 of the problem: as per the documentation, `required` only 
> applies to DB access; instead, I needed to supply appropriate validators 
> via the `requires` parameter.
>
> That still leaves the exception; I can understand it being an odd 
> situation (validation against the DB when no DB IO is requested), and I 
> don't get the exception once the appropriate `requires` parameter is 
> supplied, but it doesn't seem like this should be raising an exception.
>
> On Sunday, January 3, 2016 at 9:46:34 PM UTC-5, Scott Hunter wrote:
>>
>> If I create a SQLFORM from a table, but avoid DBIO (either by just 
>> calling validate, or calling process(dbio=False).accepted), if a required 
>> field is missing, instead of the form coming back w/ errors, It throws a 
>> NOT_IN_DB exception.  
>>
>>     def request_trial():
>>         form = SQLFORM(db.t_trial)
>>         if form.process(dbio=False).accepted:
>>             session.flash = "Trial Requested"
>>             redirect( URL(f="index", user_signature=True) )
>>         return locals()
>>
>>
>>
>> Here's the traceback:
>>
>>     Traceback (most recent call last):
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/restricted.py", 
>> line 227, in restricted
>>         exec ccode in environment
>>       File 
>> "/Users/scott_mbp/Dropbox/web2py_uki/applications/init_bkup/controllers/default.py"
>> , line 494, in <module>
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/globals.py", line 
>> 412, in <lambda>
>>         self._caller = lambda f: f()
>>       File 
>> "/Users/scott_mbp/Dropbox/web2py_uki/applications/init_bkup/controllers/default.py"
>> , line 480, in request_trial
>>         if form.process(dbio=False).accepted:
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 2304
>> , in process
>>         self.validate(**kwargs)
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 2241
>> , in validate
>>         if self.accepts(**kwargs):
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/sqlhtml.py", line 
>> 1505, in accepts
>>         **kwargs
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 2122
>> , in accepts
>>         status = self._traverse(status, hideerror)
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 888, 
>> in _traverse
>>         newstatus = c._traverse(status, hideerror) and newstatus
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 888, 
>> in _traverse
>>         newstatus = c._traverse(status, hideerror) and newstatus
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 888, 
>> in _traverse
>>         newstatus = c._traverse(status, hideerror) and newstatus
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 888, 
>> in _traverse
>>         newstatus = c._traverse(status, hideerror) and newstatus
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 895, 
>> in _traverse
>>         newstatus = self._validate()
>>       File "/Users/scott_mbp/Dropbox/web2py_uki/gluon/html.py", line 1863
>> , in _validate
>>         raise Exception(msg)
>>     Exception: Validation error, field:f_UKI_ID 
>> <gluon.validators.IS_NOT_IN_DB 
>> object at 0x10e6bfa10>
>>
>>
>> ... and the definition of the field in question:
>>
>>     Field( 'f_UKI_ID', 'integer', label="UKI ID", unique=True, required=
>> True ),
>>
>>
>>
>> (This may be due to the field also being required to be unique; when 
>> unique is not required of any empty fields, I get the behavior described 
>> below.)
>>
>> If instead I use a SQLFORM.factory, missing required fields pass 
>> validation; here is the new definition of `form`:
>>
>>     form = SQLFORM.factory( Field( 'Name', label="Name", required=True ) 
>> )
>>
>>
>>
>> Has this always been the behavior?  If so, can someone explain the 
>> rationale behind it?
>>
>> This is using Version 2.13.4-stable+timestamp.2015.12.26.04.59.39 
>>
>> - Scott Hunter
>>
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to