mirror of
				https://github.com/solero/houdini.git
				synced 2025-11-04 06:31:54 +00:00 
			
		
		
		
	Extra wrapper methods for creating permission handler checks
This commit is contained in:
		@@ -1,13 +1,30 @@
 | 
			
		||||
from houdini.handlers import check
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def check_permission(p, permission_name, check_above=True):
 | 
			
		||||
    def check_permission_recursive(permissions, permission):
 | 
			
		||||
        if permission in permissions:
 | 
			
		||||
            return p.server.permissions[permission].enabled
 | 
			
		||||
        if '.' in permission and check_above:
 | 
			
		||||
            return check_permission_recursive(permissions, '.'.join(permission.split('.')[:-1]))
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    return check_permission_recursive(p.permissions, permission_name)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def has(permission_name, check_above=True):
 | 
			
		||||
    def check_permission(_, p):
 | 
			
		||||
        def check_permission_recursive(permissions, permission):
 | 
			
		||||
            if permission in permissions:
 | 
			
		||||
                return permissions[permission].enabled
 | 
			
		||||
            if '.' in permission and check_above:
 | 
			
		||||
                check_permission_recursive(permissions, '.'.join(permission.split('.')[:-1]))
 | 
			
		||||
            return False
 | 
			
		||||
        return check_permission_recursive(p.permissions, permission_name)
 | 
			
		||||
    return check(check_permission)
 | 
			
		||||
    def has_permission(_, p):
 | 
			
		||||
        return check_permission(p, permission_name, check_above)
 | 
			
		||||
    return check(has_permission)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def has_or_moderator(permission_name, check_above=True):
 | 
			
		||||
    def or_moderator(_, p):
 | 
			
		||||
        return p.moderator or check_permission(p, permission_name, check_above)
 | 
			
		||||
    return check(or_moderator)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def has_or_mascot(permission_name, check_above=True):
 | 
			
		||||
    def or_mascot(_, p):
 | 
			
		||||
        return p.character or check_permission(p, permission_name, check_above)
 | 
			
		||||
    return check(or_mascot)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user