def detach_role(person_id: int, role_id: int):
    person = get(person_id)
    role = RoleService.get(role_id)
    if person.roles.filter(id=role_id).count() == 0:
        raise exceptions.RoleNotFound
    try:
        person.roles.remove(role)
    except:
        raise exceptions.PersonManageFailed
def role_deny_place(role_id: int, place_id: int) -> RoleACLEntry:
    role = RoleService.get(role_id)
    place = PlaceService.get(place_id)
    if RoleACLEntry.objects.filter(
            role=role, place=place, type=AclType.ACL_DENY).count() > 0:
        raise exceptions.AclAlreadyAdded
    try:
        return RoleACLEntry.objects.create(role=role,
                                           place=place,
                                           type=AclType.ACL_DENY)
    except:
        raise exceptions.ACLManageFailed
def get_role_acls(role_id: int) -> List[RoleACLEntry]:
    role = RoleService.get(role_id)
    try:
        return list(role.roleaclentry_set.all())
    except:
        raise exceptions.SomethingWrong