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 >>>>>> >>>>> -- >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> >> -- > > > > --