import logging
from lxml import etree
from q2_sdk.models.demographic import Phone
from q2_sdk.models.cores.queries.base_query import BaseQuery
from q2_cores import data_helpers
[docs]
class UpdatePhoneQuery(BaseQuery):
"""Updates Phone info for an OSI Entity"""
def __init__(
self,
logger: logging.Logger,
access_number: str,
pin: str,
use_code: int,
phone: Phone,
country: str = "USA",
phone_type: str = "PER",
):
assert isinstance(phone, Phone)
self.access_number = access_number
self.pin = pin
self.use_code = use_code
self.phone = phone
self.country = country
self.phone_type = phone_type
super().__init__(logger)
[docs]
def build(self):
root = etree.Element("PROCREQ", PROC="1240")
etree.SubElement(root, "ACCESS_NBR").text = str(self.access_number)
etree.SubElement(root, "PIN").text = str(self.pin)
etree.SubElement(root, "SOURCE").text = "WWW"
etree.SubElement(root, "UC").text = str(self.use_code)
etree.SubElement(root, "PHONEUSECD").text = self.phone_type
etree.SubElement(root, "AREACD").text = self.phone.area_code
etree.SubElement(root, "EXCHANGE").text = self.phone.phone_number[:3]
etree.SubElement(root, "NUMBER").text = self.phone.phone_number[3:]
etree.SubElement(root, "PHONEEXTEN").text = self.phone.extension
etree.SubElement(root, "COUNTRY").text = self.country
xml_bytes = b"95\t" + etree.tostring(root)
return xml_bytes.decode()
[docs]
def mock_response(self):
response = """
<PROCREQ PROC="1240">
<RESPONSE>OK</RESPONSE>
</PROCREQ>
"""
response = [data_helpers.normalize_xml_str(response), "ITC\t1\t0"]
return "\n".join(response)