You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.5 KiB
40 lines
1.5 KiB
|
3 years ago
|
# !/usr/bin/env python3
|
||
|
|
# -*- encoding : utf-8 -*-
|
||
|
|
# @Filename : menu.py
|
||
|
|
# @Software : VSCode
|
||
|
|
# @Datetime : 2021/11/08 21:50:31
|
||
|
|
# @Author : leo liu
|
||
|
|
# @Version : 1.0
|
||
|
|
# @Description : 前端菜单
|
||
|
|
|
||
|
|
"""
|
||
|
|
菜单模型
|
||
|
|
"""
|
||
|
|
|
||
|
|
from datetime import datetime
|
||
|
|
from sqlalchemy import Column, Integer, VARCHAR, ForeignKey, Table, DateTime
|
||
|
|
from sqlalchemy.orm import relationship
|
||
|
|
from sqlalchemy.sql import func
|
||
|
|
|
||
|
|
from db.base_class import Base, gen_uuid
|
||
|
|
|
||
|
|
role_menu = Table(
|
||
|
|
"nlt_rolemenu",
|
||
|
|
Base.metadata,
|
||
|
|
Column("id", Integer, unique=True, index=True, primary_key=True, autoincrement=True, comment="ID"),
|
||
|
|
Column("role_id", VARCHAR(32), ForeignKey("nlt_role.role_id"), nullable=False, primary_key=True, comment="角色id"),
|
||
|
|
Column("menu_id", VARCHAR(32), ForeignKey("nlt_menu.menu_id"), nullable=False, primary_key=True, comment="菜单id"),
|
||
|
|
Column("create_time", DateTime, default=datetime.now, server_default=func.now(), comment="创建时间")
|
||
|
|
)
|
||
|
|
|
||
|
|
class Menu(Base):
|
||
|
|
"""
|
||
|
|
菜单表
|
||
|
|
"""
|
||
|
|
__tablename__ = "nlt_menu"
|
||
|
|
menu_id = Column(VARCHAR(32), default=gen_uuid, index=True, primary_key=True, unique=True, comment="菜单id")
|
||
|
|
path = Column(VARCHAR(64), unique=True, nullable=False, comment="菜单地址")
|
||
|
|
name = Column(VARCHAR(32), unique=True, nullable=False, comment="菜单名称")
|
||
|
|
super_menu = Column(VARCHAR(64), nullable=True, comment="上级菜单id")
|
||
|
|
role = relationship("Role", backref="menus", secondary=role_menu)
|
||
|
|
__table_args__ = ({'comment': '菜单表'})
|