124 lines
4.6 KiB
Python
124 lines
4.6 KiB
Python
# management/commands/create_plans.py
|
|
from decimal import Decimal
|
|
from django.core.management.base import BaseCommand
|
|
from plans.models import Plan, Quota, PlanQuota, Pricing, PlanPricing
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Create basic subscription plans structure"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
"--reset",
|
|
action="store_true",
|
|
help="Delete existing plans and quotas before creating new ones",
|
|
)
|
|
|
|
def handle(self, *args, **options):
|
|
# Plan.objects.all().delete()
|
|
# Quota.objects.all().delete()
|
|
# PlanQuota.objects.all().delete()
|
|
# Pricing.objects.all().delete()
|
|
# PlanPricing.objects.all().delete()
|
|
# UserPlan.objects.all().delete()
|
|
# Order.objects.all().delete()
|
|
# BillingInfo.objects.all().delete()
|
|
|
|
users_quota = Quota.objects.create(
|
|
name="Users", codename="Users", unit="number"
|
|
)
|
|
cars_quota = Quota.objects.create(name="Cars", codename="Cars", unit="number")
|
|
# Create plans
|
|
basic_plan = Plan.objects.create(
|
|
name="Basic", description="basic plan", available=True, visible=True
|
|
)
|
|
pro_plan = Plan.objects.create(
|
|
name="Pro", description="Pro plan", available=True, visible=True
|
|
)
|
|
enterprise_plan = Plan.objects.create(
|
|
name="Enterprise",
|
|
description="Enterprise plan",
|
|
available=True,
|
|
visible=True,
|
|
)
|
|
|
|
# Assign quotas to plans
|
|
PlanQuota.objects.create(plan=basic_plan, quota=users_quota, value=4)
|
|
PlanQuota.objects.create(plan=basic_plan, quota=cars_quota, value=4)
|
|
|
|
PlanQuota.objects.create(plan=pro_plan, quota=users_quota, value=5)
|
|
PlanQuota.objects.create(plan=pro_plan, quota=cars_quota, value=5)
|
|
|
|
PlanQuota.objects.create(plan=enterprise_plan, quota=users_quota, value=10)
|
|
PlanQuota.objects.create(plan=enterprise_plan, quota=cars_quota, value=10)
|
|
|
|
# PlanQuota.objects.create(plan=pro_plan, quota=project_quota, value=50)
|
|
# PlanQuota.objects.create(plan=pro_plan, quota=storage_quota, value=100)
|
|
|
|
# Define pricing
|
|
basic_pricing = Pricing.objects.create(name="Monthly", period=30)
|
|
pro_pricing = Pricing.objects.create(name="Monthly", period=30)
|
|
enterprise_pricing = Pricing.objects.create(name="Monthly", period=30)
|
|
|
|
PlanPricing.objects.create(
|
|
plan=basic_plan, pricing=basic_pricing, price=Decimal("9.99")
|
|
)
|
|
PlanPricing.objects.create(
|
|
plan=pro_plan, pricing=pro_pricing, price=Decimal("19.99")
|
|
)
|
|
PlanPricing.objects.create(
|
|
plan=enterprise_plan, pricing=enterprise_pricing, price=Decimal("29.99")
|
|
)
|
|
|
|
# # Create quotas
|
|
# project_quota = Quota.objects.create(name='projects', codename='projects', unit='projects')
|
|
# storage_quota = Quota.objects.create(name='storage', codename='storage', unit='GB')
|
|
|
|
# # Create plans
|
|
# basic_plan = Plan.objects.create(name='Basic', description='Basic plan', available=True, visible=True)
|
|
# pro_plan = Plan.objects.create(name='Pro', description='Pro plan', available=True, visible=True)
|
|
|
|
# # Assign quotas to plans
|
|
# PlanQuota.objects.create(plan=basic_plan, quota=project_quota, value=5)
|
|
# PlanQuota.objects.create(plan=basic_plan, quota=storage_quota, value=10)
|
|
|
|
# PlanQuota.objects.create(plan=pro_plan, quota=project_quota, value=50)
|
|
# PlanQuota.objects.create(plan=pro_plan, quota=storage_quota, value=100)
|
|
|
|
# # Define pricing
|
|
|
|
# basic = Pricing.objects.create(name='Monthly', period=30)
|
|
# pro = Pricing.objects.create(name='Monthly', period=30)
|
|
|
|
# basic_pricing = PlanPricing.objects.create(plan=basic_plan, pricing=basic, price=Decimal('19.99'))
|
|
# pro_pricing = PlanPricing.objects.create(plan=pro_plan, pricing=pro, price=Decimal('29.99'))
|
|
# Create users
|
|
|
|
# user = User.objects.first()
|
|
|
|
# # Create user plans
|
|
# billing_info = BillingInfo.objects.create(
|
|
# user=user,
|
|
# tax_number='123456789',
|
|
# name='John Doe',
|
|
# street='123 Main St',
|
|
# zipcode='12345',
|
|
# city='Anytown',
|
|
# country='US',
|
|
# )
|
|
|
|
# order = Order.objects.create(
|
|
# user=user,
|
|
# plan=pro_plan,
|
|
# pricing=pro_pricing,
|
|
# amount=pro_pricing.price,
|
|
# currency="SAR",
|
|
# )
|
|
|
|
# UserPlan.objects.create(
|
|
# user=user,
|
|
# plan=pro_plan,
|
|
# expire=timezone.now() + timedelta(days=2),
|
|
# active=True,
|
|
# )
|