Пример #1
0
 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()
Пример #2
0
 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()
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
 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
Пример #6
0
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)
Пример #7
0
 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
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)