Files
Django/jituan/management/commands/seed_kefu_menu.py

40 lines
1.7 KiB
Python

"""一次性写入客服后台菜单与权限映射。用法: python manage.py seed_kefu_menu"""
from django.core.management.base import BaseCommand
from jituan.models import KefuMenuPage
from jituan.services.kefu_menu_definitions import KEFU_MENU_ROW_DEFS
class Command(BaseCommand):
help = '写入客服后台菜单页与权限映射(可重复执行,幂等更新)'
def handle(self, *args, **options):
created, updated = 0, 0
for row in KEFU_MENU_ROW_DEFS:
defaults = {
'name': row['name'],
'path': row.get('path', ''),
'parent_id': row.get('parent_id', ''),
'sort_order': row.get('sort_order', 0),
'perm_codes': row.get('perm_codes', []),
'require_super': row.get('require_super', False),
'require_group_manage': row.get('require_group_manage', False),
}
existing = KefuMenuPage.query.filter(page_id=row['page_id']).first()
if existing:
for key, val in defaults.items():
setattr(existing, key, val)
existing.save()
updated += 1
else:
KefuMenuPage(page_id=row['page_id'], **defaults).save()
created += 1
self.stdout.write(self.style.SUCCESS(
f'kefu_menu_page 种子完成:新增 {created},更新 {updated},共 {len(KEFU_MENU_ROW_DEFS)}'
))
try:
from django.core.management import call_command
call_command('seed_gvsdsdk_permissions')
except Exception as e:
self.stdout.write(self.style.WARNING(f'seed_gvsdsdk_permissions 跳过: {e}'))