user-wsc/AppUser/Model/RoleModel.py

48 lines
1.5 KiB
Python
Raw Normal View History

2022-11-07 13:53:42 +08:00
from sqlalchemy.orm import relationship
from sqlalchemy import Column, String, ForeignKey, Enum
from Utils.DataBase.SqlAlchemyUtils import Base
class RoleAccessPolicy(Base):
__tablename__ = "role_access_policy"
id = Column(String(20), primary_key=True)
module = Column(String(64))
2022-11-08 09:46:44 +08:00
ptype = Column(Enum("p"))
sub = Column(String(32), comment="subject")
obj = Column(String(255), comment="object")
act = Column(String(128), comment="action")
2022-11-07 13:53:42 +08:00
role_id = Column(String(32), ForeignKey("role.id", ondelete="CASCADE"))
def to_dict(self):
rcp_dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
return rcp_dict
2022-11-08 09:46:44 +08:00
class RoleMenu(Base):
__tablename__ = "role_menu"
id = Column(String(20), primary_key=True)
subject = Column(String(20), comment="栏目")
role_id = Column(String(32), ForeignKey("role.id", ondelete="CASCADE"))
2022-11-07 13:53:42 +08:00
class Role(Base):
__tablename__ = "role"
2022-11-08 09:46:44 +08:00
id = Column(String(6), primary_key=True)
2022-11-07 13:53:42 +08:00
name = Column(String(32), unique=True, index=True)
2022-11-08 09:46:44 +08:00
role_menu = relationship(RoleMenu, backref="role", cascade="all, delete-orphan")
2022-11-07 13:53:42 +08:00
role_access_policy = relationship(RoleAccessPolicy, backref="role", cascade="all, delete-orphan")
def __repr__(self):
return self.name
def to_dict(self):
role_dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
raps = [policy.to_dict() for policy in self.role_access_policy]
role_dict.update({"raps": raps})
return role_dict