| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- from datetime import datetime
- from sqlalchemy import Column, Integer, String, Table, ForeignKey, DateTime
- from sqlalchemy.orm import relationship, backref
- from app.models.base_model import Base
- organization_group_table = Table('organization_group', Base.metadata,
- Column('group_id', Integer, ForeignKey('group.id')),
- Column('organization_id', String(36), ForeignKey('organization.id')))
- # #构建对role表的关系
- organization_role_table = Table('organization_role', Base.metadata,
- Column('role_id', String(36), ForeignKey('role.id')),
- Column('organization_id', String(36), ForeignKey('organization.id')))
- class OrganizationModel(Base):
- __tablename__ = 'organization'
- id = Column(String(36), primary_key=True)
- created_at = Column(DateTime, default=datetime.now())
- updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
- name = Column(String(200))
- address = Column(String(200))
- code = Column(String(200))
- iconcls = Column(String(255))
- seq = Column(Integer)
- leader = Column(String(255))
- phone = Column(String(11))
- email = Column(String(64))
- status = Column(String(10), nullable=False, default="0")
- groups = relationship('GroupModel',
- secondary=organization_group_table,
- backref=backref('organizations', lazy='dynamic'))
- roles = relationship('RoleModel',
- secondary=organization_role_table,
- backref=backref('organizations', lazy='dynamic'))
- organization_id = Column(String(36), ForeignKey('organization.id'))
- parent = relationship('OrganizationModel', remote_side=[id], backref='childrens', uselist=False)
- children = relationship('OrganizationModel')
- def to_json(self):
- json = {
- 'deptId': self.id,
- 'createTime': self.created_at,
- 'updateTime': self.updated_at,
- 'deptName': self.name,
- 'address': self.address,
- 'code': self.code,
- 'iconCls': self.iconcls,
- 'orderNum': self.seq,
- 'parentId': self.get_pid(),
- 'parentName': self.get_pName(),
- 'leader': self.leader,
- 'phone': self.phone,
- 'email': self.email,
- 'status': self.status,
- 'roles': [self.role_json(role) for role in self.roles],
- 'groups': [self.group_json(group) for group in self.groups],
- 'children': [
- org.to_json() for org in self.children
- ]
- }
- return json
- def role_json(self, role):
- return {
- 'roleId': role.id,
- 'roleName': role.name,
- 'deptId': self.id,
- }
- def group_json(self, group):
- return {
- 'groupId': group.id,
- 'groupName': group.name,
- 'deptId': self.id,
- }
- def to_tree_select_json(self):
- return {
- 'id': self.ID,
- 'label': self.NAME,
- 'children': [org.to_tree_select_json() for org in self.children]
- }
- def get_pid(self):
- if self.parent:
- return self.parent.ID
- return ''
- def get_pName(self):
- if self.parent:
- return self.parent.NAME
- return ''
- def get_id(self):
- return str(self.ID)
- def __repr__(self):
- return '<Organization %r>\n' %(self.NAME)
|