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