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
|