Crea archivos adjuntos fuera de Google Classroom

En esta guía, se explica cómo crear archivos adjuntos de complementos en tu sitio web o aplicación. Las interacciones son similares a la creación de tareas con los extremos de la API de CourseWork. Implementa este recorrido para permitir que los usuarios creen archivos adjuntos de complementos desde tu sitio web o aplicación.

Flujo de trabajo

En un nivel alto, el recorrido de creación de adjuntos sigue esta secuencia:

  1. Un usuario profesor abre tu sitio web o app y selecciona un fragmento de contenido para asignarlo a sus estudiantes.
  2. Verifica que el usuario pueda crear archivos adjuntos de complementos.
  3. Si el usuario no puede crear archivos adjuntos de complementos, crea una tarea de CourseWork con la URL del contenido seleccionado como material del vínculo.
  4. Si el usuario puede crear archivos adjuntos de complementos, haz lo siguiente:
    1. Crea una tarea.
    2. Crea un archivo adjunto de complemento que se vincule al contenido seleccionado y asócialo con la nueva tarea.
    3. Infórmale al profesor que la tarea se creó correctamente.

Cada acción se describe en las siguientes secciones.

Cómo comprobar si un usuario puede crear archivos adjuntos de complementos

Puedes crear archivos adjuntos de complementos en nombre de un usuario apto. Un usuario apto es un usuario que es profesor en el curso en el que intentas crear tareas de CourseWork y tiene asignada la licencia de la edición Google Workspace for Education de Teaching & Learning o Education Plus.

Primero, determina si el usuario puede crear complementos en una Course determinada. Emite una solicitud al extremo courses.checkAddOnCreationEligibility, incluido el ID del curso.

Python

eligibility_response = (
  classroom_service.courses()
  .checkAddOnCreationEligibility(courseId=course_id)
  .execute()
)
is_create_attachment_eligible = (
  eligibility_response.get('isCreateAttachmentEligible')
)
print(f'User eligibility for course {eligibility_response.get("courseId")}'
      f': {is_create_attachment_eligible}.')

Si el usuario es apto, la respuesta contiene el valor booleano isCreateAttachmentEligible establecido en true. Si el usuario no es apto, la respuesta no mostrará el valor booleano isCreateAttachmentEligible.

Enrutar al usuario según su elegibilidad

La elegibilidad determina si puedes crear archivos adjuntos de complementos para un usuario.

Usuario no apto

Si el usuario no puede crear archivos adjuntos de complementos, crea una nueva tarea CourseWork con la URL del contenido que seleccionó el usuario como Link.

Python

if not is_create_attachment_eligible:
  coursework = {
    'title': 'My CourseWork Assignment with Link Material',
    'description': 'Created using the Classroom CourseWork API.',
    'workType': 'ASSIGNMENT',
    'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.
    'maxPoints': 100,
    'materials': [
      {'link': {'url': my_content_url}}
    ]
  }

  assignment = (
    service.courses()
    .courseWork()
    .create(courseId=course_id, body=coursework)
    .execute()
  )

  print(
    f'Link Material assignment created with ID: {assignment.get("id")}'
  )

La respuesta contiene una tarea en el curso solicitado con el contenido adjunto. Los usuarios pueden hacer clic en el Link para abrir el contenido de tu sitio en una pestaña nueva.

Crea un borrador de la tarea de CourseWork con material del vínculo

Figura 1. Vista del profesor de una tarea en borrador de CourseWork con material de vínculo.

Usuario apto

Haz lo siguiente si el usuario puede crear archivos adjuntos de complementos.

  1. Crea una tarea CourseWork nueva sin archivos adjuntos.
  2. Crea un archivo adjunto del complemento.
    • Establece el postId de AddOnAttachment como el id de la asignación recién creada.
    • Asegúrate de proporcionar URLs al contenido seleccionado por el usuario para cada vista que admitas.

Python

if is_create_attachment_eligible:
  coursework = {
    'title': 'My CourseWork Assignment with Add-on Attachment',
    'description': 'Created using the Classroom CourseWork API.',
    'workType': 'ASSIGNMENT',
    'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.
    'maxPoints': 100,
  }

  assignment = (
    classroom_service.courses()
    .courseWork()
    .create(courseId=course_id, body=coursework)
    .execute()
  )

  print(
    f'Empty assignment created with ID: {assignment.get("id")}'
  )

  attachment = {
    'teacherViewUri': {'uri': teacher_view_url},
    'studentViewUri': {'uri': student_view_url},
    'studentWorkReviewUri': {'uri': grade_student_work_url},
    'title': f'Test Attachment {test_label}',
  }

  add_on_attachment = (
    service.courses()
    .courseWork()
    .addOnAttachments()
    .create(
      courseId=course_id,
      itemId=assignment.get("id"),  # ID of the new assignment.
      body=attachment,
    )
    .execute()
  )

  print(
    f'Add-on attachment created with ID: {add_on_attachment.get("id")}'
  )

El complemento aparece como una tarjeta adjunta en Classroom. Las URLs especificadas en la solicitud se abren en el iframe para cada vista adecuado.