55 lines
2.0 KiB
Python
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),
|
|
]
|