Exemple #1
0
 def get_call_forwarding(self, forward_type="always"):
     """Get call forwarding status for given forward type.
     Returns dict with keys 'active' (bool) and 'number' (str)
     """
     tree = self.xsi_get("services/callforwarding%s" % forward_type)
     active, number = [
         utils.node_value(tree, x)
         for x in ("active", "forwardToPhoneNumber")
     ]
     res = {"active": utils.str_to_bool(active), "number": number or ""}
     if forward_type == "always":
         splash = utils.node_value(tree, "ringSplash")
         res["ringSplash"] = utils.str_to_bool(splash)
     return res
Exemple #2
0
 def get_remote_office(self):
     """Get Remote Office call setting
     """
     tree = self.xsi_get("services/remoteoffice")
     active, number = [
         utils.node_value(tree, x) for x in ("active", "remoteOfficeNumber")
     ]
     return {"active": utils.str_to_bool(active), "number": number or ""}
Exemple #3
0
 def get_dnd(self):
     tree = self.xsi_get("services/donotdisturb")
     active, splash = [
         utils.node_value(tree, x) for x in ("active", "ringSplash")
     ]
     return {
         "active": utils.str_to_bool(active),
         "ringSplash": utils.str_to_bool(splash)
     }
Exemple #4
0
 def get_pn_registrations(self):
     tree = self.xsi_get("profile/PushNotificationRegistrations")
     res = []
     for e in tree.findall(utils.ns_escape("pushNotificationRegistration")):
         item = utils.node_list(e)
         item["token"] = utils.node_value(
             e, "deviceTokenList"
             "/deviceToken/token")
         res.append(item)
     return res
Exemple #5
0
 def get_directory_data(self):
     tree = self.xsi_get("directories/enterprise?userId=%s" % self.username)
     ret = {}
     for field in [
             "firstName", "lastName", "number", "extension", "displayName",
             "emailAddress", "additionalDetails/impId", "bridgeId",
             "roomId", "groupId", "addressLine1", "city", "zip", "country"
     ]:
         ret[field[field.find("/") + 1:]] = utils.node_value(
             tree, "enterpriseDirectory/directoryDetails/%s" % field)
     ret["jid"] = ret["impId"]
     return ret
Exemple #6
0
def fetch_server_data_for_account(server, account, ucaas=False):
    xsi = create_xsi_tool_for_account(server, account)
    utils.update_dict(account, xsi.get_directory_data())
    kwargs = {"ucaas": ucaas}
    account["dm_config"] = xsi.get_dm_config(**kwargs)
    if not ucaas:
        for x in ["username", "password"]:
            account["xmpp_" + x] = utils.node_value(account["dm_config"],
                                                    "protocols/xmpp/"
                                                    "credentials/%s" % x)
        xmpp = create_xmpp_tool_for_account(account)
        utils.update_dict(account, xmpp.get_xmpp_data())
Exemple #7
0
    def get_broadworks_mobility(self):
        """Get BroadWorks Mobility call setting.

        Returns active state and primary mobile number only.
        """
        tree = self.xsi_get("services/broadworksmobility")
        active = utils.node_value(tree, "active")
        # xpath looks more complex because can't specify default
        # namespece (without prefix) in xpath function arguments
        number = tree.xpath("/*[name()='BroadWorksMobility']"
                            "/*[name()='mobileIdentity']"
                            "/*[name()='primary'][text() = 'true']"
                            "/parent::*"
                            "/*[name()='mobileNumber']/text()")
        phone = number[0] if number else ""
        return {"active": utils.str_to_bool(active), "mobileNumber": phone}
Exemple #8
0
 def get_simultaneous_ring(self, **kwargs):
     """Get Simultaneous Ring call setting.
     """
     tree = self.xsi_get("services/simultaneousringpersonal")
     active, ring = [
         utils.node_value(tree, x) for x in ("active", "incomingCalls")
     ]
     return {
         "active":
         utils.str_to_bool(active),
         "incomingCalls": (ring == "Do not Ring if on a Call"),
         "simRingLocations":
         map(
             lambda elem: utils.node_list(elem),
             tree.findall(
                 utils.ns_escape("simRingLocations/simRingLocation")))
     }
Exemple #9
0
 def get_broadworks_anywhere(self):
     """Get BroadWorks Anywhere call setting.
     """
     tree = self.xsi_get("services/broadworksanywhere")
     dial, paging = [
         utils.node_value(tree, x)
         for x in ("alertAllLocationsForClickToDialCalls",
                   "alertAllLocationsForGroupPagingCalls")
     ]
     return {
         "alertAllLocationsForClickToDialCalls":
         utils.str_to_bool(dial),
         "alertAllLocationsForGroupPagingCalls":
         utils.str_to_bool(paging),
         "locations":
         map(lambda elem: utils.node_list(elem),
             tree.findall(utils.ns_escape("locations/location")))
     }
Exemple #10
0
 def delete_pn_registrations(self):
     tree = self.xsi_get("profile/PushNotificationRegistrations")
     for e in tree.findall(utils.ns_escape("pushNotificationRegistration")):
         self.delete_pn_registration(
             utils.node_value(e, "registrationId"),
             utils.node_value(e, "deviceTokenList/deviceToken/token"))
Exemple #11
0
 def _get_element_value(self, api_endpoint, element_name):
     tree = self.xsi_get(api_endpoint)
     return utils.node_value(tree, element_name)
Exemple #12
0
 def _get_active_state(self, api_endpoint):
     tree = self.xsi_get(api_endpoint)
     return utils.is_truthy(utils.node_value(tree, "active"))
Exemple #13
0
def get_vcard_data(vcard_xml_tree):
    """Extract base64 encoded values from given VCard data.
    """
    return {key: base64.b64decode(utils.node_value(vcard_xml_tree, path))
            for path, key in (("CATEGORIES/CONF/CALL", "conf-call-number"),
                              ("CATEGORIES/CONF/CHAT", "myroom-uri"))}