pretix-stripe2/pretix_stripe2/management/commands/stripe_connect_fill_countri...

36 lines
1.4 KiB
Python

import stripe
from django.core.management.base import BaseCommand
from django_scopes import scopes_disabled
from pretix.base.models import Event
from pretix.base.settings import GlobalSettingsObject
class Command(BaseCommand):
help = "Detect country for Stripe Connect accounts connected with pretix 2.0 (required for payment request buttons)"
@scopes_disabled()
def handle(self, *args, **options):
cache = {}
gs = GlobalSettingsObject()
api_key = gs.settings.payment_stripe_connect_secret_key or gs.settings.payment_stripe_connect_test_secret_key
if not api_key:
self.stderr.write(self.style.ERROR("Stripe Connect is not set up!"))
return
for e in Event.objects.filter(plugins__icontains="pretix_stripe2"):
uid = e.settings.payment_stripe_connect_user_id
if uid and not e.settings.payment_stripe_merchant_country:
if uid in cache:
e.settings.payment_stripe_merchant_country = cache[uid]
else:
try:
account = stripe.Account.retrieve(
uid,
api_key=api_key
)
except Exception as e:
print(e)
else:
e.settings.payment_stripe_merchant_country = cache[uid] = account.get('country')