haikal/tours/management/commands/import_tours.py
2025-06-22 13:25:54 +03:00

50 lines
1.5 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")
)