If you want want to interact with a database table why use SQLFORM.factory and not simply SQLFORM?
On Monday, 21 January 2013 15:25:07 UTC-6, Ramos wrote: > > Thank you Massimo, you are always available to help. Where is Bill Gates > when we need it right? > > I restarted web2py and it works.... > > Strange.... > > Second question. > as i am using sqlform.factory to add records how to use it also to update > or delete? > > > Thank YOU again! > > António > > > 2013/1/21 Massimo Di Pierro <massimo....@gmail.com <javascript:>> > >> Here is my test. >> >> $ python web2py.py -S welcome >> (InteractiveConsole) >> >>> import sys >> >>> form = SQLFORM.factory(Field('name')) >> >>> form.process(onvalidation=lambda >> form:sys.stdout.write('check!\n'),formname=None,session=None) >> check! >> >> It works. Something else is wrong in your code. If you could post a >> complete example we can try help you debug it. >> >> Massimo >> >> >> >> >> On Monday, 21 January 2013 12:03:11 UTC-6, Ramos wrote: >> >>> Sorry for insisting, >>> >>> I ´m using onvalidation in sqlform but if i use it in sqlform.factory i >>> get a flash message >>> Errors in Form. Please check it out!!! >>> >>> *Secondly* >>> as i am using sqlform.factory to add records how to use it also to >>> update or delete? >>> >>> Thank you >>> António >>> >>> 2013/1/21 Massimo Di Pierro <massimo....@gmail.com> >>> >>> yes. >>>> >>>> >>>> On Monday, 21 January 2013 11:35:00 UTC-6, Ramos wrote: >>>> >>>>> 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....@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.**stor****e(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.**var****s.fp_url) >>>>>> img=Image.open(StringIO(**respon****se.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.**var****s.fp_url) >>>>>>>> img=Image.open(StringIO(**respon****se.content)) >>>>>>>> img.save('foto1231.jpg','JPEG'******) >>>>>>>> temp=open('foto1231.jpg','rb') >>>>>>>> photo=db.trabalhador.foto.**stor****e(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/**defaul****t/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\**res****tricted.py", line 212, in >>>>>>>>> restricted >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> exec ccode in environment >>>>>>>>> File "C:/web2pyGit/web2py/**applicati****ons/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 >>>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> -- >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>> >>>> >>>> >>>> >>> >>> -- >> >> >> >> > > --