def get_program(self, program_path, controller=None):
        if not program_path or program_path[0] != '/':
            raise ValueError("program_path must be a full path with leading slash")

        items = program_path[1:].split('/')
        result = self
        for item in items:
            result = result[item]

        if hasattr(result, "lower"):
            # string redirect
            return self.get_program(result)

        elif type(result) is Manifest:
            return result.get_program('/')

        elif hasattr(result, 'append'):
            matching_blank = []
            for program in result:
                if controller in program.controllers:
                    return program
            
                if not program.controllers or not controller:
                    # no exact matching controllers for this program.
                    # Use the first controller with no
                    matching_blank.append(program)
            if matching_blank:
                return matching_blank[0]
            else:
                raise ProgramNotFound("No matcning program for %s controller" % controller)

        return result
Handles confirming an order and processing the charges.
dataset/ETHPy150Open priestc/giotto/giotto/programs/__init__.py/Manifest.get_program--crossover with--dataset/ETHPy150Open dokterbob/satchmo/satchmo/apps/payment/views/confirm.py/ConfirmController.confirm