diff --git a/make_post_sell/models/stripe_user_shop.py b/make_post_sell/models/stripe_user_shop.py index 18dda42..d32e544 100644 --- a/make_post_sell/models/stripe_user_shop.py +++ b/make_post_sell/models/stripe_user_shop.py @@ -48,6 +48,10 @@ class StripeUserShop(RBase, Base): @property def stripe_cards(self): + # Check if Stripe is configured for this shop + if self.shop.stripe is None: + return [] + return self.shop.stripe.Customer.list_payment_methods( self.stripe_customer, type="card" )["data"] diff --git a/make_post_sell/views/billing.py b/make_post_sell/views/billing.py index 03a2f4f..e8d4ca3 100644 --- a/make_post_sell/views/billing.py +++ b/make_post_sell/views/billing.py @@ -5,6 +5,7 @@ from pyramid.httpexceptions import HTTPFound, HTTPBadRequest from . import ( user_required, shop_is_ready_required, + get_referer_or_home, ) @@ -16,6 +17,11 @@ from . import ( ) @shop_is_ready_required() def billing(request): + # Check if shop exists and has Stripe configured + if request.shop is None or request.shop.stripe is None: + request.session.flash(("This shop doesn't accept credit cards yet.", "info")) + return HTTPFound(get_referer_or_home(request)) + stripe_user_shop = request.shop.stripe_user_shop(request.user) if stripe_user_shop is None: @@ -45,6 +51,11 @@ def billing(request): @user_required() @shop_is_ready_required() def add_card(request): + # Check if shop has Stripe configured + if request.shop.stripe is None: + request.session.flash(("This shop doesn't accept credit cards yet.", "info")) + return HTTPFound(get_referer_or_home(request)) + stripe_setup_intent = request.params.get("setup_intent") stripe_setup_intent_client_secret = request.params.get("setup_intent_client_secret") @@ -89,6 +100,11 @@ def confirm_update_card(request): @user_required() @shop_is_ready_required() def update_card(request): + # Check if shop has Stripe configured + if request.shop.stripe is None: + request.session.flash(("This shop doesn't accept credit cards yet.", "info")) + return HTTPFound(get_referer_or_home(request)) + action = request.params.get("action", None) card_id = request.params.get("card_id") stripe_user_shop = request.shop.stripe_user_shop(request.user) diff --git a/make_post_sell/views/user_crypto_settings.py b/make_post_sell/views/user_crypto_settings.py index c4aa3e5..196e74d 100644 --- a/make_post_sell/views/user_crypto_settings.py +++ b/make_post_sell/views/user_crypto_settings.py @@ -5,6 +5,7 @@ from ..models.user_crypto_refund_address import ( UserCryptoRefundAddress, get_user_crypto_refund_address, ) +from ..models.meta import now_timestamp from . import user_required @@ -92,7 +93,7 @@ def user_crypto_settings_update(request): # Update existing addr_obj.address = address addr_obj.label = label if label else None - addr_obj.updated_timestamp = request.now_timestamp() + addr_obj.updated_timestamp = now_timestamp() request.session.flash((f"{coin_type} refund address updated", "success")) else: # Create new