Skip to content

Qti exercise export#5103

Merged
rtibbles merged 7 commits intolearningequality:unstablefrom
rtibbles:qti_export
Jul 22, 2025
Merged

Qti exercise export#5103
rtibbles merged 7 commits intolearningequality:unstablefrom
rtibbles:qti_export

Conversation

@rtibbles
Copy link
Copy Markdown
Member

@rtibbles rtibbles commented Jun 11, 2025

Summary

  • Adds Pydantic models to allow validated construction of a subset of the QTI XML schema
  • Adds Pydantic models to allow validated construction of HTML
  • Adds Pydantic models to allow validated construction of MathML
  • Adds utilities for parsing assessment item markdown to HTML and MathML for spec compliant bundling in QTI
  • Refactors Perseus exercise archive generation into an abstract base class and a specific perseus class
  • Creates a correlated QTI archive generation using the same base class
  • Makes creation of Perseus or QTI conditional on the existence of Free Response items in the AssessmentItems
  • Adds copious tests for most of the above.

References

Fixes #4878

Reviewer guidance

Creating a "Survey" exercise with a free response question and then checking you can successfully publish it is the main manual check.

The generated QTI item XML can be cross checked against https://qti.amp-up.io/testrunner/sandbox/

The IMSManifest format should be checked against the examples here: https://www.imsglobal.org/spec/qti/v3p0/guide#h.r1pkoq891wk7 and here: https://www.imsglobal.org/spec/qti/v3p0/impl#h.5esb962k7g83

The QTI schema is incredibly verbose. Where I can, I have attempted to slightly reduce the verbosity if possible, but mostly the verbosity of the schema has resulted in a lot of structural code.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow publishing of QTI zips in addition to perseus

4 participants