2025-05-05 14:52:54 +03:00

108 lines
4.6 KiB
Python

# management/commands/create_plans.py
from decimal import Decimal
from datetime import timedelta
from django.db.models import Q
from django.utils import timezone
from plans.quota import get_user_quota
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from plans.models import Plan, Quota, PlanQuota, Pricing, PlanPricing,UserPlan,Order,BillingInfo,AbstractOrder
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()
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(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,
# )