Files
SMANAGE/gvsds/apps/gerp/migrations/0012_doc_editor_menu.py
T

55 lines
2.0 KiB
Python

"""Data Migration: 添加"文档编辑器"菜单项
为在线 Word 文档编辑器页面(pages/doc/editor.html)加入 GERP 菜单系统。
采用公有菜单(CompanyUUID 为空),任何公司用户均可从导航进入。
幂等性:通过固定 MenuUUID + update_or_create 保证多次运行不重复创建。
注意:historical model 的字段名为小写形式(如 menu_uuid),而非 PascalCase。
db_column 才是数据库列名(如 MenuUUID)。
"""
import uuid as _uuid
from django.db import migrations
# 固定菜单 UUID,保证幂等(多次 migrate 不会重复创建)
DOC_EDITOR_MENU_UUID = _uuid.UUID('00000000-0000-4000-8000-0000000000d0').bytes
def AddDocEditorMenu(apps, schema_editor):
"""正向:插入"文档编辑器"菜单项。"""
Menu = apps.get_model('gerp', 'Menu')
Menu.objects.update_or_create(
menu_uuid=DOC_EDITOR_MENU_UUID,
defaults={
'company_uuid': None, # 公有菜单(全局可见)
'parent_menu_uuid': None, # 根菜单
'menu_name': 'doc-editor',
'menu_title': '文档编辑器',
'menu_icon': '<i class="fas fa-file-word"></i>',
'menu_link': 'pages/doc/editor.html',
'menu_sort': 900, # 排在系统类菜单之后
'permission_level': 1.0, # 普通用户可见
'permission_attr': '', # 无额外权限要求
'menu_status': 1, # 启用
'menu_type': 1, # 页面类型
},
)
def RemoveDocEditorMenu(apps, schema_editor):
"""逆向:删除"文档编辑器"菜单项。"""
Menu = apps.get_model('gerp', 'Menu')
Menu.objects.filter(menu_uuid=DOC_EDITOR_MENU_UUID).delete()
class Migration(migrations.Migration):
dependencies = [
('gerp', '0011_abnormaluserlog'),
]
operations = [
migrations.RunPython(AddDocEditorMenu, reverse_code=RemoveDocEditorMenu),
]