My application follows a book metaphor -- record with number of pages and
subrecords with consecutive page numbers.  I'm using crud.update and wish to
run a piece of code to update the total number of pages on the record and
reassign page numbers when a record is deleted to keep them consecutive.  I
created a function deletepage() to do this and set update_ondelete to call
it.  I'm also using update_next.
crud.settings.update_next = URL(...)
crud.settings.update_ondelete = deletepage()

fun deletepage():
  decrements total number of pages
  decrements page number of each page after the one deleted

The problem: update_ondelete is being called whenever edit is invoked,
regardless of whether a record has been deleted.  So, if I click edit to
edit the record, make no changes and go back with the browser back button,
deletepage() was called once.  If I click edit and then submit the form,
regardless of any changes or whether or not I've selected to delete the
record, deletepage() is called twice.

1) Is this a web2py bug with ondelete or am I not using it correctly?
2) Is there a way to check if a record has been deleted?
3) At which point in the workflow is is actually deleted from the database?
 (I tried querying the subrecord count in ondelete to get the new page count
instead of blindly decrementing, but the deleted record was still counted.)

Environment info: web2py 1.89.3 and 1.89.4 source on WinXP (from version
file within, both look to be 1.89.3 though), Chrome browser 7.0.517.44.

Thanks for any help!
Audra

Reply via email to