Source code for pyticketswitch.customer

from pyticketswitch.mixins import JSONMixin
from pyticketswitch import utils


[docs]class Customer (JSONMixin, object): """Describes a cutomer to ticketswitch. Attributes: first_name (str): customers first name. last_name (str): customers last name. address_lines (list): list of address lines, at least one address line is required. country_code (str): ISO 3166-1 country code that the customer is living in. title (str): customer title. initials (str): customer initials. suffix (str): customer name suffix. email (str): email address for contacting the customer. post_code (str): post or ZIP code for the customers address. town (str): town for the customers address. county (str): the county or region of the customers address. country (str): the country as a string for the customers address. phone (str): a contact phone number for the user. home_phone (str): the customers home phone number. work_phone (str): the customers work phone number. agent_reference (str): agent reference for the customer. supplier_can_use_data (bool): indicates that the supplier of the tickets is allowed to access and use this data. user_can_use_data (bool): indicates that the user (you) can access and use this data. world_can_use_data (bool): indicates that pretty much anyone is allowed to access and use this data. first_name_latin (str): **first name** in latin characters. last_name_latin (str): **last name** in latin characters. address_lines_latin (list): list of :obj:`str` address lines in latin characters. title_latin (str): **title** in latin characters initials_latin (str): **initials** in latin characters. suffix_latin (str): **suffix** in latin characters. post_code_latin (str): **post_code** in latin characters. town_latin (str): **town** in latin characters. county_latin (str): **county** in latin characters. country_latin (str): **country** in latin characters. kwargs (dict): arbitrary keyword arguments to store along with this customer object. """ def __init__(self, first_name, last_name, address_lines, country_code, title=None, initials=None, suffix=None, email=None, post_code=None, town=None, county=None, country=None, phone=None, home_phone=None, work_phone=None, agent_reference=None, supplier_can_use_data=False, user_can_use_data=False, world_can_use_data=False, first_name_latin=None, last_name_latin=None, address_lines_latin=None, title_latin=None, initials_latin=None, suffix_latin=None, post_code_latin=None, town_latin=None, county_latin=None, country_latin=None, **kwargs): self.first_name = first_name self.first_name_latin = first_name_latin self.last_name = last_name self.last_name_latin = last_name_latin self.address_lines = address_lines self.address_lines_latin = address_lines_latin self.title = title self.title_latin = title_latin self.initials = initials self.initials_latin = initials_latin self.suffix = suffix self.suffix_latin = suffix_latin self.country_code = country_code self.post_code = post_code self.post_code_latin = post_code_latin self.town = town self.town_latin = town_latin self.county = county self.county_latin = county_latin self.country = country self.country_latin = country_latin self.email = email self.phone = phone self.home_phone = home_phone self.work_phone = work_phone self.agent_reference = agent_reference self.supplier_can_use_data = supplier_can_use_data self.user_can_use_data = user_can_use_data self.world_can_use_data = world_can_use_data self.kwargs = kwargs
[docs] @classmethod def from_api_data(cls, data): """Creates a new Customer object from API data from ticketswitch. Args: data (dict): the part of the response from a ticketswitch API call that concerns a customer. Returns: :class:`Customer <pyticketswitch.customer.Customer>`: a new :class:`Customer <pyticketswitch.customer.Customer>` object populated with the data from the api. """ kwargs = { 'first_name': data.get('first_name'), 'first_name_latin': data.get('first_name_latin'), 'last_name': data.get('last_name'), 'last_name_latin': data.get('last_name_latin'), 'title': data.get('title'), 'title_latin': data.get('title_latin'), 'initials': data.get('initials'), 'initials_latin': data.get('initials_latin'), 'suffix': data.get('suffix'), 'suffix_latin': data.get('suffix_latin'), 'country_code': data.get('country_code'), 'post_code': data.get('postcode'), 'post_code_latin': data.get('postcode_latin'), 'town': data.get('town'), 'town_latin': data.get('town_latin'), 'county': data.get('county'), 'county_latin': data.get('county_latin'), 'country': data.get('country'), 'country_latin': data.get('country_latin'), 'email': data.get('email_addr'), 'phone': data.get('phone'), 'home_phone': data.get('home_phone'), 'work_phone': data.get('work_phone'), 'agent_reference': data.get('agent_ref'), 'supplier_can_use_data': data.get('dp_supplier'), 'user_can_use_data': data.get('dp_user'), 'world_can_use_data': data.get('dp_world'), } address_line_one = data.get('addr_line_one') address_line_two = data.get('addr_line_two') address_line_one_latin = data.get('addr_line_one_latin') address_line_two_latin = data.get('addr_line_two_latin') address_lines = [] if address_line_one: address_lines.append(address_line_one) if address_line_two: address_lines.append(address_line_two) address_lines_latin = [] if address_line_one_latin: address_lines_latin.append(address_line_one_latin) if address_line_two_latin: address_lines_latin.append(address_line_two_latin) kwargs.update( address_lines=address_lines, address_lines_latin=address_lines_latin ) return cls(**kwargs)
[docs] def as_api_parameters(self): """Generates a dictionary of parameters to be passed back to the API. Returns: dict: a set of parameters describing the customer to the API. .. note:: the ``latin_*`` attributes are not passed to the API as they are generated internally. As such there is no need to provided them when creating a :class:`Customer <pyticketswitch.customer.Customer>` for API consumption. """ params = { 'first_name': self.first_name, 'last_name': self.last_name, 'country_code': self.country_code, 'title': self.title, 'initials': self.initials, 'suffix': self.suffix, 'postcode': self.post_code, 'town': self.town, 'county': self.county, 'email_address': self.email, 'phone': self.phone, 'work_phone': self.work_phone, 'home_phone': self.home_phone, 'agent_ref': self.agent_reference, 'supplier_can_use_customer_data': self.supplier_can_use_data, 'user_can_use_customer_data': self.user_can_use_data, 'world_can_use_customer_data': self.world_can_use_data, } if self.address_lines and len(self.address_lines) == 1: params.update(address_line_one=self.address_lines[0]) if self.address_lines and len(self.address_lines) > 1: params.update( address_line_one=self.address_lines[0], address_line_two=self.address_lines[1], ) params = utils.filter_none_from_parameters(params) return params