Looking into this. Can you confirm the problem is isolated to uploads on 
GAE when using SQLFORM.factory(...) with more than one table in the 
arguments?

On Tuesday, 21 August 2012 13:19:47 UTC-5, JungHyun Kim wrote:
>
>
> I found a work around to solve this problem
>
> I added these 3 lines after form accepted
>
>                 if request.env.web2py_runtime_gae:
>                     request.vars.file.file.seek(0)
>                     form.vars.file_blob = request.vars.file.file.read()
>
>
> Cause file_blob was None, I just set it.
>
> This thread was helpful.
>
> https://groups.google.com/forum/?fromgroups=#!search/%5Bweb2py%5D$20Re:$20Uploading$20Excel$20and$20reading$20from$20it/web2py/3wKcHVPBFI0/IobcR5OGcu8J
>
>
>
> 2012년 8월 21일 화요일 오후 2시 13분 37초 UTC+9, JungHyun Kim 님의 말:
>>
>>
>> I opend the ticket.
>>
>>  Issue 948 
>> <http://code.google.com/p/web2py/issues/detail?id=948>:SQLFORM.factory 
>> + Multiple Tables + Upload Field + GAE Blob Problem
>> Thank you Massimo.
>>
>> 2012년 8월 21일 화요일 오후 12시 25분 57초 UTC+9, Massimo Di Pierro 님의 말:
>>>
>>> Please open a ticket about this.
>>>
>>> On Monday, 20 August 2012 11:49:14 UTC-5, JungHyun Kim wrote:
>>>>
>>>> Hello!
>>>>
>>>> I have a problem with upload field.
>>>>
>>>> I tried to upload a file through one form with two tables using 
>>>> SQLFORM.factory.
>>>> It worked OK on web2py rocket server. But with GAE server (both local 
>>>> test server and real GAE server), I can't upload files.
>>>> The problem is blob is None after uploaded.
>>>>
>>>> I defined two tables.
>>>>
>>>>
>>>>
>>>> db.define_table('mibmessage',
>>>>                     Field('user',db.auth_user,writable=False,readable=
>>>> False,default=auth.user_id,),
>>>>                     Field('message','text',notnull=True,
>>>>                             widget = lambda field, value: SQLFORM.
>>>> widgets.text.widget(field, value, _class='my-string')),
>>>>                     Field('attached_files','list:reference 
>>>> attached_file', writable=False, default=[], readable=False),
>>>>                 )
>>>>
>>>> db.define_table('attached_file',
>>>>                     Field('file','upload'),
>>>>                     Field('original_filename', writable=False, notnull=
>>>> False),
>>>>                     Field('mibmessage',db.mibmessage),
>>>>                 )
>>>>
>>>>
>>>>
>>>> And in controller, I saved them.
>>>>
>>>>    # Make a form
>>>>     form =  SQLFORM.factory(db.mibmessage, db.attached_file, table_name
>>>> ='attached_file')
>>>>     
>>>>     # Save New Message
>>>>     if form.process().accepted:
>>>>         try:
>>>>             # Insert a message
>>>>             message_id = db.mibmessage.insert(**db.mibmessage.
>>>> _filter_fields(form.vars))
>>>>             form.vars.mibmessage=message_id
>>>>             
>>>>             if form.vars.file != '':
>>>>                 form.vars.original_filename = request.vars.file.
>>>> filename
>>>>                 # Insert an attached file
>>>>                 image_file_id = db.attached_file.insert(**db.
>>>> attached_file._filter_fields(form.vars))
>>>>                
>>>>                 # The message has a list of attached files
>>>>                 db.mibmessage[message_id].update_record(attached_files
>>>> =[image_file_id])
>>>>                 db.commit()
>>>>
>>>>         except Exception:
>>>>             db.rollback()
>>>>
>>>>
>>>> After uploaded, both rows are created. But  'file_blob' field of the 
>>>> 'attached_file' is None.
>>>>
>>>> If I upload an file using SQLFORM with single table (attached_file), it 
>>>> is OK.
>>>>
>>>> Did I use SQLFORM.factory wrong?
>>>>
>>>> I read this thread ( 
>>>> https://groups.google.com/forum/?fromgroups#!searchin/web2py/SQLFORM.factory$20one$20form$20multiple$20tables$20blob/web2py/O6D1J8h_MNA/lmFbEF1XzWcJ%5B1-25%5D),
>>>>  
>>>> but I couldn't understand it. 
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>

-- 



Reply via email to