I need to produce a CSV file that lists which Courses have Quizzes.
# Checkes each course in the array course_ids[] # to see if it has any quizzes # it does not determine if the quizz is published or not # it will return TRUE for both published and unpublished quizzes import requests import csv import os # beta expires April 30th 2024 API_TOKEN = '...' #beta BASE_URL = 'https://...instructure.com/api/v1/' # Array of course IDs to check for quizzes course_ids = [2486,8500,8501,8502,1525] # Set up headers with Authorization token headers = { 'Authorization': 'Bearer ' + API_TOKEN, } # Function to check if a course contains any quizzes def course_has_quiz(course_id): # API endpoint to list quizzes in a specific course url = f"{BASE_URL}courses/{course_id}/quizzes" # Make a GET request to the Canvas API response = requests.get(url, headers=headers) # Check if the request was successful (status code 200) if response.status_code == 200: quizzes = response.json() return len(quizzes) > 0 else: print(f"Failed to retrieve quizzes for course {course_id}. Status code: {response.status_code}") return False # Function to get the next version number for the CSV file def get_next_version_number(): current_version = 0 files = os.listdir('.') for file in files: if file.startswith('course_quizzes_') and file.endswith('.csv'): try: version = int(file.split('_')[2].split('.')[0]) if version >= current_version: current_version = version + 1 except ValueError: pass return current_version # Export course data to CSV file with dynamic version number def export_course_data_to_csv(course_data): next_version = get_next_version_number() csv_filename = f'course_quizzes_{next_version:03d}.csv' with open(csv_filename, 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile) csv_writer.writerow(['Course ID', 'Has Quiz']) for course_id, has_quiz in course_data.items(): csv_writer.writerow([course_id, has_quiz]) return csv_filename # Return the filename # Main function def main(): course_data = {} # Iterate over course IDs and check if each course has a quiz for course_id in course_ids: has_quiz = course_has_quiz(course_id) course_data[course_id] = has_quiz print(f"Checking course {course_id}") # Export course data to CSV file csv_filename = export_course_data_to_csv(course_data) print(f"Course data exported to {csv_filename}") if __name__ == "__main__": main()
With the new SpeedGrader UI, we are seeing student names appear in the page title even when the “Hide student names” setting is enabled. When using Classic Quizzes, there is no option within the quiz settings to enable anonymous grading, so we rely on instructors using the hide student names setting in SpeedGrader to…
Speedgrader chaning file name when being downloaded. Speedgrader: When downloading a submitted assignment, the file name is being changed to an unrecognizable name — (Student's actual name was part of the file name — changed for privacy.) Ideas???
We are all familiar with the standard Course Calendar, where assignment due dates are automatically added. However, at my institution, we structure our assignments as Challenges that develop over a period of time, rather than just a single deadline. Currently, the calendar only highlights the "end point." It would be a…
The current placement of the "Submit" button creates a "slip" in user behavior where habit-clicking "Next" leads to an accidental final submission. I think Canvas could easily fix this by: Moving the Submit button away from the navigation buttons (maybe above the question instead of below it) and/or Adding a "Confirm…
Hi everyone! I would love to hear your suggestions and best‑practice tips on implementing copyright settings. https://embed.app.guidde.com/playbooks/8eYgHHmwTXKMLxDW4LqEDX