*You are storing the image twice:*
*
*
*if trabalhador_form.process(onvalidation=attach_image_to_record).accepted: 
# here after validation *
*def attach_image_to_record(form):*
    ...
    photo=db.trabalhador.foto.store(temp,'foto.jpg') # here on validation
*    ... *
    form.vars.photo=photo  *# here is where someting goes wrong....*
*
*
*The problem is that you altering the form on validation.*
*
*
*
*
*This this:*
*
*
**
*def attach_image_to_record(form):*
    import cgi
    response=requests.get(form.vars.fp_url)
    img=Image.open(StringIO(response.content))
    img.save('foto1231.jpg','JPEG')
    photo = cgi.FieldStorage()
    photo.file = open('foto1231.jpg','rb')
    photo.filename = 'foto.jpg'
    form.vars.photo=photo # not this on, you let process do upload


**

This is very important for me ,
*
*
*
*
On Wednesday, 16 January 2013 07:49:30 UTC-6, Ramos wrote:
>
> I just noticed one image created in upload folder and one txt file.
> Inside the txt file i see the name of jpg file created above.
>
>
> why is that?
>
> help please :)
>
> António
>
> 2013/1/16 António Ramos <ramst...@gmail.com <javascript:>>
>
>> 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 <ramst...@gmail.com <javascript:>>
>>
>>> 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 <abas...@gmail.com <javascript:>>
>>>
>>>> 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