def session_cleanup(self, ex): try: Session.rollback() Session.expunge_all() Session.remove() except InterfaceError as ex: if not ex.connection_invalidated: logger.exception(ex) raise Session.close()
def error_handler(self, ex): try: Session.rollback() except InterfaceError as ex: if not ex.connection_invalidated: logger.exception(ex) raise logger.exception(ex) ex_type = sys.exc_info()[0] ex_tb = sys.exc_info()[2] fmt_tb = traceback.format_exception(ex_type, ex, ex_tb) encoded_tb = [unicode(l, 'utf-8') for l in fmt_tb] tb = ''.join(encoded_tb) ex.traceback = tb response = render('error.mako', request, exception=ex, status_code=500) return response
def create_guest_user(email_address, name=None, password=None): try: user = User.query.filter( User.email_address == email_address).one() except NoResultFound: Session.flush() user = User(email_address=email_address, name=name, password=password) Session.add(user) try: Session.flush() except: Session.rollback() Session.commit() Session.add(user) Session.commit() return user
def create(**kwargs): account_form = kwargs.pop('forms')[0] if account_form.validate(): user = account_form.create_user() Session.add(user) try: Session.commit() except IntegrityError: flash('This account already exists!', 'warning') Session.rollback() else: user.lookup_balanced_customer() Session.commit() session['user_guid'] = user.guid return redirect(url_for('accounts.index')) return new(account_form)
def create_guest_user(email_address, name=None, password=None): try: user = User.query.filter(User.email_address == email_address).one() except NoResultFound: Session.flush() user = User(email_address=email_address, name=name, password=password) Session.add(user) try: Session.flush() except: Session.rollback() Session.commit() Session.add(user) Session.commit() return user
def create(**kwargs): account_form = kwargs.pop("forms")[0] if account_form.validate(): user = account_form.create_user() Session.add(user) try: Session.commit() except IntegrityError: flash("This account already exists!", "warning") Session.rollback() else: user.lookup_balanced_account() Session.commit() session["user_guid"] = user.guid return redirect(url_for("accounts.index")) return new(account_form)
def update(listing, **kwargs): manager = RentalManager(request) forms = kwargs.pop('forms') purchase_form = find_form(forms, PurchaseForm) guest_purchase_form = find_form(forms, GuestPurchaseForm) card_href = request.form.get('card_href', None) name = None if request.user.is_authenticated: email_address = request.user.email else: email_address = guest_purchase_form.email.data name = guest_purchase_form.name.data try: rental = manager.rent(listing, email_address, card_href, name) except balanced.exc.HTTPError as ex: msg = 'Error debiting account, your card has not been charged "{}"' flash(msg.format(ex.message), 'error') Session.rollback() except Exception as ex: if ex.message == 'No card on file': return show(listing, purchase_form, guest_purchase_form, True) raise else: Session.commit() email.send_email(rental.buyer.email, 'Rental Receipt', 'receipt.mako', name=rental.buyer.email, listing=listing, charge=balanced.Order.fetch(rental.order_href)) session['rental_user_guid'] = rental.buyer.guid session['rental_email'] = rental.buyer.email return redirect( url_for('rent.confirmed', listing=listing, rental=rental)) return show(listing, purchase_form, guest_purchase_form)
def update(listing, **kwargs): manager = RentalManager(request) forms = kwargs.pop('forms') purchase_form = find_form(forms, PurchaseForm) guest_purchase_form = find_form(forms, GuestPurchaseForm) card_uri = request.form.get('card_uri', None) name = None if request.user.is_authenticated: email_address = request.user.email_address else: email_address = guest_purchase_form.email_address.data name = guest_purchase_form.name.data try: rental = manager.rent(listing, email_address, card_uri, name) except balanced.exc.HTTPError as ex: msg = 'Error debiting account, your card has not been charged "{}"' flash(msg.format(ex.message), 'error') Session.rollback() except Exception as ex: if ex.message == 'No card on file': return show(listing, purchase_form, guest_purchase_form, True) raise else: Session.commit() email.send_email(rental.buyer.email_address, 'Rental Receipt', 'receipt.mako', name=rental.buyer.email_address, listing=listing, charge=balanced.Transaction.find(rental.debit_uri) ) session['rental_user_guid'] = rental.buyer.guid session['rental_email_address'] = rental.buyer.email_address return redirect(url_for('rent.confirmed', listing=listing, rental=rental)) return show(listing, purchase_form, guest_purchase_form)