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