2020-09-04 17:56:10 +10:00
|
|
|
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
|
|
|
|
|
2020-09-04 17:58:25 +10:00
|
|
|
for e in Event.objects.filter(plugins__icontains="pretix_stripe2"):
|
2020-09-04 17:56:10 +10:00
|
|
|
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')
|