import logging
from lxml import etree
from q2_sdk.models.cores.queries.base_query import BaseQuery
from q2_cores import data_helpers
[docs]
class UpdateAddressQuery(BaseQuery):
"""Updates address for an OSI Entity"""
def __init__(
self,
logger: logging.Logger,
access_number: str,
pin: str,
use_code: int,
city: str,
state: str,
zipcode: str,
address_1: str,
address_2: str,
address_3: str = "",
address_type: str = "PRI",
country: str = "USA",
):
self.access_number = access_number
self.pin = pin
self.use_code = use_code
self.country = country
self.city = city
self.state = state
self.zipcode = zipcode
self.address_1 = address_1
self.address_2 = address_2
self.address_3 = address_3
self.address_type = address_type
super().__init__(logger)
[docs]
def build(self):
root = etree.Element("PROCREQ", PROC="1230")
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, "ADDRESSUSECD").text = self.address_type
etree.SubElement(root, "COUNTRY").text = self.country
etree.SubElement(root, "CITYNAME").text = self.city
etree.SubElement(root, "STATE").text = self.state
etree.SubElement(root, "ZIPCD").text = self.zipcode
etree.SubElement(root, "STREET1").text = self.address_1
etree.SubElement(root, "STREET2").text = self.address_2
etree.SubElement(root, "STREET3").text = self.address_3
xml_bytes = b"95\t" + etree.tostring(root)
return xml_bytes.decode()
[docs]
def mock_response(self):
response = """
<PROCREQ PROC="1230">
<RESPONSE>OK</RESPONSE>
</PROCREQ>
"""
response = [data_helpers.normalize_xml_str(response), "ITC\t1\t0"]
return "\n".join(response)