Hi Massimo, thank for the answer, I updated the code but the problem is
still there, I made several tests, no one figured out what is wrong. So
that I tried to simplify the code as follows:
db.define_table('test_img',
Field("picture", "upload",
uploadfolder=os.path.join(request.folder,'uploads','pictures'),
uploadseparate=True),
Field('created_on', 'datetime', default=request.now, writable=False)
)
def sqlform_add():
form = SQLFORM.factory(db.test_img, _class='well',
upload=URL('default', 'download'),
uploadfolder=os.path.join(request.folder,
'uploads','pictures'),
uploadseparate=True, table_name='test')
if form.process(dbio=False).accepted:
id = db.test_img.insert(**dict(form.vars))
return response.render('generic.html', dict(form=form))
def sqlform_edit():
img = db(db.test_img.id>0).select().first()
db.test_img['picture'].default = img['picture']
form = SQLFORM.factory(db.test_img, _class='well',
upload=URL('default', 'download'),
uploadfolder=os.path.join(request.folder,
'uploads','pictures'),
uploadseparate=True, table_name='test')
if form.process(dbio=False).accepted:
print 'form accepted'
return response.render('generic.html', dict(form=form))
what I got:
- adding an img with sqlform_add and then removing it with appadmin -->
worked
- adding an img with appadmin and then removing it with sqlform_edit -->
failed
- using both sqlform_add and sqlform_edit --> failed
Now I am thinking about the way I set the default value, maybe for a field
as an upload I have to set something more?
Paolo
On Thursday, December 27, 2012 9:28:54 PM UTC+1, Massimo Di Pierro wrote:
>
> perhaps not the cause of the problem but
>
> request.folder+'uploads/pictures'
>
> should be
>
> os.path.join(request.folder,'uploads','pictures')
>
> On Thursday, 27 December 2012 00:30:00 UTC-6, Paolo wrote:
>>
>> Hi Massimo,
>> I've just tried to post and then edit with both SQLFORM.factory having
>> uploadseparate but nothing has changed. The problem is still there,
>> actually I am making explicitly inserts and edits.
>> The whole SQLFORM.factory to edit a field is this:
>> for field in ['title','description', 'user_contact','picture'
>> ]:
>> db.club[field].default = club[field]
>> for field in ['name']:
>> db.cities[field].default = city[field]
>> form = SQLFORM.factory(db.club, db.cities, _class='well',
>> formstyle='bootstrap', showid= False,
>> upload=URL('default',
>> 'download'),uploadfolder
>> =request.folder+'uploads/pictures',
>> uploadseparate=True,
>> autodelete=True,table_name
>> ='club')
>>
>>
>> Paolo
>>
>>
>>
>> On Thursday, December 27, 2012 12:47:19 AM UTC+1, Massimo Di Pierro wrote:
>>>
>>> Did you upload the file first and then add uploadseparate/uploadfolder?
>>>
>>> On Wednesday, 26 December 2012 12:49:01 UTC-6, Paolo wrote:
>>>>
>>>> Hi all,
>>>> it seems to me that SQLFORM.factory doesn't honor the uploadseparate
>>>> option because I'am not able to delete the uploaded file with
>>>> SQLFORM.factory
>>>>
>>>> form = SQLFORM.factory(db.club, db.cities, _class='well',
>>>> formstyle='bootstrap', showid= False,
>>>> upload=URL('default', 'download'), uploadfolder=
>>>> request.folder+'uploads/pictures',
>>>> uploadseparate=True, autodelete=True, table_name
>>>> ='club' )
>>>>
>>>>
>>>>
>>>> The error:
>>>> Enter code here...2012-12-26 19:38:07,728 - web2py - ERROR - Traceback
>>>> (most recent call last):
>>>> File "/home/paolo/Dropbox/git/web2py/gluon/restricted.py", line 212,
>>>> in restricted
>>>> exec ccode in environment
>>>> File
>>>> "/home/paolo/Dropbox/git/web2py/applications/bikend/controllers/club.py"
>>>> , line 123, in <module>
>>>> File "/home/paolo/Dropbox/git/web2py/gluon/globals.py", line 193, in
>>>> <lambda>
>>>> self._caller = lambda f: f()
>>>> File "/home/paolo/Dropbox/git/web2py/gluon/tools.py", line 2935, in f
>>>> return action(*a, **b)
>>>> File
>>>> "/home/paolo/Dropbox/git/web2py/applications/bikend/controllers/club.py"
>>>> , line 35, in modal
>>>> d = {'form':club_form(c_id=club_id)}
>>>> File
>>>> "/home/paolo/Dropbox/git/web2py/applications/bikend/controllers/club.py"
>>>> , line 103, in club_form
>>>> if form.process(dbio=False).accepted:
>>>> File "/home/paolo/Dropbox/git/web2py/gluon/html.py", line 2179, inprocess
>>>> self.validate(**kwargs)
>>>> File "/home/paolo/Dropbox/git/web2py/gluon/html.py", line 2118,
>>>> invalidate
>>>> if self.accepts(**kwargs):
>>>> File "/home/paolo/Dropbox/git/web2py/gluon/sqlhtml.py", line 1408,
>>>> inaccepts
>>>> source_file = open(f, 'rb')
>>>> IOError: [Errno 2] No such file or directory:
>>>> '/home/paolo/Dropbox/git/web2py/applications/bikend/club.picture.a4bd97789f289bcc.6c6f676f322e706e67.png'
>>>>
>>>> It tries to remove the file in the wrong directory. The right one would
>>>> be:
>>>> <cod...
>>>> Show
>>>> original<https://groups.google.com/group/web2py/msg/ff7178943040387c?dmode=source&output=gplain&noredirect>
>>>>
>>>
--