web2py wraps each request in a single transaction by default, so if you make multiple inserts during a request and the request ultimately fails due to an error, the inserts should be rolled back automatically. See http://web2py.com/books/default/chapter/29/4#Workflow and http://web2py.com/books/default/chapter/29/6#commit-and-rollback.
Anthony On Friday, December 23, 2011 1:22:34 PM UTC-5, Detectedstealth wrote: > > I have solved these kinds of concerns with pyramid based applications > using sqlalchemy. However I need to look into the core of how Web2py > handles things to figure out the best way. > > Sqlachemy allows you to put everything in: > 1) Transactions > 2) Sessions > > So on submit you first create the parent record: > ad = Ad(....) > session.add(ad) > session.flush() > > Now you have access to ad.id (parent id) > > report = Report(...) > report.ad_id = ad.id > session.add(report) > > Now if you used Sqlachemy relationships > ad.reports.append(report) # use this instead of report.ad_id = ad.id > session.flush() > > Or in the case of having multiple children created before creating the > parent on a web form. You just submit all the form data at once and loop > through all reports. > > ad = Ad(...) > session.add(ad) > session.flush() > > get list of all reports in form submit > for report in reports: > session.add(report) > ad.reports.append(report) > session.flush() > > If anything fails the transaction automatically roles everything back. > > Or a easier solution is to only enable the children on edits. So you first > create the parent, then you can view/edit/delete children on the parent > edit page. > > -- > Regards, > Bruce > > On Fri, Dec 23, 2011 at 10:00 AM, Cliff <cjk...@gmail.com> wrote: > >> Bruce, you are more brave than me ;) >> >> I always like to get the parent record committed in the database >> before adding child records. >> >> that way you know the ID of the parent record and it has the minimal >> required fieldset safely saved away. If there's a session >> interruption you don't have some potential orphan child records >> floating around somewhere. >> >> If you've solved those kinds of concerns, please share it with us. >> >> Thanks, >> Cliff Kachinske >> >> On Dec 23, 10:34 am, DenesL <dene...@yahoo.ca> wrote: >> > On Dec 23, 10:11 am, Bruce Wade <bruce...@gmail.com> wrote: >> > >> > > Anyway which files should I start looking at to see how I can >> implement >> > > this functionality for myself and anyone else who wants it? >> > >> > Look for controller appadmin under your or any other app folder. >> > > > > -- > -- > Regards, > Bruce Wade > http://ca.linkedin.com/in/brucelwade > http://www.wadecybertech.com > http://www.warplydesigned.com > http://www.fitnessfriendsfinder.com >