User.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. def get_id(self):
  32. return str(self.ID)
  33. def have_permission(self, url):
  34. permissions = []
  35. for role in self.roles:
  36. permissions.extend([resource for resource in role.resources])
  37. if filter(lambda x: x.URL == url, permissions):
  38. return True
  39. permissions = []
  40. for organization in self.organizations:
  41. permissions.extend([resource for resource in organization.resources])
  42. return filter(lambda x: x.NAME == url, permissions)
  43. def __repr__(self):
  44. return '<User %r>\n' %(self.NAME)
  45. def to_json(self):
  46. return {
  47. 'id': self.ID,
  48. 'createdatetime': self.CREATEDATETIME.strftime('%Y-%m-%d %H:%M:%S'),
  49. 'updatedatetime': self.UPDATEDATETIME.strftime('%Y-%m-%d %H:%M:%S'),
  50. 'loginname': self.LOGINNAME,
  51. 'name': self.NAME,
  52. 'sex': self.SEX,
  53. 'age': self.AGE,
  54. 'photo': self.PHOTO,
  55. #'employdate': self.EMPLOYDATE.strftime('%Y-%m-%d %H:%M:%S'),
  56. }