haikal/tours/management/commands/import_tours.py
2025-06-13 01:58:40 +03:00

46 lines
1.4 KiB
Python

from django.core.management.base import BaseCommand
import yaml
import os
from django.utils.text import slugify
from tours.models import Tour
class Command(BaseCommand):
help = "Import tours from knowledge base"
def handle(self, *args, **kwargs):
input_file = "haikal_kb.yaml"
try:
with open(input_file, 'r', encoding='utf-8') as f:
kb = yaml.safe_load(f)
except Exception as e:
self.stdout.write(self.style.ERROR(f"Error reading knowledge base file: {e}"))
return
workflows = kb.get("user_workflows", {})
tours_created = 0
for workflow_name, workflow in workflows.items():
slug = slugify(workflow_name)
tour_file = f"{slug}_tour.json"
tour, created = Tour.objects.update_or_create(
slug=slug,
defaults={
'name': workflow_name,
'description': workflow.get('description', ''),
'tour_file': tour_file,
'is_active': True
}
)
if created:
tours_created += 1
self.stdout.write(self.style.SUCCESS(f"Created tour: {workflow_name}"))
else:
self.stdout.write(self.style.SUCCESS(f"Updated tour: {workflow_name}"))
self.stdout.write(self.style.SUCCESS(f"✅ Imported {tours_created} tours from knowledge base"))