Never mind. I out the problem :)
-Jim
On Thursday, August 16, 2012 2:06:28 PM UTC-5, Jim Gregory wrote:
>
> Thanks, that is helpful. But the path does not seem to be passed in the
> custom retrieve.
> Field('file','upload',
> uploadir='/path/to/folder', custom_store=lambda
> file,filename,path:store_file(file,filename,path),
> custom_retrieve=retrieve_file
>
> On Wednesday, August 8, 2012 6:51:44 AM UTC-5, Anthony wrote:
>>
>> On Wednesday, August 8, 2012 7:09:37 AM UTC-4, Jim Gregory wrote:
>>>
>>> Can custom_store and custom_retrieve take parameters when they are
>>> called using Field, e.g.:
>>> db.define_table('table',
>>> Field('file', 'upload', custom_store=store_file(file,
>>> db.table.new_filename),
>>> custom_retrieve=retrieve_file(db.table.new_filename))?
>>> Field('new_filename','string')
>>> )
>>>
>>
>> These attributes have to be callables, so you can't call them yourself.
>> To pass additional custom arguments to a callable, just turn it into a
>> lambda that takes the standard arguments and pass the additional arguments
>> to your function within the lambda:
>>
>> Field('file', 'upload',
>> custom_store=lambda file, filename, path: store_file(file, filename,path
>> , db.table.new_filename),
>> ...)
>>
>> When web2py calls the custom_store callable, it will pass three arguments
>> (file, filename, and path), so your lambda must take three arguments.
>> Within the lambda, you can then do whatever you want. You can pass any or
>> all of the standard three arguments to your custom function, and you can
>> pass additional arguments. In the example above, I passed the three
>> standard arguments followed by a fourth custom argument, though it doesn't
>> have to look like that (presumably you will at least want to pass the file
>> as an argument).
>>
>> custom_retrieve takes two standard arguments, "name" and "path".
>>
>> Anthony
>>
>>
--