def get_end_date( self ): """ Returns EndDate converted from 'YYYY-MM-DD' to 'DD-MMM-YYYY :return: String """ if self.end_date == '': end_date = self.request_xml.get_element_text( self.availability_mapping['end_date']['tag'] ) if end_date: try: self.end_date = convert_date_format( end_date, '%Y-%m-%d', '%Y-%b-%d' ) except ValueError: self.end_date = '' return self.end_date
def get_tour_date( self ): """ Returns TravelDate converted from 'YYYY-MM-DD' to 'DD-MMM-YYYY :return: String """ if self.tour_date == '': tour_date = self.request_xml.get_element_text( self.booking_mapping['tour_date']['tag'] ) if tour_date: try: self.tour_date = convert_date_format( tour_date, '%Y-%m-%d', '%Y-%b-%d' ) except ValueError: self.tour_date = '' return self.tour_date
def get_end_date(self): """ Returns EndDate converted from 'YYYY-MM-DD' to 'DD-MMM-YYYY :return: String """ if self.end_date == '': end_date = self.request_xml.get_element_text( self.availability_mapping['end_date']['tag']) if end_date: try: self.end_date = convert_date_format( end_date, '%Y-%m-%d', '%Y-%b-%d') except ValueError: self.end_date = '' return self.end_date
def get_tour_date(self): """ Returns TravelDate converted from 'YYYY-MM-DD' to 'DD-MMM-YYYY :return: String """ if self.tour_date == '': tour_date = self.request_xml.get_element_text( self.booking_mapping['tour_date']['tag']) if tour_date: try: self.tour_date = convert_date_format( tour_date, '%Y-%m-%d', '%Y-%b-%d') except ValueError: self.tour_date = '' return self.tour_date
def availability_response( self, results, transaction_error, request_error_code = None, request_error_tag = None, request_error_message = None ): """ Formats response in XML for VIATOR :return: String """ # Creates root tag to identify it as an Availability Response self.response_xml.create_root_element( 'AvailabilityResponse' ) # Creates elements to identify the request self.response_xml.create_element( 'ApiKey', None, self.get_api_key() ) self.response_xml.create_element( 'ResellerId', None, self.get_distributor_id() ) self.response_xml.create_element( 'SupplierId', None, self.request_xml.get_element_text( 'SupplierId' ) ) self.response_xml.create_element( 'ExternalReference', None, self.get_external_reference() ) # Creates element for TIMESTAMP now = datetime.datetime.now() timestamp = now.strftime( "%Y-%m-%dT%H:%M:%S.%j+10:00" ) # %z is not being recognized self.response_xml.create_element( 'Timestamp', None, timestamp ) # Creates element for PARAMETER age_band_map = self.get_age_band_map() if age_band_map: parameter_element = self.response_xml.create_element( 'Parameter' ) self.response_xml.create_element( 'Name', parameter_element, 'AgeBandMap' ) self.response_xml.create_element( 'Value', parameter_element, age_band_map ) # Creates elements to identify the Request Status request_status_element = self.response_xml.create_element( 'RequestStatus' ) request_status = 'ERROR' if request_error_code else 'SUCCESS' self.response_xml.create_element( 'Status', request_status_element, request_status ) if request_status == 'ERROR': request_error_element = self.response_xml.create_element( 'Error', request_status_element ) self.response_xml.create_element( 'ErrorCode', request_error_element, request_error_code ) self.response_xml.create_element( 'ErrorMessage', request_error_element, request_error_message ) self.response_xml.create_element( 'ErrorDetails', request_error_element, 'Error on TAG ' + request_error_tag ) # Creates element for SUPPLIER PRODUCT CODE (TOUR CODE) self.response_xml.create_element( 'SupplierProductCode', None, self.get_tour_code() ) # Iterates over RON results to build availability response for each prouct option if results: for result in results: # creates root element tour_availability = self.response_xml.create_element( 'TourAvailability' ) # converts date and creates its sub-element tour_date = convert_date_format( result['dteTourDate'], '%Y-%b-%d', '%Y-%m-%d' ) self.response_xml.create_element( 'Date', tour_availability, tour_date ) # creates status element availability_status = self.response_xml.create_element( 'AvailabilityStatus', tour_availability ) status = 'AVAILABLE' if result['intAvailability'] > 0 else 'UNAVAILABLE' self.response_xml.create_element( 'Status', availability_status, status ) if status == 'UNAVAILABLE': unavailability_reason = 'SOLD_OUT' if result['boolTrip'] else 'BLOCKED_OUT' self.response_xml.create_element( 'UnavailabilityReason', availability_status, unavailability_reason ) # creates tour options element tour_options = self.response_xml.create_element( 'TourOptions', tour_availability ) option = self.response_xml.create_element( 'Option', tour_options ) self.response_xml.create_element( 'Name', option, 'Basis' ) basis_values = "B=" + str( result['intBasisID'] ) + ";S=" + str( result['intSubBasisID'] ) + ";T=" + str( result['intTourTimeID'] ) self.response_xml.create_element( 'Value', option, basis_values ) # Returns XML as string return self.response_xml.return_xml_string()
def availability_response(self, results, transaction_error, request_error_code=None, request_error_tag=None, request_error_message=None): """ Formats response in XML for VIATOR :return: String """ # Creates root tag to identify it as an Availability Response self.response_xml.create_root_element('AvailabilityResponse') # Creates elements to identify the request self.response_xml.create_element('ApiKey', None, self.get_api_key()) self.response_xml.create_element('ResellerId', None, self.get_distributor_id()) self.response_xml.create_element( 'SupplierId', None, self.request_xml.get_element_text('SupplierId')) self.response_xml.create_element('ExternalReference', None, self.get_external_reference()) # Creates element for TIMESTAMP now = datetime.datetime.now() timestamp = now.strftime( "%Y-%m-%dT%H:%M:%S.%j+10:00") # %z is not being recognized self.response_xml.create_element('Timestamp', None, timestamp) # Creates element for PARAMETER age_band_map = self.get_age_band_map() if age_band_map: parameter_element = self.response_xml.create_element('Parameter') self.response_xml.create_element('Name', parameter_element, 'AgeBandMap') self.response_xml.create_element('Value', parameter_element, age_band_map) # Creates elements to identify the Request Status request_status_element = self.response_xml.create_element( 'RequestStatus') request_status = 'ERROR' if request_error_code else 'SUCCESS' self.response_xml.create_element('Status', request_status_element, request_status) if request_status == 'ERROR': request_error_element = self.response_xml.create_element( 'Error', request_status_element) self.response_xml.create_element('ErrorCode', request_error_element, request_error_code) self.response_xml.create_element('ErrorMessage', request_error_element, request_error_message) self.response_xml.create_element( 'ErrorDetails', request_error_element, 'Error on TAG ' + request_error_tag) # Creates element for SUPPLIER PRODUCT CODE (TOUR CODE) self.response_xml.create_element('SupplierProductCode', None, self.get_tour_code()) # Iterates over RON results to build availability response for each prouct option if results: for result in results: # creates root element tour_availability = self.response_xml.create_element( 'TourAvailability') # converts date and creates its sub-element tour_date = convert_date_format(result['dteTourDate'], '%Y-%b-%d', '%Y-%m-%d') self.response_xml.create_element('Date', tour_availability, tour_date) # creates status element availability_status = self.response_xml.create_element( 'AvailabilityStatus', tour_availability) status = 'AVAILABLE' if result[ 'intAvailability'] > 0 else 'UNAVAILABLE' self.response_xml.create_element('Status', availability_status, status) if status == 'UNAVAILABLE': unavailability_reason = 'SOLD_OUT' if result[ 'boolTrip'] else 'BLOCKED_OUT' self.response_xml.create_element('UnavailabilityReason', availability_status, unavailability_reason) # creates tour options element tour_options = self.response_xml.create_element( 'TourOptions', tour_availability) option = self.response_xml.create_element( 'Option', tour_options) self.response_xml.create_element('Name', option, 'Basis') basis_values = "B=" + str(result['intBasisID']) + ";S=" + str( result['intSubBasisID']) + ";T=" + str( result['intTourTimeID']) self.response_xml.create_element('Value', option, basis_values) # Returns XML as string return self.response_xml.return_xml_string()