| | |
| | | from datetime import datetime |
| | | from typing import Optional |
| | | |
| | | from pydantic import BaseModel |
| | | 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'))) |
| | | # 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'))) |
| | | Column('role_id', String(36), ForeignKey('role.id', ondelete='CASCADE')), |
| | | Column('organization_id', String(36), ForeignKey('organization.id', ondelete='CASCADE'))) |
| | | |
| | | class OrganizationModel(Base): |
| | | __tablename__ = 'organization' |
| | |
| | | iconcls = Column(String(255)) |
| | | seq = Column(Integer) |
| | | leader = Column(String(255)) |
| | | phone = Column(String(11)) |
| | | phone = Column(String(32)) |
| | | email = Column(String(64)) |
| | | status = Column(String(10), nullable=False, default="0") |
| | | |
| | | groups = relationship('GroupModel', |
| | | secondary=organization_group_table, |
| | | backref=backref('organizations', lazy='dynamic')) |
| | | # groups = relationship('GroupModel', |
| | | # secondary=organization_group_table, |
| | | # backref=backref('organizations', lazy='dynamic')) |
| | | |
| | | roles = relationship('RoleModel', |
| | | secondary=organization_role_table, |
| | |
| | | '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], |
| | | # 'groups': [self.group_json(group) for group in self.groups], |
| | | 'children': [ |
| | | org.to_json() for org in self.children |
| | | ] |
| | | } |
| | | |
| | | |
| | | |
| | | return json |
| | | |
| | |
| | | |
| | | def to_tree_select_json(self): |
| | | return { |
| | | 'id': self.ID, |
| | | 'label': self.NAME, |
| | | '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 self.parent.id |
| | | return '' |
| | | |
| | | def get_pName(self): |
| | | if self.parent: |
| | | return self.parent.NAME |
| | | return self.parent.name |
| | | return '' |
| | | |
| | | |
| | | |
| | | def get_id(self): |
| | | return str(self.ID) |
| | | return str(self.id) |
| | | |
| | | def __repr__(self): |
| | | return '<Organization %r>\n' %(self.NAME) |
| | | return '<Organization %r>\n' %(self.name) |
| | | |
| | | |
| | | class DeptList(BaseModel): |
| | | deptName: Optional[str] = "" |
| | | |
| | | |
| | | class DeptInfo(BaseModel): |
| | | deptId: Optional[str] = "" |
| | | deptName: Optional[str] = "" |
| | | leader: Optional[str] = "" |
| | | phone: Optional[str] = "" |
| | | orderNum: int |
| | | address: Optional[str] = "" |
| | | parentId: Optional[str] = "" |
| | | status: str |
| | | roles: list |
| | | groups: Optional[list] = [] |
| | | |
| | | |
| | | class DeptParent(BaseModel): |
| | | deptId: str |
| | | parentId: str |
| | | orderNum: int |