def main()

in utils/scripts/lti_assignment_gradeimport.py [0:0]


def main(user_email, final_grade_percentage):
  for email in EMAILS_TO_BE_REPLACED:
    if email.get("zybooks_email") == user_email:
      write_log(
          f"replaced zybooks email {user_email} with clp email {email.get('clp_email')}",
          "data_collection_changes.txt")
      user_email = email.get("clp_email")

  if user_email in SKIP_EMAILS:
    write_log(f"skipping inactive student with {user_email}",
              "data_collection_changes.txt")
    return

  # get user id using email
  user_data = User.find_by_email(user_email)
  if not user_data:
    write_log(f"user with email not found {user_email}",
              "data_collection_errors.txt")
    return

  # query course enrollment to get section id, classroom id
  all_user_course_details = CourseEnrollmentMapping.find_by_user(
      user_data.user_id)
  user_course_details = None
  # # handle for multiple sections
  if len(all_user_course_details) > 1:
    for course in all_user_course_details:
      if "CSE110" in course.section.name:
        user_course_details = course
        break
  else:
    if all_user_course_details and "CSE110" in all_user_course_details[
        0].section.name:
      user_course_details = all_user_course_details[0]
    else:
      write_log(f"something wrong for student with email {user_email}",
                "data_collection_errors.txt")
      return

  if not user_course_details:
    return
  section_id = user_course_details.section.id
  # fetch lti assignment using the lti assignment title and context id/section id
  all_lti_assignments = LTIAssignment.collection.filter("context_id", "==",
                                                        section_id).fetch()

  lti_assignment = None
  for assignment in list(all_lti_assignments):
    # all_assignments.append(assignment)
    if assignment.lti_assignment_title == LTI_ASSIGNMENT_TITLE:
      lti_assignment = assignment
      break

  if lti_assignment is None:
    write_log(f"user found in section {user_course_details.section.name}",
              "data_collection_errors.txt")
  # send student submissions using course work id, grades and email

  lti_assignment_max_points = None
  if lti_assignment:
    lti_assignment_max_points = lti_assignment.max_points

  course_work_id = None
  if lti_assignment:
    course_work_id = lti_assignment.course_work_id
  data_to_append = {
      "user_id": user_data.user_id,
      "user_email": user_email,
      "section_id": section_id,
      "section_name": user_course_details.section.name,
      "lti_assignment_title": LTI_ASSIGNMENT_TITLE,
      "lti_max_points": lti_assignment_max_points,
      "course_work_id": course_work_id,
      "final_grade_percentage": final_grade_percentage,
      "classroom_id": user_course_details.section.classroom_id
  }

  FINAL_JSON.append(data_to_append)