🌐 Update domain configurations for www.quantumtaskai.com

- Add www.quantumtaskai.com to ALLOWED_HOSTS
- Update CSRF_TRUSTED_ORIGINS for both www and non-www domains
- Change SITE_URL to use production domain for emails
- Update Stripe fallback URLs to use www subdomain
- Change admin emails from netcop.ai to quantumtaskai.com
- Update management command URLs to production domain
- Add Email Writer agent to populate_agents script

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude 2025-07-27 10:10:46 +05:30
parent 8b23437a6e
commit 402324c03e
5 changed files with 22 additions and 13 deletions

View File

@ -23,7 +23,7 @@ class Command(BaseCommand):
if should_create_admin: if should_create_admin:
# Check if admin email already exists # Check if admin email already exists
admin_email = 'admin@netcop.ai' admin_email = 'admin@quantumtaskai.com'
if User.objects.filter(email=admin_email).exists(): if User.objects.filter(email=admin_email).exists():
self.stdout.write(f"Admin user with email {admin_email} already exists - skipping creation") self.stdout.write(f"Admin user with email {admin_email} already exists - skipping creation")
else: else:
@ -34,7 +34,7 @@ class Command(BaseCommand):
first_name='Admin', first_name='Admin',
last_name='User' last_name='User'
) )
self.stdout.write("Created superuser: admin@netcop.ai / admin123") self.stdout.write("Created superuser: admin@quantumtaskai.com / admin123")
else: else:
superuser_count = User.objects.filter(is_superuser=True).count() superuser_count = User.objects.filter(is_superuser=True).count()
self.stdout.write(f"Superuser(s) already exist ({superuser_count} found) - skipping admin creation") self.stdout.write(f"Superuser(s) already exist ({superuser_count} found) - skipping admin creation")
@ -87,6 +87,15 @@ class Command(BaseCommand):
'icon': '🔍', 'icon': '🔍',
'agent_type': 'webhook', 'agent_type': 'webhook',
}, },
{
'name': 'Email Writer',
'slug': 'email-writer',
'description': 'Generate professional emails for any purpose. Perfect for business communications, customer outreach, and personal correspondence.',
'category': 'content',
'price': 3.0,
'icon': '✉️',
'agent_type': 'api',
},
] ]
created_count = 0 created_count = 0

View File

@ -8,8 +8,8 @@ class Command(BaseCommand):
help = 'Check and fix admin user status' help = 'Check and fix admin user status'
def handle(self, *args, **options): def handle(self, *args, **options):
# Check both possible admin emails # Check both possible admin emails (preferred email first)
possible_emails = ['admin@netcop.ai', 'admin@quantumtaskai.com'] possible_emails = ['admin@quantumtaskai.com', 'admin@netcop.ai']
username = 'admin' username = 'admin'
password = 'QuantumAI2024!' password = 'QuantumAI2024!'
@ -49,7 +49,7 @@ class Command(BaseCommand):
# Show login instructions # Show login instructions
self.stdout.write("\n📝 Login Instructions:") self.stdout.write("\n📝 Login Instructions:")
self.stdout.write(f"URL: https://quantum-ai.up.railway.app/admin/") self.stdout.write(f"URL: https://www.quantumtaskai.com/admin/")
self.stdout.write(f"Email: {found_email}") self.stdout.write(f"Email: {found_email}")
self.stdout.write(f"Username: {username}") self.stdout.write(f"Username: {username}")
self.stdout.write(f"Password: {password}") self.stdout.write(f"Password: {password}")

View File

@ -65,7 +65,7 @@ class Command(BaseCommand):
self.stdout.write(f"💰 Balance: {user.wallet_balance} AED") self.stdout.write(f"💰 Balance: {user.wallet_balance} AED")
self.stdout.write("\n🎯 Login Instructions:") self.stdout.write("\n🎯 Login Instructions:")
self.stdout.write("URL: https://quantum-ai.up.railway.app/admin/") self.stdout.write("URL: https://www.quantumtaskai.com/admin/")
self.stdout.write(f"Email: {email}") self.stdout.write(f"Email: {email}")
self.stdout.write(f"Username: {username}") self.stdout.write(f"Username: {username}")
self.stdout.write(f"Password: {password}") self.stdout.write(f"Password: {password}")

View File

@ -52,12 +52,12 @@ if missing_vars:
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = config('DEBUG', default=True, cast=bool) DEBUG = config('DEBUG', default=True, cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='localhost,127.0.0.1,testserver,quantumtaskai.com').split(',') ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='localhost,127.0.0.1,testserver,quantumtaskai.com,www.quantumtaskai.com').split(',')
# Site URL configuration for emails # Site URL configuration for emails
if config('RAILWAY_ENVIRONMENT', default=''): if config('RAILWAY_ENVIRONMENT', default=''):
# Use actual Railway domain for email verification links # Use production domain for email verification links
SITE_URL = 'https://quantum-ai.up.railway.app' SITE_URL = 'https://www.quantumtaskai.com'
else: else:
SITE_URL = config('SITE_URL', default='http://localhost:8000') SITE_URL = config('SITE_URL', default='http://localhost:8000')
@ -315,8 +315,8 @@ if config('RAILWAY_ENVIRONMENT', default=''):
if railway_url and f'https://{railway_url}' not in CSRF_TRUSTED_ORIGINS: if railway_url and f'https://{railway_url}' not in CSRF_TRUSTED_ORIGINS:
CSRF_TRUSTED_ORIGINS.append(f'https://{railway_url}') CSRF_TRUSTED_ORIGINS.append(f'https://{railway_url}')
# Also add production domain # Also add production domains (both www and non-www)
CSRF_TRUSTED_ORIGINS.append('https://quantumtaskai.com') CSRF_TRUSTED_ORIGINS.extend(['https://quantumtaskai.com', 'https://www.quantumtaskai.com'])
# Railway-specific optimizations # Railway-specific optimizations
USE_X_FORWARDED_HOST = True USE_X_FORWARDED_HOST = True

View File

@ -31,8 +31,8 @@ class StripePaymentHandler:
cancel_url = request.build_absolute_uri('/wallet/top-up/cancel/') cancel_url = request.build_absolute_uri('/wallet/top-up/cancel/')
else: else:
# Fallback URLs # Fallback URLs
success_url = 'https://quantumtaskai.com/wallet/top-up/success/?session_id={CHECKOUT_SESSION_ID}' success_url = 'https://www.quantumtaskai.com/wallet/top-up/success/?session_id={CHECKOUT_SESSION_ID}'
cancel_url = 'https://quantumtaskai.com/wallet/top-up/cancel/' cancel_url = 'https://www.quantumtaskai.com/wallet/top-up/cancel/'
try: try:
logger.info(f"Creating checkout session for user {user.id}, amount: {amount} AED") logger.info(f"Creating checkout session for user {user.id}, amount: {amount} AED")