Organization.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from app import db
  2. from flask_login import UserMixin, AnonymousUserMixin
  3. from datetime import datetime
  4. organization_resource_table = db.Table('SYORGANIZATION_SYRESOURCE', db.metadata,
  5. db.Column('SYRESOURCE_ID', db.String, db.ForeignKey('SYRESOURCE.ID')),
  6. db.Column('SYORGANIZATION_ID', db.String, db.ForeignKey('SYORGANIZATION.ID')))
  7. class Organization(db.Model, UserMixin):
  8. __tablename__ = 'SYORGANIZATION'
  9. ID = db.Column(db.String(36), primary_key=True)
  10. CREATEDATETIME = db.Column(db.DateTime, index=True, default=datetime.now)
  11. UPDATEDATETIME = db.Column(db.DateTime, index=True, default=datetime.now)
  12. NAME = db.Column(db.String(200))
  13. ADDRESS = db.Column(db.String(200))
  14. CODE = db.Column(db.String(200))
  15. ICONCLS = db.Column(db.String(100))
  16. SEQ = db.Column(db.Integer)
  17. LEADER = db.Column(db.String(20))
  18. PHONE = db.Column(db.String(11))
  19. EMAIL = db.Column(db.String(50))
  20. STATUS = db.Column(db.String(10))
  21. resources = db.relationship('Resource',
  22. secondary=organization_resource_table,
  23. backref=db.backref('organizations', lazy='dynamic'))
  24. SYORGANIZATION_ID = db.Column(db.String, db.ForeignKey('SYORGANIZATION.ID'))
  25. parent = db.relationship('Organization', remote_side=[ID], backref='organization', uselist=False)
  26. children = db.relationship('Organization')
  27. def to_json(self):
  28. return {
  29. 'deptId': self.ID,
  30. 'createTime': self.CREATEDATETIME,
  31. 'updateTime': self.UPDATEDATETIME,
  32. 'deptName': self.NAME,
  33. 'address': self.ADDRESS,
  34. 'code': self.CODE,
  35. 'iconCls': self.ICONCLS,
  36. 'orderNum': self.SEQ,
  37. 'parentId': self.get_pid(),
  38. 'leader': self.LEADER,
  39. 'phone': self.PHONE,
  40. 'email': self.EMAIL,
  41. 'status': self.STATUS,
  42. 'children': [
  43. org.to_json() for org in self.children
  44. ]
  45. }
  46. def to_tree_select_json(self):
  47. return {
  48. 'id': self.ID,
  49. 'label': self.NAME,
  50. 'children': [org.to_tree_select_json() for org in self.children]
  51. }
  52. def get_pid(self):
  53. if self.parent:
  54. return self.parent.ID
  55. return ''
  56. def get_id(self):
  57. return str(self.ID)
  58. def __repr__(self):
  59. return '<Organization %r>\n' %(self.NAME)