def verifiy_attachment()

in microservices/lms/src/services/section_service.py [0:0]


def verifiy_attachment(title ,original_coursework_dict,
                       copied_coursework_dict,lms_job_id):
  """
  This function is verifies the attachment of coursework
  It compares the original coursework dict and copid coursework dict
  returns the missing attachments in list
  """
  missing_attachments = set()
  original_drive_files= set()
  original_youtube_video= set()
  original_link=set()
  original_form=set()
  lms_job = LmsJob.find_by_id(lms_job_id)
  logs = lms_job.logs
  try:
    for attachment in original_coursework_dict[title]["materials"]:
      if "driveFile" in attachment.keys():
        original_drive_files.add(attachment["driveFile"]["driveFile"]["title"])
      if "youtubeVideo" in attachment.keys():
        original_youtube_video.add(attachment["youtubeVideo"]["title"])
      if "link" in attachment.keys():
        Logger.error(f"coursework{title} {attachment}")
        if "title" in attachment["link"]:
          original_link.add(attachment["link"]["title"])
        else:
          original_link.add(attachment["link"]["url"])
      if "form" in attachment.keys():
        original_form.add(attachment["form"]["title"])

    copied_drive_files= set()
    copied_youtube_video= set()
    copied_link= set()
    copied_form=set()
    # if "materials" in copied_coursework_dict[title]:
    for attachment in copied_coursework_dict[title]["materials"]:
      if "driveFile" in attachment.keys():
        copied_drive_files.add(attachment["driveFile"]["driveFile"]["title"])
      if "youtubeVideo" in attachment.keys():
        copied_youtube_video.add(attachment["youtubeVideo"]["title"])
      if "link" in attachment.keys():
        if "title" in attachment["link"]:
          copied_link.add(attachment["link"]["title"])
        else:
          copied_link.add(attachment["link"]["url"])
      if "form" in attachment.keys():
        copied_form.add(attachment["form"]["title"])
    missing_attachments = []

    if original_drive_files != copied_drive_files:
      missing_drive_files = original_drive_files - copied_drive_files
      missing_attachments.extend(missing_drive_files)
    if original_youtube_video !=copied_youtube_video:
      missing_youtube_video = original_youtube_video - copied_youtube_video
      missing_attachments.extend(missing_youtube_video)

    if original_link != copied_link:
      missing_link = original_link - copied_link
      missing_attachments.extend(missing_link)

    if original_form != copied_form:
      missing_form = original_form - copied_form
      missing_attachments.extend(missing_form)

    return missing_attachments
  except Exception as e:
    error = traceback.format_exc().replace("\n", " ")
    Logger.error(f"Error {title} in attachment -{error} {e}")
    logs["errors"].append(f"Error {title} in attachment -{error}")
    lms_job.logs =logs
    lms_job.update()
    return attachment