Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _current_period(self):
if self._subscription:
obj = Subscription._api_retrieve(self._subscription).start_date
start_date = obj
else:
start_date = int(time.time())
end_date = datetime.fromtimestamp(start_date)
if self.plan.interval == 'day':
end_date += timedelta(days=1)
elif self.plan.interval == 'week':
end_date += timedelta(days=7)
elif self.plan.interval == 'month':
end_date += relativedelta(months=1)
elif self.plan.interval == 'year':
end_date += relativedelta(years=1)
return dict(start=start_date, end=int(end_date.timestamp()))
if tax_percent is not None:
assert default_tax_rates is None
assert type(tax_percent) is float
assert tax_percent >= 0 and tax_percent <= 100
if default_tax_rates is not None:
assert tax_percent is None
assert type(default_tax_rates) is list
assert all(type(txr) is str and txr.startswith('txr_')
for txr in default_tax_rates)
except AssertionError:
raise UserError(400, 'Bad request')
Customer._api_retrieve(customer) # to return 404 if not existant
if subscription is not None:
subscription_obj = Subscription._api_retrieve(subscription)
if default_tax_rates is not None:
default_tax_rates = [TaxRate._api_retrieve(tr)
for tr in default_tax_rates]
# All exceptions must be raised before this point.
super().__init__()
self.customer = customer
self.subscription = subscription
self.tax_percent = tax_percent
self.default_tax_rates = default_tax_rates
self.date = date
self.metadata = metadata or {}
self.payment_intent = None
self.application_fee = None
def _on_payment_success(self):
assert self.status == 'paid'
self.status_transitions['paid_at'] = int(time.time())
schedule_webhook(Event('invoice.payment_succeeded', self))
if self.subscription:
sub = Subscription._api_retrieve(self.subscription)
sub._on_initial_payment_success(self)
def _api_retrieve_subscription(cls, id, subscription_id, **kwargs):
if kwargs:
raise UserError(400, 'Unexpected ' + ', '.join(kwargs.keys()))
obj = Subscription._api_retrieve(subscription_id)
if obj.customer != id:
raise UserError(404, 'Customer ' + id + ' does not have a '
'subscription with ID ' + subscription_id)
return obj
def _api_update_subscription(cls, id, subscription_id, **data):
obj = Subscription._api_retrieve(subscription_id)
if obj.customer != id:
raise UserError(404, 'Customer ' + id + ' does not have a '
'subscription with ID ' + subscription_id)
return Subscription._api_update(subscription_id, **data)
def _on_payment_failure_later(self):
assert self.status in ('open', 'void')
if self.status == 'void':
self.status_transitions['voided_at'] = int(time.time())
schedule_webhook(Event('invoice.payment_failed', self))
if self.subscription:
sub = Subscription._api_retrieve(self.subscription)
if sub.status == 'incomplete':
sub._on_initial_payment_failure_later(self)
else:
sub._on_recurring_payment_failure(self)