47 lines
2.4 KiB
Python
47 lines
2.4 KiB
Python
# 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')) |