"""Merge two CSV files and output the results.
"""
import csv

def merge_csv_files(csv_path1=None, csv_path2=None,
                    wanted_headers=['id', 'student_id', 'name']):
    """Merge a file 'input1.csv' and 'input2.csv'.
    """
    input1 = csv_path1
    input2 = csv_path2

    students_reader = csv.DictReader(open(input1, 'rb'))
    payments_reader = csv.DictReader(open(input2, 'rb'))

    result_writer = None

    students = dict()
    for student in students_reader:
        # Read all students and store them under their respective id
        students[student['id']] = student
    for payment in payments_reader:
        # Read all payments and lookup a matching student
        student_id = payment['student_id']

        if student_id not in students.keys():
            # Oops, what happened?
            print "STUDENT NOT FOUND: ", student_id
            continue

        student = students[student_id]
        result_line = payment
        result_line.update(student)
        if result_writer is None:
            # Create a CSV writer and ouput header line
            result_writer = csv.DictWriter(open('result.csv', 'wb'), 
                                           wanted_headers, 
                                           extrasaction='ignore')
            header_line = dict([(x, x) for x in wanted_headers])
            result_writer.writerow(header_line)
        result_writer.writerow(result_line)
