can onvalidation be used with sqlform.factory ?

i´m getting error

Errors in Form. Please check it out!!!


Thank you


António

2013/1/17 Massimo Di Pierro <massimo.dipie...@gmail.com>

> *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>
>>
>>>  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>
>>>
>>>> I´m testing this book example
>>>> http://web2py.com/books/**default/chapter/29/07#**onvalidation<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(tablena**me,*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(fiel**d_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>
>>>>
>>>> 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