in_row['f_file_xplatform'].retrieve(nameonly=True)

should be

  db.t_products.f_file_xplatform.retrieve(
in_row['f_file_xplatform'],nameonly=True)

retrieve is a property of the field, not the value.

Anyway, you do not want to recompute the md5 every time the record is 
updaded. Only when a new file is uploaded.

if request.vars.f_file_xplatform:
      db.t_products.f_file_xplatform_download_name.compute=lambda r: 
download_name(r,"XPLATFORM")
else:
      db.t_products.f_file_xplatform_download_name.writable = False





On Thursday, 28 March 2013 06:32:19 UTC-5, smoggy wrote:
>
> Hello folks,
>
> So i want to generate a md5 hash of uploaded files. How can this be done ? 
> here is my attempt
>
> with the following code i get
>
> AttributeError: 'str' object has no attribute 'retrieve'
>
> So obviously the row elements are not Field type, and since i'm a python 
> newbie i couldn't figure this. Can anybody tip me on this ?
>
>
> def md5_for_file(f):
>     ...     
>     return md5.digest()
>
> db.define_table('t_products',
>  Field('id','id'),
>  Field('f_file_xplatform', type='upload'),
>  Field('f_file_xplatform_hash', type='string',label=T('Source File Hash')),
>  Field('f_file_xplatform_download_name', 'string', compute=lambda r: 
> download_name(r,"XPLATFORM")),
> )
>
> def download_name(in_row,in_os):
>     try:
>         tt_row = in_row['f_file_xplatform'].retrieve(nameonly=True)
>         print "tt_row:  " + tt_row
>         t_md5 = md5_for_file(tt_row[1])
>         in_row['f_file_xplatform_hash']=t_md5
>         return 'blabla.'+t_md5
>         
>     except Exception, e:
>         import traceback
>         print traceback.format_exc()
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to