27 lines
990 B
Python
27 lines
990 B
Python
import json
|
|
from django.core.management.base import BaseCommand
|
|
from pxy_dashboard.models import SidebarMenuItem
|
|
|
|
class Command(BaseCommand):
|
|
help = "Carga el menú lateral desde un archivo JSON"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("json_file", type=str, help="Ruta al archivo JSON")
|
|
|
|
def handle(self, *args, **kwargs):
|
|
json_path = kwargs["json_file"]
|
|
with open(json_path, "r", encoding="utf-8") as f:
|
|
data = json.load(f)
|
|
created = self.create_menu_items(data)
|
|
self.stdout.write(self.style.SUCCESS(f"{created} ítems de menú creados."))
|
|
|
|
def create_menu_items(self, items, parent=None):
|
|
count = 0
|
|
for item in items:
|
|
children = item.pop("children", [])
|
|
menu_item = SidebarMenuItem.objects.create(parent=parent, **item)
|
|
count += 1
|
|
if children:
|
|
count += self.create_menu_items(children, parent=menu_item)
|
|
return count
|