The cascading delete is handled by the database, so the web2py DAL is not executing the delete from the db.allegato table and therefore doesn't have the opportunity to run the _before_delete and _after_delete callbacks (the former is used to autodelete uploaded files).
I suppose you could create a _before_delete callback on the db.prodotto table that does the file deleting. Maybe we could build this in to the default _before_delete callbacks for tables -- it would check the _referenced_by fields for ondelete='CASCADE', then check the referring table for upload fields with autodelete=True, and then delete the associated files (or maybe just run the _before_delete callback of the referring table). You can post an issue on Google Code and reference this thread. In the documentation, we should probably note that the _before_delete and _after_delete callbacks of a table will not be run when the delete happens in the database as the result of a cascade. Anthony On Wednesday, January 15, 2014 4:26:47 AM UTC-5, maurizio wrote: > > Hi all, > probably due to my incompetence I have the following problem, > Thank's in advance anyone who wants to help me. > > consider the following code: > > ''' > db.define_table('prodotto', > Field('nome'), > format='%(nome)s', > plural='prodotti') > > db.define_table('allegato', > Field('descrizione',requires=IS_NOT_EMPTY()), > Field('documento','upload',autodelete=True), > Field('prodotto','reference > prodotto',writable=False,readable=False), > format='%(descrizione)s', > plural='allegati') > > def index(): > grid = SQLFORM.smartgrid(db.prodotto, > deletable=True, > editable=True, > create=True, > csv=False) > return dict(grid=grid) > > web2py 2.7.4-stable+timestamp.2013.10.14.15.16.29 > (Running on Rocket 1.2.6, Python 2.7.3) Debian 7.2 (wheezy) > ''' > > Deleting a record from the "allegato" table, also delete the corresponding > file (autodelete=True) in the default /uploads folder. > Deleting a record from the "prodotto" master table, also delete all > records in the "allegato" detail table (CASCADE delete), but files in the > folder uploads are not erased. > > Any idea? > > thanks again > Maurizio > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- 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.