Skip to content

LucasWolfgang/QAS-Editor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

❗ There is NO stable release so far. ❗

Description

Question and Answer Sheet Editor is a desktop-focused python API and a UI utility to automate/help with tasks related to the creation, deletion, update, organization and convertion of question databases.

The structure of the module is based on the Moodle XML. The initial source code was forked from moodle-questions and has some inspiration from moodlexport and markdown2moodle. Some code was reused from moodle2edx-0.1.0,text2qti and amc2moodle too.

The GUI uses code from Megasolid Idiom, pyqt-collapsible-widget and Creating A Tag Bar In PySide.

Besides repos listed above, some testcases were also taken from moodle test website, qti-examples and edx4edx_lite.

Requirements

  • Requires at least Python 3. If using all dependencies, at least Python 3.6.

  • To install it, simply download the repo, cd to it and run:

    python -m pip install .

Features

  • A brand-new processor based flow. No need of multiple question types anymore. All you need is a single type to rule them all, plus python functions to define how it iteractive item in the question body will behave.

  • A GUI to create, delete, modify and organize questions.

QAS editor GUI


  • Many different import and export formats.
Type Import Export Test Type Import Export Test
Aiken Markdown (MCQ)
CSV Card Moodle XML
QTI 2.1 QAS JSON
QTI 3.0 Tex (AMQ)
Cloze Tex (moodlexport)
GIFT Tex (MCexam)
ODF Tex (alterqcm)
EDX ZIP
KahootCSV

  • Which are used by many platforms.
Anki Brightspace Kahoot! Moodle
NEO LMS Canvas LMS Quizlet

Database

  • The QAS Database is the repository used to archive questions that can be opened using this QAS Editor or other applications. The extensions currently used is the Moodle XML, but I am studying changing it to a better one.

Contributing

This one is a really large project, and I would appreciate if you could contribute to it. Currently the repository can be improved by:

  • updating documentation (in-code and wiki);
  • adding examples;
  • adding new parsers;
  • improving parsers' performance;
  • adding UI functionalities;
  • adding pytests;
  • improving code quality (flake8 and pylint).

To contribute to this repo just do the usual. Fork, modify and send a PR. No need to create a separate branch, unless you want to deliver your updates in chunks. Always make sure all tests are passing before submitting the PR. It does not need to be fully documented, nor fully pass pylint and flake8, but this would make me pretty happy :).

Here are some points to consider before submitting a PR:

  • This python module is a desktop API/utility. Try your best to keep eveything local. If the only way to import/export the database is connecting to a website or other external service, you may still submit the PR, but it is very likely that it will be not accepted.
  • This module strives to be as pure python and light as possible. Only submit PRs that add new packages/modules to be intalled by the end user if the work needed to implement the code would be herculean, or the module/package can be reused in multiple other parts of the code improving readability and performance.
  • The scope of this repo is only of converting and modifying question databases (creating, deleting, modifying and reorganizing questions).

Thank you,
Wolfgang\