Returns a list of all uw_sws.models.Registration objects

def _json_to_registrations(data, section):
    """
    Returns a list of all uw_sws.models.Registration objects
    """
    registrations = []
    person_threads = {}
    for reg_data in data.get("Registrations", []):
        registration = Registration()
        registration.section = section
        registration.is_active = reg_data["IsActive"]
        registration.is_credit = reg_data["IsCredit"]
        registration.is_auditor = reg_data["Auditor"]
        registration.is_independent_start = reg_data["IsIndependentStart"]
        if len(reg_data["StartDate"]):
            registration.start_date = parse(reg_data["StartDate"])
        if len(reg_data["EndDate"]):
            registration.end_date = parse(reg_data["EndDate"])
        if len(reg_data["RequestDate"]):
            registration.request_date = parse(reg_data["RequestDate"])
        registration.request_status = reg_data["RequestStatus"]
        registration.duplicate_code = reg_data["DuplicateCode"]
        registration.credits = reg_data["Credits"]
        registration.repository_timestamp = datetime.strptime(
            reg_data["RepositoryTimeStamp"], "%m/%d/%Y %H:%M:%S %p")
        registration.repeat_course = reg_data["RepeatCourse"]
        registration.grade = reg_data["Grade"]

        registration._uwregid = reg_data["Person"]["RegID"]
        if registration._uwregid not in person_threads:
            thread = SWSPersonByRegIDThread()
            thread.regid = registration._uwregid
            thread.start()
            person_threads[registration._uwregid] = thread

        registrations.append(registration)

    for registration in registrations:
        thread = person_threads[registration._uwregid]
        thread.join()
        registration.person = thread.person
        del registration._uwregid

    return registrations