@JeremyCallan
There are 2 ways you can get this data
1. Through Canvas Data (up to 48 hours behind)
Canvas Data will allow you to get the data school-wide. The following SQL (Postgres) will list all submissions and trainer that is assigned to the course
SELECT
course_dim.name, -- Course Name
account_dim.name AS School, -- Account Name that the course belong to
assignment_dim.title AS "Assessment Name", -- Name of the assessment
user_dim.NAME AS "Student Name", -- Student Name
ES.workflow_state AS "Course Enrollment Status", -- Student's enrolment status -E.g. active / completed
pseudonym_dim.sis_user_id AS "Student ID", -- Student SIS ID
pseudonym_dim.unique_name AS "Email", -- Student Email
pseudonym_dim.last_request_at AS "Last Login", -- Last time they login
CASE WHEN submission_dim.grade is NULL THEN 'First Submission' WHEN submission_dim.grade = 'Not Yet Satisfactory' THEN 'ReSubmission' END, -- If no grade -> New submission, if grade exist -> resubmission
submission_dim.submitted_at AS "Submitted At", -- submission date
DATE_PART('day', (Now() - submission_dim.submitted_at)) AS "Days since Submitted", -- script to calculate date different
assignment_dim.due_at AS "Assessment Due Date", -- assessment due date
DATE_PART('day',(assignment_dim.due_at - submission_dim.submitted_at)) AS "Days since/to Due Date", -- script to calculate date different
CONCAT('https://youracademy.instructure.com/courses/', course_dim.canvas_id, '/gradebook/speed_grader?assignment_id=', assignment_dim.canvas_id, '&student_id=', user_dim.canvas_id) AS "SpeedGrader Link", -- Create SpeedGrader link
(SELECT string_agg(DISTINCT User_dim.name, ', ')
FROM (Enrollment_dim INNER JOIN Course_dim as cd ON Enrollment_dim.course_id = cd.id) INNER JOIN User_dim ON Enrollment_dim.user_id = User_dim.id
WHERE Enrollment_dim.type = 'TeacherEnrollment' and cd.name = course_dim.name
GROUP BY cd.name) -- Get the trainer that is assigned to the course
FROM
enrollment_dim as ES
INNER JOIN
(
pseudonym_dim
INNER JOIN
(
(((course_dim
INNER JOIN
submission_fact
ON course_dim.id = submission_fact.course_id)
INNER JOIN
assignment_dim
ON submission_fact.assignment_id = assignment_dim.id)
INNER JOIN
submission_dim
ON submission_fact.submission_id = submission_dim.id)
INNER JOIN
user_dim
ON submission_fact.user_id = user_dim.id
)
ON pseudonym_dim.user_id = user_dim.id
)
ON ( ES.course_id = course_dim.id )
AND
(
ES.user_id = user_dim.id
)
INNER JOIN account_dim ON course_dim.account_id = account_dim.id
WHERE
ES.type = 'StudentEnrollment'
AND
ES.workflow_state != 'completed' -- only return submission list from active student
AND
pseudonym_dim.sis_user_id IS NOT NULL
AND
(
submission_dim.workflow_state = 'submitted'
AND NOT submission_dim.workflow_state = 'deleted'
AND NOT submission_dim.workflow_state = 'graded'
)
2. Using API/GraphQL - real-time data to get "To-Do" list
You can create a portal or an LTI tool where a trainer can request this list. You will need to know some basic programming to process the data returned (E.g. process and filter JSON)
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.