can onvalidation set upload  file field?

i was complaining that form.vars was empty.
It is if the controller does not return the form to the view
So i return the form and away with my quest.

Now, in onvalidation i set  the field with the upload file.
I have to becaue i have a different upload button that goes online to get a
file.
Its working but the image file i set goes as a txt file to the database, why


here my code:
(I use PIL module)

*if trabalhador_form.process(onvalidation=attach_image_to_record).accepted:*

*def attach_image_to_record(form):*

    response=requests.get(form.vars.fp_url)
    img=Image.open(StringIO(response.content))
    img.save('foto1231.jpg','JPEG')
    temp=open('foto1231.jpg','rb')
    photo=db.trabalhador.foto.store(temp,'foto.jpg')
*    print photo   # echoes something like
"trabalhador.foto.989708787087078.9823492034.jpg*
    form.vars.photo=photo  *# here is where someting goes wrong....*

This is very important for me ,
can anyone explain why a jpg is inserted as a txt? how to force jpg ?

Thank you
António


2013/1/15 António Ramos <[email protected]>

> I´m testing this book example
> http://web2py.com/books/default/chapter/29/07#onvalidation
> I get error on field named 'a'
>
>
> Traceback (most recent call last):
>   File "C:\web2pyGit\web2py\gluon\restricted.py", line 212, in restricted
>
>
>     exec ccode in environment
>   File "C:/web2pyGit/web2py/applications/teste1/models/db.py" 
> <http://127.0.0.1:8000/admin/default/edit/teste1/models/db.py>, line 91, in 
> <module>
>
>
>     Field('c', 'integer', readable=False, writable=False))
>
>
>   File "C:\web2pyGit\web2py\gluon\dal.py", line 7189, in define_table
>
>
>     table = self.lazy_define_table(tablename,*fields,**args)
>
>
>   File "C:\web2pyGit\web2py\gluon\dal.py", line 7206, in lazy_define_table
>
>
>     table = table_class(self, tablename, *fields, **args)
>
>
>   File "C:\web2pyGit\web2py\gluon\dal.py", line 7612, in __init__
>
>
>     db.check_reserved_keyword(field_name)
>
>
>   File "C:\web2pyGit\web2py\gluon\dal.py", line 6933, in 
> check_reserved_keyword
>
>
>     'invalid table/column name "%s" is a "%s" reserved SQL keyword' % (name, 
> backend.upper()))
>
> SyntaxError: invalid table/column name "a" is a "ALL" reserved SQL keyword
>
>
> So i renamed all to a1,b1,c1 and it works !
>
> Now my initial complain is still not working. I will test tomorrow and
> post some code.
> Meanwhile please check why a is not a valid field name and update the book
> if necessary.
> thank you
>
> 2013/1/15 Anthony <[email protected]>
>
>> form.vars should work. Can you show more code? Note, form.request_vars is
>> simply a copy of the original request.post_vars, so not equivalent to
>> form.vars.
>>
>> Anthony
>>
>>
>> On Tuesday, January 15, 2013 10:17:08 AM UTC-5, Ramos wrote:
>>>
>>> hello reading the book online i tried the code
>>>
>>>
>>> def my_form_processing(form):
>>>     c = form.vars.a
>>>
>>>     form.vars.b
>>>     if c < 0:
>>>         form.errors.b = 'a'
>>>     else:
>>>         form.vars.c = c
>>>
>>>
>>>
>>> but form.vars was empty
>>>
>>> to access my form vars i changed to form.request_vars
>>>
>>> *Is the book wrong?*
>>>
>>> Thank you
>>> António
>>>
>>  --
>>
>>
>>
>>
>
>

-- 



Reply via email to