46 lines
1.4 KiB
Python
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"))
|