The pure Python version doesn't seem too bad.
def transact(call):
if not callable(call): raise TypeError
doc.BeginTransaction()
try:
try:
call()
except:
# an error occurred part way through. make sure everything
# is reverted (sort of a rollback)
doc.AbortTransaction()
finally:
doc.EndTransaction()
def something():
pass
transact(something)
---
Patrick K. O'Brien
Orbtech