Python Challenge - Swap Elements in a Linked List

I made a generator function to have an iterator through the nodes of the linked list first.
Swapping the nodes themselves proved too unwieldy, so I just swapped their .data

my code
from LinkedList import *

def linked_list_iterator(head_node):
  # generator function for iterating through all nodes
  yield head_node
  current = head_node
  while hasattr(current, "next") and current.next is not None:
    yield current.next
    current = current.next

def swap_nodes(input_list, val1, val2):
  have_node1 = False
  have_node2 = False
  previous = None
  for node in linked_list_iterator(input_list):
    if (not have_node1) and (node.data == val1):
      node1 = node
      previous1 = previous
      have_node1 = True
    elif (not have_node2) and (node.data == val2):
      node2 = node
      previous2 = previous
      have_node2 = True
    elif (have_node1 and have_node2):
      break;
    previous = node

  # swap data
  temp_data = node1.data
  node1.data = node2.data
  node2.data = temp_data

  return input_list
  

demo_list = make_linked_list([1, 2, 3, 4, 5, 6])
swap_nodes(demo_list, 2, 5)
demo_list.print_linked_list()