User.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from app import db, loginmanager
  2. from flask_login import UserMixin, AnonymousUserMixin
  3. from datetime import datetime
  4. @loginmanager.user_loader
  5. def load_user(user_id):
  6. return User.query.filter(User.ID == user_id).first()
  7. user_organization_table = db.Table('SYUSER_SYORGANIZATION', db.Model.metadata
  8. , db.Column('SYUSER_ID', db.String, db.ForeignKey('SYUSER.ID'))
  9. , db.Column('SYORGANIZATION_ID', db.String, db.ForeignKey('SYORGANIZATION.ID')))
  10. user_role_table = db.Table('SYUSER_SYROLE', db.Model.metadata
  11. , db.Column('SYUSER_ID', db.String, db.ForeignKey('SYUSER.ID'))
  12. , db.Column('SYROLE_ID', db.String, db.ForeignKey('SYROLE.ID')))
  13. class User(db.Model, UserMixin):
  14. __tablename__ = 'SYUSER'
  15. ID = db.Column(db.String(36), primary_key=True)
  16. CREATEDATETIME = db.Column(db.DateTime, index=True, default=datetime.now)
  17. UPDATEDATETIME = db.Column(db.DateTime, index=True, default=datetime.now)
  18. LOGINNAME = db.Column(db.String(100), unique=True, index=True)
  19. PWD = db.Column(db.String(100))
  20. NAME = db.Column(db.String(100))
  21. SEX = db.Column(db.String(1))
  22. AGE = db.Column(db.Integer)
  23. PHOTO = db.Column(db.String(200))
  24. EMPLOYDATE = db.Column(db.DATETIME, default=datetime.now)
  25. organizations = db.relationship('Organization',
  26. secondary=user_organization_table,
  27. backref=db.backref('users', lazy='dynamic'),)
  28. roles = db.relationship('Role',
  29. secondary=user_role_table,
  30. backref=db.backref('users', lazy='dynamic'),
  31. lazy="dynamic")
  32. def get_id(self):
  33. return str(self.ID)
  34. def have_permission(self, url):
  35. permissions = []
  36. for role in self.roles:
  37. permissions.extend([resource for resource in role.resources])
  38. if filter(lambda x: x.URL == url, permissions):
  39. return True
  40. permissions = []
  41. for organization in self.organizations:
  42. permissions.extend([resource for resource in organization.resources])
  43. return filter(lambda x: x.NAME == url, permissions)
  44. def __repr__(self):
  45. return '<User %r>\n' %(self.NAME)
  46. def to_json(self):
  47. return {
  48. 'id': self.ID,
  49. 'createdatetime': self.CREATEDATETIME.strftime('%Y-%m-%d %H:%M:%S'),
  50. 'updatedatetime': self.UPDATEDATETIME.strftime('%Y-%m-%d %H:%M:%S'),
  51. 'loginname': self.LOGINNAME,
  52. 'name': self.NAME,
  53. 'sex': self.SEX,
  54. 'age': self.AGE,
  55. 'photo': self.PHOTO,
  56. #'employdate': self.EMPLOYDATE.strftime('%Y-%m-%d %H:%M:%S'),
  57. }