Resource.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. from app import db
  2. from flask_login import UserMixin, AnonymousUserMixin
  3. from datetime import datetime
  4. from flask import jsonify
  5. class Resource(db.Model, UserMixin):
  6. __tablename__ = 'SYRESOURCE'
  7. ID = db.Column(db.String(36), primary_key=True)
  8. CREATEDATETIME = db.Column(db.DateTime, index=True, default=datetime.now)
  9. UPDATEDATETIME = db.Column(db.DateTime, index=True, default=datetime.now)
  10. NAME = db.Column(db.String(100))
  11. URL = db.Column(db.String(200))
  12. PATH = db.Column(db.String(200))
  13. PERMS = db.Column(db.String(150))
  14. DESCRIPTION = db.Column(db.String(200))
  15. ICONCLS = db.Column(db.String(100))
  16. SEQ = db.Column(db.Integer)
  17. TARGET = db.Column(db.String(100))
  18. SYRESOURCETYPE_ID = db.Column(db.String, db.ForeignKey('SYRESOURCETYPE.ID'))
  19. SYRESOURCE_ID = db.Column(db.String, db.ForeignKey('SYRESOURCE.ID'))
  20. parent = db.relationship('Resource', remote_side=[ID], backref='resource', uselist=False)
  21. children = db.relationship('Resource')
  22. def get_id(self):
  23. return str(self.ID)
  24. def to_json(self):
  25. return {
  26. 'menuId': self.ID,
  27. 'createTime': self.CREATEDATETIME,
  28. 'updateTime': self.UPDATEDATETIME,
  29. 'menuName': self.NAME,
  30. 'component': self.URL,
  31. 'description': self.DESCRIPTION,
  32. 'icon': self.ICONCLS,
  33. 'orderNum': self.SEQ,
  34. 'target': self.TARGET,
  35. 'parentId': self.get_pid(),
  36. 'syresourcetype': self.get_type_json(),
  37. 'status': '0',
  38. 'perms': self.PERMS
  39. }
  40. def to_router_json(self):
  41. router = {
  42. 'name': self.PATH.capitalize(),
  43. 'path': self.PATH,
  44. 'hidden': False,
  45. 'redirect': 'noRedirect',
  46. 'component': self.URL,
  47. 'alwaysShow': True,
  48. 'meta': {
  49. 'title': self.NAME,
  50. 'icon': self.ICONCLS,
  51. 'noCache': False,
  52. 'link':''
  53. },
  54. 'children': [
  55. res.to_router_json() for res in self.children if res.type.ID == '3' or res.type.ID == '0'
  56. ]
  57. }
  58. if not router['children']:
  59. del router['children']
  60. del router['redirect']
  61. del router['alwaysShow']
  62. if not router['component']:
  63. router['component'] = 'Layout'
  64. return router
  65. def to_menu_json(self):
  66. return {
  67. 'id': self.ID,
  68. 'iconCls': self.ICONCLS,
  69. 'pid': self.get_pid(),
  70. 'state': 'open',
  71. 'checked': False,
  72. 'attributes': {
  73. 'target': self.TARGET,
  74. 'url': self.URL
  75. },
  76. 'text': self.NAME
  77. }
  78. def get_pid(self):
  79. if self.parent:
  80. return self.parent.ID
  81. return ''
  82. def get_type_json(self):
  83. if self.type:
  84. return self.type.to_json()
  85. return {}
  86. def __repr__(self):
  87. return '<Resource name:%r url:%r>\n' %(self.NAME, self.URL)