Extra wrapper methods for creating permission handler checks

This commit is contained in:
Ben 2020-05-17 03:24:14 +01:00
parent 4307284092
commit 8e33779ed8

View File

@ -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)