Source code for pyticketswitch.address
from pyticketswitch.mixins import JSONMixin
[docs]class Address(JSONMixin, object):
"""A postal address.
TODO: this is very similar the Customer object. consider combining them,
or subclassing one from the other, or a base class of some sort.
Attributes:
lines (list): list of address lines.
town (str): town for the address.
county (str): the county or region of the address.
country_code (str): ISO 3166-1 country code.
post_code (str): post or ZIP code for the address.
email (str): a contact email address.
home_phone (str): a contact home phone number.
work_phone (str): a contact work phone number.
"""
def __init__(self, lines=None, country_code=None, county=None,
email=None, home_phone=None, post_code=None, town=None,
work_phone=None):
self.lines = lines
self.town = town
self.county = county
self.country_code = country_code
self.post_code = post_code
self.email = email
self.home_phone = home_phone
self.work_phone = work_phone
[docs] @classmethod
def from_api_data(cls, data):
"""Creates a new Address object from API data from ticketswitch.
Args:
data (dict): the part of the response from a ticketswitch API call
that concerns an address.
Returns:
:class:`Address <pyticketswitch.address.Address>`: a new
:class:`Address <pyticketswitch.address.Address>` object
populated with the data from the api.
"""
kwargs = {
'country_code': data.get('country_code'),
'county': data.get('county'),
'email': data.get('email_address'),
'home_phone': data.get('home_phone'),
'post_code': data.get('postcode'),
'town': data.get('town'),
'work_phone': data.get('work_phone'),
'lines': [
data.get('address_line_one'),
data.get('address_line_two'),
]
}
return cls(**kwargs)
def as_api_billing_address_parameters(self):
params = {
'billing_country_code': self.country_code,
'billing_postcode': self.post_code,
'billing_town': self.town,
'billing_county': self.county,
}
if self.lines and len(self.lines) == 1:
params.update(billing_address_line_one=self.lines[0])
if self.lines and len(self.lines) > 1:
params.update(
billing_address_line_one=self.lines[0],
billing_address_line_two=self.lines[1],
)
return params