# management/commands/create_plans.py from decimal import Decimal from django.db.models import Q 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() three_users_quota = Quota.objects.create(name='3 users', codename='3 users', unit='number') five_users_quota = Quota.objects.create(name='5 users', codename='5 users', unit='number') ten_users_quota = Quota.objects.create(name='10 users', codename='10 users', 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=three_users_quota, value=3) PlanQuota.objects.create(plan=pro_plan, quota=five_users_quota, value=5) PlanQuota.objects.create(plan=enterprise_plan, quota=ten_users_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(plan=basic_plan, name='Monthly', period=30) pro_pricing = Pricing.objects.create(plan=pro_plan, name='Monthly', period=30) enterprise_pricing = Pricing.objects.create(plan=enterprise_plan, 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'))