Tworzenie załączników poza Google Classroom

W tym przewodniku opisano tworzenie załączników dodatków w witrynie lub aplikacji. Interakcje są podobne do tworzenia projektów przy użyciu punktów końcowych CourseWork API. Zaimplementuj tę ścieżkę, aby umożliwić użytkownikom tworzenie załączników dodatków na stronie lub w aplikacji.

Przepływ pracy

Ogólnie ścieżka tworzenia załączników przebiega tak:

  1. Użytkownik nauczyciela otwiera Twoją witrynę lub aplikację i wybiera treść do przypisania uczniom.
  2. Sprawdź, czy użytkownik może tworzyć załączniki dodatków.
  3. Jeśli użytkownik nie może tworzyć załączników dodatków, utwórz projekt CourseWork z adresem URL wybranej treści jako materiałem linku.
  4. Jeśli użytkownik może tworzyć załączniki dodatków, wykonaj te czynności:
    1. Utwórz projekt.
    2. Utwórz załącznik dodatku, który zawiera link do wybranej treści i powiąż go z nowym projektem.
    3. Poinformuj nauczyciela, że projekt został utworzony.

Każdą czynność opisano w dalszej części tego artykułu.

Sprawdzanie, czy użytkownik może tworzyć załączniki dodatków

Możesz tworzyć załączniki dodatków w imieniu kwalifikujących się użytkowników. Kwalifikujący się użytkownik to użytkownik będący nauczycielem na zajęciach, w których próbujesz utworzyć projekty w ramach kursu CourseWork, oraz ma przypisaną licencję Teaching & Learning lub Education Plus na wersję Google Workspace for Education.

Zacznij od określenia, czy użytkownik może tworzyć dodatki w obrębie danego środowiska Course. Wyślij żądanie do punktu końcowego courses.checkAddOnCreationEligibility z identyfikatorem zajęć.

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}.')

Jeśli użytkownik spełnia wymagania, odpowiedź zawiera wartość logiczną isCreateAttachmentEligible ustawioną na true. Jeśli użytkownik się nie kwalifikuje, odpowiedź nie będzie zwracać wartości logicznej isCreateAttachmentEligible.

Przekieruj użytkownika na podstawie jego uprawnień

To ustawienie określa, czy możesz tworzyć załączniki dodatków dla użytkowników.

Użytkownik nie spełnia kryteriów

Jeśli użytkownik nie może tworzyć załączników dodatków, utwórz nowe zadanie CourseWork z adresem URL treści wybranym przez użytkownika jako 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")}'
  )

Odpowiedź zawiera projekt z żądanych zajęć z załączonymi treściami. Użytkownicy mogą kliknąć Link, aby otworzyć treści w witrynie na nowej karcie.

Wersja robocza zadania domowego z linkiem

Rysunek 1. Widok przez nauczyciela wersji roboczej projektu CourseWork z linkiem.

Uprawniony użytkownik

Wykonaj czynności opisane poniżej, jeśli użytkownik może tworzyć załączniki dodatków.

  1. Utwórz nowy projekt w aplikacji CourseWork bez załączników.
  2. Utwórz załącznik dodatku.

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")}'
  )

Dodatek pojawi się w Classroom jako karta załącznika. Określone w żądaniu adresy URL otwierają się w odpowiednim elemencie iframe dla każdego widoku danych.