Guest User

Untitled

a guest
Jul 14th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1.  
  2. """ * * Association Tables * """
  3.  
  4. class AlbumOwner(DeclarativeBase):
  5. __tablename__ = 'albumOwner'
  6.  
  7. user_id = Column(types.Integer, ForeignKey('user.id'), nullable=False, primary_key=True)
  8. album_id = Column(types.Integer, ForeignKey('album.id'), nullable=False, primary_key=True)
  9.  
  10. class GroupPermission(DeclarativeBase):
  11. __tablename__ = 'groupPermission'
  12.  
  13. group_id = Column(types.Integer, ForeignKey('group.id'), nullable=False, primary_key=True)
  14. permission_id = Column(types.Integer, ForeignKey('permission.id'), nullable=False, primary_key=True)
  15.  
  16. class UserGroup(DeclarativeBase):
  17. __tablename__ = 'userGroup'
  18.  
  19. group_id = Column(types.Integer, ForeignKey('group.id'), nullable=False, primary_key=True)
  20. user_id = Column(types.Integer, ForeignKey('user.id'), nullable=False, primary_key=True)
  21.  
  22. class AlbumGroupPermission(DeclarativeBase):
  23. __tablename__ = 'albumGroupPermission'
  24.  
  25. album_id = Column(types.Integer, ForeignKey('album.id'), nullable=False, primary_key=True)
  26. group_id = Column(types.Integer, ForeignKey('group.id'), nullable=False, primary_key=True)
  27. permission_id = Column(types.Integer, ForeignKey('permission.id'), nullable=False, primary_key=True)
  28.  
  29. album = relation('Album')
  30. group = relation('Group')
  31. permission = relation('AlbumPermission')
  32.  
  33. def __init__(self, album, group, permission):
  34. self.album = album
  35. self.group = group
  36. self.permission = permission
  37.  
  38.  
  39. """ * * * * * * * * * * * * * """
  40. """ * * * * * User * * * * * """
  41.  
  42. class User(DeclarativeBase):
  43. __tablename__ = 'user'
  44.  
  45. id = Column(types.Integer, primary_key=True)
  46. username = Column(types.String(16), nullable=False, unique=True)
  47. _password = Column('password', types.String(255), nullable=False)
  48. name = Column(types.String(255))
  49. email = Column(types.String(128))
  50. create_date = Column(types.DateTime, nullable=True)
  51.  
  52. groups = relation('Group', secondary=UserGroup.__table__)
  53. ownedAlbums = relation('Album', backref=backref('owner', uselist=False), secondary=AlbumOwner.__table__)
  54.  
  55. def __init__(self, username, passwd, name = None, email = None):
  56. self.username = username
  57. self.password = passwd
  58. self.name = name
  59. self.email = email
  60. self.create_date = datetime.datetime.now()
  61.  
  62. def validate_password(self, password):
  63. p = hashlib.md5(password).hexdigest()
  64. return (self.password == p)
  65.  
  66. def __get_password__(self):
  67. return self._password
  68.  
  69. def __set_password__(self, password):
  70. p = hashlib.md5(password).hexdigest()
  71. self._password = p
  72.  
  73. password = property(__get_password__, __set_password__)
  74.  
  75.  
  76. """ * * * * * * * * * * * * * """
  77. """ * * * * * Group * * * * """
  78.  
  79. class Group(DeclarativeBase):
  80. __tablename__ = 'group'
  81.  
  82. id = Column(types.Integer, primary_key=True)
  83. name = Column(types.String(16), nullable=False, unique=True)
  84. create_date = Column(types.DateTime, nullable=True)
  85.  
  86. users = relation('User', secondary=UserGroup.__table__)
  87. globalPermissions = relation('GlobalPermission', secondary=GroupPermission.__table__, backref=backref('groups'))
  88. albumPermissions = relation('AlbumPermission', secondary=GroupPermission.__table__, backref=backref('groups'))
  89.  
  90. def __init__(self, name, initial_members=[]):
  91. self.name = name
  92. self.create_date = datetime.datetime.now()
  93. self.users = initial_members
  94.  
  95.  
  96. """ * * * * * * * * * * * * * """
  97. """ * * * * Permissions * * * """
  98.  
  99. class Permission(DeclarativeBase):
  100. __tablename__ = 'permission'
  101.  
  102. id = Column(types.Integer, primary_key=True)
  103. name = Column(types.String(16), nullable=False)
  104. title = Column(types.String(64))
  105. context = Column(types.String(32))
  106. __mapper_args__ = {'polymorphic_on': context}
  107.  
  108. def __init__(self, name, title=None, initial_groups=[]):
  109. self.name = name
  110. self.title = title
  111. self.groups = initial_groups
  112.  
  113. class GlobalPermission(Permission):
  114. __mapper_args__ = {'polymorphic_identity': 'global'}
  115.  
  116. class AlbumPermission(Permission):
  117. __mapper_args__ = {'polymorphic_identity': 'album'}
Add Comment
Please, Sign In to add comment