Example #1
0
File: viator.py Project: DRGC/vron
 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
Example #2
0
File: viator.py Project: DRGC/vron
 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
Example #3
0
 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
Example #4
0
 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
Example #5
0
File: viator.py Project: DRGC/vron
    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()
Example #6
0
    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()