quantum-ai-v3/agent_base/management/commands/populate_agents.py
Claude 8516f23ebc 🔐 Update admin password to strong password
- Replace weak 'admin123' with strong password in populate_agents.py
- Update check_admin.py and reset_admin.py to use same strong password
- Ensure consistent secure password across all admin management commands
- Improved security for production admin accounts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 10:21:39 +05:30

127 lines
5.1 KiB
Python

from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model
from agent_base.models import BaseAgent
User = get_user_model()
class Command(BaseCommand):
help = 'Populate the database with default agents and create admin user'
def add_arguments(self, parser):
parser.add_argument(
'--create-admin',
action='store_true',
help='Force create admin user even if superusers exist',
)
def handle(self, *args, **options):
self.stdout.write("Checking admin user...")
# Only create admin if explicitly requested or no superusers exist
should_create_admin = options.get('create_admin', False) or not User.objects.filter(is_superuser=True).exists()
if should_create_admin:
# Check if admin email already exists
admin_email = 'admin@quantumtaskai.com'
if User.objects.filter(email=admin_email).exists():
self.stdout.write(f"Admin user with email {admin_email} already exists - skipping creation")
else:
User.objects.create_superuser(
username='admin',
email=admin_email,
password='P9cKE9G$R%ni#p',
first_name='Admin',
last_name='User'
)
self.stdout.write("Created superuser: admin@quantumtaskai.com / P9cKE9G$R%ni#p")
else:
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("Creating default agents...")
agents_data = [
{
'name': 'Weather Reporter',
'slug': 'weather-reporter',
'description': 'Get real-time weather information for any location worldwide. Provides current conditions, forecasts, and detailed weather reports.',
'category': 'utilities',
'price': 2.0,
'icon': '🌤️',
'agent_type': 'api',
},
{
'name': 'Data Analyzer',
'slug': 'data-analyzer',
'description': 'Analyze and extract insights from your data files. Supports PDF, CSV, and text analysis with AI-powered insights.',
'category': 'analytics',
'price': 5.0,
'icon': '📊',
'agent_type': 'webhook',
},
{
'name': 'Job Posting Generator',
'slug': 'job-posting-generator',
'description': 'Create professional job postings with AI assistance. Generate compelling job descriptions that attract the right candidates.',
'category': 'content',
'price': 3.0,
'icon': '💼',
'agent_type': 'webhook',
},
{
'name': 'Social Ads Generator',
'slug': 'social-ads-generator',
'description': 'Generate engaging social media advertisements. Create compelling ad copy for various platforms to boost your marketing campaigns.',
'category': 'marketing',
'price': 4.0,
'icon': '📱',
'agent_type': 'webhook',
},
{
'name': '5 Whys Analysis Agent',
'slug': 'five-whys-analyzer',
'description': 'Systematic root cause analysis using the proven 5 Whys methodology to identify and solve business problems effectively.',
'category': 'analytics',
'price': 8.0,
'icon': '🔍',
'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
updated_count = 0
for agent_data in agents_data:
agent, created = BaseAgent.objects.get_or_create(
slug=agent_data['slug'],
defaults=agent_data
)
if created:
created_count += 1
self.stdout.write(f"Created: {agent.name}")
else:
# Update existing agent
for key, value in agent_data.items():
if key != 'slug':
setattr(agent, key, value)
agent.save()
updated_count += 1
self.stdout.write(f"Updated: {agent.name}")
self.stdout.write(
self.style.SUCCESS(
f"Successfully processed {len(agents_data)} agents: "
f"{created_count} created, {updated_count} updated"
)
)