Skip to content
Snippets Groups Projects
Select Git revision
  • f33096211b4bfd682dd09f9145df325a51295b27
  • master default protected
  • jwt_encode_inconsistencies
  • recovery-code-pwhash
  • incremental-sync
  • redis-rate-limits
  • typehints
  • v1.2.x
  • v1.x.x
  • v1.1.x
  • feature_invite_validuntil_minmax
  • Dockerfile
  • v1.0.x
  • roles-recursive-cte
  • v2.3.1
  • v2.3.0
  • v2.2.0
  • v2.1.0
  • v2.0.1
  • v2.0.0
  • v1.2.0
  • v1.1.2
  • v1.1.1
  • v1.0.2
  • v1.1.0
  • v1.0.1
  • v1.0.0
  • v0.3.0
  • v0.2.0
  • v0.1.5
  • v0.1.4
  • v0.1.2
32 results

models.py

Blame
  • Forked from uffd / uffd
    Source project has a limited visibility.
    models.py 1.37 KiB
    from sqlalchemy import Column, String, Integer, Text, ForeignKey
    from sqlalchemy.orm import relationship
    from sqlalchemy.ext.declarative import declared_attr
    
    from ldap3_mapper_new.dbutils import DBRelationship
    
    from uffd.database import db
    from uffd.user.models import User, Group
    
    class LdapMapping:
    	id = Column(Integer(), primary_key=True, autoincrement=True)
    	dn = Column(String(128))
    	__table_args__ = (
    		db.UniqueConstraint('dn', 'role_id'),
    	)
    	@declared_attr
    	def role_id(self):
    		return Column(ForeignKey('role.id'))
    
    class RoleGroup(LdapMapping, db.Model):
    	pass
    
    class RoleUser(LdapMapping, db.Model):
    	pass
    
    def update_user_groups(user):
    	user.groups.clear()
    	for role in user.roles:
    		user.groups.update(role.groups)
    
    User.update_groups = update_user_groups
    
    class Role(db.Model):
    	__tablename__ = 'role'
    	id = Column(Integer(), primary_key=True, autoincrement=True)
    	name = Column(String(32), unique=True)
    	description = Column(Text(), default='')
    
    	db_members = relationship("RoleUser", backref="role", cascade="all, delete-orphan")
    	members = DBRelationship('db_members', User, RoleUser, backattr='role', backref='roles')
    
    	db_groups = relationship("RoleGroup", backref="role", cascade="all, delete-orphan")
    	groups = DBRelationship('db_groups', Group, RoleGroup, backattr='role', backref='roles')
    
    	def update_member_groups(self):
    		for user in self.members:
    			user.update_groups()