134 lines
4.2 KiB
Python
134 lines
4.2 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
Script to import/update the 3 plans (Starter, Growth, Scale) with the provided data.
|
|
"""
|
|
import os
|
|
import django
|
|
import sys
|
|
|
|
# Setup Django
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'igny8_core.settings')
|
|
django.setup()
|
|
|
|
from igny8_core.auth.models import Plan
|
|
from decimal import Decimal
|
|
|
|
# Plan data from user
|
|
PLANS_DATA = [
|
|
{
|
|
"name": "Starter",
|
|
"slug": "starter",
|
|
"price": 89,
|
|
"max_keywords": 500,
|
|
"max_clusters": 100,
|
|
"max_content_ideas": 300,
|
|
"monthly_word_count_limit": 120000,
|
|
"monthly_ai_credit_limit": 1000,
|
|
"monthly_image_count": 120,
|
|
"daily_content_tasks": 10,
|
|
"daily_ai_request_limit": 50,
|
|
"daily_image_generation_limit": 25,
|
|
"included_credits": 1000,
|
|
"extra_credit_price": 0.10,
|
|
"max_sites": 3,
|
|
"max_users": 5,
|
|
"image_model_choices": ["hidream"],
|
|
"features": ["ai_writer", "image_gen"]
|
|
},
|
|
{
|
|
"name": "Growth",
|
|
"slug": "growth",
|
|
"price": 139,
|
|
"max_keywords": 1000,
|
|
"max_clusters": 200,
|
|
"max_content_ideas": 600,
|
|
"monthly_word_count_limit": 240000,
|
|
"monthly_ai_credit_limit": 2000,
|
|
"monthly_image_count": 240,
|
|
"daily_content_tasks": 20,
|
|
"daily_ai_request_limit": 100,
|
|
"daily_image_generation_limit": 50,
|
|
"included_credits": 2000,
|
|
"extra_credit_price": 0.08,
|
|
"max_sites": 10,
|
|
"max_users": 10,
|
|
"image_model_choices": ["dalle3", "hidream"],
|
|
"features": ["ai_writer", "image_gen", "auto_publish"]
|
|
},
|
|
{
|
|
"name": "Scale",
|
|
"slug": "scale",
|
|
"price": 229,
|
|
"max_keywords": 2000,
|
|
"max_clusters": 400,
|
|
"max_content_ideas": 1200,
|
|
"monthly_word_count_limit": 480000,
|
|
"monthly_ai_credit_limit": 4000,
|
|
"monthly_image_count": 500,
|
|
"daily_content_tasks": 40,
|
|
"daily_ai_request_limit": 200,
|
|
"daily_image_generation_limit": 100,
|
|
"included_credits": 4000,
|
|
"extra_credit_price": 0.06,
|
|
"max_sites": 25,
|
|
"max_users": 25,
|
|
"image_model_choices": ["dalle3", "hidream"],
|
|
"features": ["ai_writer", "image_gen", "auto_publish", "custom_prompts"]
|
|
}
|
|
]
|
|
|
|
|
|
def import_plans():
|
|
"""Import or update plans with the provided data."""
|
|
print("Starting plan import/update...")
|
|
|
|
for plan_data in PLANS_DATA:
|
|
slug = plan_data['slug']
|
|
|
|
# Convert price to Decimal
|
|
plan_data['price'] = Decimal(str(plan_data['price']))
|
|
plan_data['extra_credit_price'] = Decimal(str(plan_data['extra_credit_price']))
|
|
|
|
# Get or create plan
|
|
plan, created = Plan.objects.get_or_create(
|
|
slug=slug,
|
|
defaults=plan_data
|
|
)
|
|
|
|
if created:
|
|
print(f"✅ Created new plan: {plan.name}")
|
|
else:
|
|
# Update existing plan
|
|
print(f"🔄 Updating existing plan: {plan.name}")
|
|
for key, value in plan_data.items():
|
|
setattr(plan, key, value)
|
|
plan.save()
|
|
print(f"✅ Updated plan: {plan.name}")
|
|
|
|
# Print plan details
|
|
print(f" - Price: ${plan.price}")
|
|
print(f" - Max Sites: {plan.max_sites}")
|
|
print(f" - Max Users: {plan.max_users}")
|
|
print(f" - Max Keywords: {plan.max_keywords}")
|
|
print(f" - Max Clusters: {plan.max_clusters}")
|
|
print(f" - Max Content Ideas: {plan.max_content_ideas}")
|
|
print(f" - Monthly AI Credits: {plan.monthly_ai_credit_limit}")
|
|
print(f" - Daily AI Request Limit: {plan.daily_ai_request_limit}")
|
|
print(f" - Daily Image Generation Limit: {plan.daily_image_generation_limit}")
|
|
print(f" - Features: {', '.join(plan.features)}")
|
|
print()
|
|
|
|
print("✅ Plan import/update completed successfully!")
|
|
print(f"\nTotal plans in database: {Plan.objects.count()}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
import_plans()
|
|
except Exception as e:
|
|
print(f"❌ Error importing plans: {e}", file=sys.stderr)
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1)
|
|
|