Source code for pyticketswitch.seat

from pyticketswitch.mixins import JSONMixin


[docs]class SeatBlock(JSONMixin, object): """Describes a set of contiguous seats. Attributes: length (int): the number of seats in the block. seats (list): list of :class:`Seats <pyticketswitch.seat.Seat>` in the block. """ def __init__(self, length, seats=None): self.length = length self.seats = seats
[docs] @classmethod def from_api_data(cls, block, row_id=None, separator='', restricted_view_seats=None, seats_by_text_message=None): """Creates a new SeatBlock object from API data from ticketswitch. Args: block (list): the part of the response from a ticketswitch API call that concerns a seat block. row_id (str): the component of the seat ID corresponding to the row separator (str): the string separating row and column in the id restricted_view_seats (list): seat IDs that have restricted view seats_by_text_message (dict): a mapping of seat text messages to seat IDs Returns: :class:`SeatBlock <pyticketswitch.seat.SeatBlock>`: a new :class:`SeatBlock <pyticketswitch.seat.SeatBlock>` object populated with the data from the api. """ seats = [] for seat_id in block: column = None delimiter = separator if not delimiter: delimiter = row_id split_id = seat_id.split(delimiter) column = split_id[1] restricted = False restricted_text = '' if seat_id in restricted_view_seats: restricted = True for seat_text, list_of_seats in seats_by_text_message.items(): if seat_id in list_of_seats: restricted_text = seat_text seat = Seat( id_=seat_id, row=row_id, column=column, separator=separator, is_restricted=restricted, seat_text=restricted_text ) seats.append(seat) kwargs = {'seats': seats, 'length': len(seats)} return cls(**kwargs)
[docs]class Seat(JSONMixin, object): """Describes a seat in a venue. Attributes: id (str): the identifier for the seat. column (str): the column of the seat. row (str): the row of the seat. separator (str): characters that should be used to seperate the column and row when presenting seat information. is_restricted (bool): indicates that the seat has a restricted view. seat_text_code (str): code indicating text that should be displayed with the seat when preseting seat information. seat_text (str): readable explanation of the seats description barcode (str): barcode specific to this seat. Only available when supported by the backend system. seat_apple_wallet_urls: object containing urls to save an apple wallet pass seat_google_pay_urls: object containing urls to save a google wallet pass """ def __init__(self, id_=None, column=None, row=None, is_restricted=False, seat_text_code=None, seat_text=None, separator=None, barcode=None, seat_google_pay_urls=None, seat_apple_wallet_urls=None): self.id = id_ self.column = column self.row = row self.separator = separator self.is_restricted = is_restricted self.seat_text = seat_text self.seat_text_code = seat_text_code self.barcode = barcode self.seat_apple_wallet_urls = seat_apple_wallet_urls self.seat_google_pay_urls = seat_google_pay_urls
[docs] @classmethod def from_api_data(cls, data): """Creates a new Seat object from API data from ticketswitch. Args: data (dict): the part of the response from a ticketswitch API call that concerns a seat. Returns: :class:`Seat <pyticketswitch.seat.Seat>`: a new :class:`Seat <pyticketswitch.seat.Seat>` object populated with the data from the api. """ kwargs = { 'id_': data.get('full_id'), 'column': data.get('col_id'), 'row': data.get('row_id'), 'is_restricted': data.get('is_restricted_view', False), 'seat_text_code': data.get('seat_text_code'), 'seat_text': data.get('seat_text'), 'separator': data.get('separator', ''), 'barcode': data.get('barcode'), 'seat_apple_wallet_urls': (AppleWallet(data.get('seat_apple_wallet_urls')) if data.get('seat_apple_wallet_urls') else None), 'seat_google_pay_urls': (GoogleWallet(data.get('seat_google_pay_urls')) if data.get('seat_google_pay_urls') else None), } return cls(**kwargs)
def __repr__(self): return u'<Seat {}>'.format(self.id)
class GoogleWallet(JSONMixin, object): """Describes the urls for a google wallet. Attributes: gpay_jwt_url (str): json web token used to generate a google wallet pass gpay_save_url (str): url that prompts adds a pass to a user's google wallet """ def __init__(self, urls={}): self.gpay_jwt_url = urls.get('gpay_jwt_url') self.gpay_save_url = urls.get('gpay_save_url') def __repr__(self): return '<GoogleWallet>' class AppleWallet(JSONMixin, object): """Describes the urls for an apple wallet. Attributes: apple_wallet_gen_url (str): url that prompts adds a pass to a user's apple wallet """ def __init__(self, urls={}): self.apple_wallet_gen_url = urls.get('apple_wallet_gen_url') def __repr__(self): return '<AppleWallet>'