Files
2025-05-20 11:57:43 -04:00

70 lines
1.5 KiB
Python

import click
from snakeeyes.app import create_app
from snakeeyes.extensions import db
from snakeeyes.blueprints.billing.gateways.stripecom import Plan as PaymentPlan
# Create an app context for the database connection.
app = create_app()
db.app = app
@click.group()
def cli():
""" Perform various tasks with Stripe's API. """
pass
@click.command()
def sync_plans():
"""
Sync (upsert) STRIPE_PLANS to Stripe.
:return: None
"""
if app.config['STRIPE_PLANS'] is None:
return None
for _, value in app.config['STRIPE_PLANS'].items():
plan = PaymentPlan.retrieve(value.get('id'))
if plan:
PaymentPlan.update(id=value.get('id'),
name=value.get('name'),
metadata=value.get('metadata'),
statement_descriptor=value.get(
'statement_descriptor'))
else:
PaymentPlan.create(**value)
return None
@click.command()
@click.argument('plan_ids', nargs=-1)
def delete_plans(plan_ids):
"""
Delete 1 or more plans from Stripe.
:return: None
"""
for plan_id in plan_ids:
PaymentPlan.delete(plan_id)
return None
@click.command()
def list_plans():
"""
List all existing plans on Stripe.
:return: Stripe plans
"""
click.echo(PaymentPlan.list())
cli.add_command(sync_plans)
cli.add_command(delete_plans)
cli.add_command(list_plans)