Files
sisvietnamvn_01/sisvietnamvn_main/.temp/reorganize_menu.py
T

104 lines
4.0 KiB
Python

import oracledb
import sys
try:
conn = oracledb.connect(user="sisvietnam", password="sisvietnam", dsn="localhost:1521/sisvietnam")
except Exception as e:
print(f"Connection failed: {e}")
sys.exit(1)
cursor = conn.cursor()
# Get menu by ID directly (we know it's 2001)
menu_id = 2001
# Find CHUYÊN KHOA parent item - search by label or title containing "khoa"
cursor.execute("""
SELECT id, label, title FROM sis_menu_item
WHERE menu_id = :1 AND parent_id IS NULL
ORDER BY display_order
""", [menu_id])
top_items = cursor.fetchall()
print("Top-level menu items:")
ck_id = None
for r in top_items:
print(f" id={r[0]} label={r[1]} title={r[2]}")
if r[1] and 'KHOA' in r[1].upper():
ck_id = r[0]
elif r[2] and 'KHOA' in r[2].upper():
ck_id = r[0]
if not ck_id:
print("\nCHUYÊN KHOA menu item not found! Creating one...")
ck_id_val = cursor.execute("SELECT sequence_generator.nextval FROM dual").fetchone()[0]
from datetime import datetime
dt = datetime.now()
cursor.execute("""
INSERT INTO sis_menu_item (id, menu_id, label, url, parent_id, display_order, title, created_date, last_modified_date, created_by, last_modified_by)
VALUES (:id, :menu_id, :label, :url, NULL, 2, :title, :cd, :md, 'system', 'system')
""", {
'id': ck_id_val, 'menu_id': menu_id, 'label': 'CHUYÊN KHOA',
'url': '/chuyen-khoa', 'title': 'CHUYÊN KHOA', 'cd': dt, 'md': dt
})
ck_id = ck_id_val
print(f"Created CHUYÊN KHOA menu item with id={ck_id}")
else:
print(f"\nFound CHUYÊN KHOA menu item with id={ck_id}")
# Delete existing children under CHUYÊN KHOA (clear and rebuild)
cursor.execute("""
DELETE FROM sis_menu_item WHERE parent_id IN (
SELECT id FROM sis_menu_item WHERE parent_id = :1
)
""", [ck_id])
cursor.execute("DELETE FROM sis_menu_item WHERE parent_id = :1", [ck_id])
print("Cleared existing children")
from datetime import datetime
dt = datetime.now()
def next_id():
cursor.execute("SELECT sequence_generator.nextval FROM dual")
return cursor.fetchone()[0]
categories = [
{"label": "Khoa lâm sàng", "url": "/chuyen-khoa?category=khoa-lam-sang", "order": 1, "db_cat": "KHOA_LAM_SANG"},
{"label": "Khoa cận lâm sàng", "url": "/chuyen-khoa?category=khoa-can-lam-sang", "order": 2, "db_cat": "KHOA_CAN_LAM_SANG"},
{"label": "Khoa hỗ trợ lâm sàng", "url": "/chuyen-khoa?category=khoa-ho-tro-lam-sang", "order": 3, "db_cat": "KHOA_HO_TRO_LAM_SANG"},
]
for cat in categories:
cat_item_id = next_id()
cursor.execute("""
INSERT INTO sis_menu_item (id, menu_id, label, url, parent_id, display_order, title, created_date, last_modified_date, created_by, last_modified_by)
VALUES (:id, :menu_id, :label, :url, :parent_id, :display_order, :title, :cd, :md, 'system', 'system')
""", {
'id': cat_item_id, 'menu_id': menu_id, 'label': cat['label'],
'url': cat['url'], 'parent_id': ck_id, 'display_order': cat['order'],
'title': cat['label'], 'cd': dt, 'md': dt
})
print(f"\nCreated sub-group: {cat['label']} (id={cat_item_id})")
cursor.execute("""
SELECT slug, title FROM sis_page
WHERE layout = 'SPECIALTY_DETAIL' AND specialty_category = :1
ORDER BY title
""", [cat['db_cat']])
specs = cursor.fetchall()
for idx, spec in enumerate(specs):
spec_id = next_id()
cursor.execute("""
INSERT INTO sis_menu_item (id, menu_id, label, url, parent_id, display_order, title, created_date, last_modified_date, created_by, last_modified_by)
VALUES (:id, :menu_id, :label, :url, :parent_id, :display_order, :title, :cd, :md, 'system', 'system')
""", {
'id': spec_id, 'menu_id': menu_id, 'label': spec[1],
'url': f"/chuyen-khoa/{spec[0]}", 'parent_id': cat_item_id,
'display_order': idx + 1, 'title': spec[1], 'cd': dt, 'md': dt
})
print(f" Added: {spec[1]}")
conn.commit()
print("\n✅ Menu reorganization complete!")
conn.close()