you upgraded, but the patch isn't there. as you may notice, the exception 
raises at the exact same line as before.

I just sent an email to Massimo to let him know that ATM the fix isn't in 
trunk

http://code.google.com/p/web2py/issues/detail?id=1547

On Thursday, June 20, 2013 4:29:51 PM UTC+2, Martin Barnard wrote:
>
> Upgraded, but the error is still there. It's failing at the SQLFORM 
> validation in dal.py, I don't even get the chance to access session 
> variables myself. Also, list:integer fields leave an empty field behind
>
> Is there a way from within the DAL to remove empty entries on list:integer 
> (as I can't rely on my users to not create empty entries when using the 
> form)?
>
> def index():
>     """
>     """
>     form=SQLFORM.factory(
>             Field('employees', 'list:integer' ),
>             )
>     my_emps=[]
>     if form.process(session=None).accepted:
>         mvars=form.vars.employees
>         if mvars:
>             response.flash=myvars
>             for a in mvars:
>                 my_emps.append(a)
>         else:
>             my_emps.append(mvars)
>
>     return dict(form=form, my_emps=my_emps)
>
>
> Error:
>
>
> Traceback (most recent call last):
>   File "/home/www-data/web2py/gluon/restricted.py", line 212, in restricted
>     exec ccode in environment
>   File 
> "/home/www-data/web2py/applications/experiment/controllers/default.py", line 
> 196, in <module>
>   File "/home/www-data/web2py/gluon/globals.py", line 194, in <lambda>
>     self._caller = lambda f: f()
>   File 
> "/home/www-data/web2py/applications/experiment/controllers/default.py", line 
> 127, in index
>     if form.process(session=None).accepted:
>   File "/home/www-data/web2py/gluon/html.py", line 2188, in process
>     self.validate(**kwargs)
>   File "/home/www-data/web2py/gluon/html.py", line 2127, in validate
>     if self.accepts(**kwargs):
>   File "/home/www-data/web2py/gluon/sqlhtml.py", line 1571, in accepts
>     self.vars.id = self.table.insert(**fields)
>   File "/home/www-data/web2py/gluon/dal.py", line 8598, in insert
>     ret =  self._db._adapter.insert(self, self._listify(fields))
>   File "/home/www-data/web2py/gluon/dal.py", line 1203, in insert
>     query = self._insert(table,fields)
>   File "/home/www-data/web2py/gluon/dal.py", line 1194, in _insert
>     values = ','.join(self.expand(v, f.type) for f, v in fields)
>   File "/home/www-data/web2py/gluon/dal.py", line 1194, in <genexpr>
>     values = ','.join(self.expand(v, f.type) for f, v in fields)
>   File "/home/www-data/web2py/gluon/dal.py", line 1376, in expand
>     return str(self.represent(expression,field_type))
>   File "/home/www-data/web2py/gluon/dal.py", line 1805, in represent
>     obj = map(int,obj)
> ValueError: invalid literal for int() with base 10: ''
>
>
>
>
>
>
>
> On Thursday, June 20, 2013 2:31:51 PM UTC+3, Martin Barnard wrote:
>>
>> That code listing is from dal.py. I didn't really want to poke too much 
>> at that as I haven't had time to examine it too deeply. 
>>
>> I should probably upgrade to latest web2py before trying anything else :)
>>
>> */scurries off to upgrade the server...*
>>
>> On Thursday, June 20, 2013 12:45:28 AM UTC+3, Niphlod wrote:
>>>
>>> it's a bug reproduceable only if you leave one empty field.
>>> BTW, you're parsing it wrong.... given a single field filled with 1234, 
>>> you get [1,2,3,4] back.
>>>
>>> you should do
>>>
>>> vars = form.vars.employees
>>> if vars:
>>>     if isinstance(vars, (list, tuple)):
>>>         for a in vars:
>>>             ids.append(a)
>>>     else:
>>>             ids.append(vars)
>>>
>>> Anyway, I'll submit an issue with the fix.
>>>
>>>>
>>>>    - 
>>>>    
>>>>    
>>>>    
>>>>    
>>>>    
>>>>    
>>>>    
>>>>

-- 

--- 
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/groups/opt_out.


Reply via email to