def remove_user_from_escalation_policy()

in libs/pagerduty/__init__.py [0:0]


  def remove_user_from_escalation_policy(self, policy_id, user_id, delete_empty=False):
    """
    remove user from an escalation policy.
    :param policy_id: policy_id
    :param user_id: user_id
    :param delete_empty: whether to delete an escalation policy with no targets
    :return: bool
    """
    removed = False
    policy = self.get_escalation_policy_by_id(policy_id=policy_id)

    if len(policy["escalation_policy"]["escalation_rules"]) == 1:
      rule = policy["escalation_policy"]["escalation_rules"][0]
      if len(rule["targets"]) > 1:
        for target in rule["targets"]:
          if target["id"] == user_id:
            target_idx = rule["targets"].index(target)
            rule["targets"].pop(target_idx)
            removed = self.update_escalation_policy_by_id(policy_id=policy_id, policy=policy)
      elif delete_empty is True:
        for service in policy["escalation_policy"]["services"]:
          self.delete_service(service_id=service["id"])
        self.get_escalation_policy_by_id(policy_id=policy_id)
        removed = self.delete_escalation_policy_by_id(policy_id=policy_id)

    return removed