Owliver is an educational site to make and take tests. Sort of like BITSAT and JEE Main online.
Eklavya Sharma
Using Python 3.4 and Django 1.8
- Many types of questions (mcq, text, integer, True/False and more)
- Questions can be split across many sections
- Shuffle questions, sections and question options in mcqs
- User's data is not lost when browser window closes
- Control marking scheme independently for each section
- Set time limit if needed and control when users can start exam
- Detailed report shown after (and sometimes during) exam
- Bonus sections which unlock only after attempting a minimum number of questions or scoring min required marks
- Ability to add hint and extra bonus for not viewing hint
- Control when user can see answer and solution (after attempting that question or after finishing whole exam)
- Export exams as JSON
Owliver is written in python 3.4 and is not compatible with python 2.
You should have these python 3 packages installed:
- Django 1.8 (
pip install django
) - jsonschema (this package is optional, but it is recommended) (
pip install jsonschema
)
Now you must follow these steps to set up the project for use:
- Open a terminal in the project's root directory
python manage.py migrate
Now you should add exams to the database because user-uploadable exams are not yet supported.
python scripts/add_exam.py exams/*.json
Now test using django's development server
python manage.py runserver
By default, The website will load JQuery, Bootstrap and MathJax from the internet when required. If you want it to use a local copy instead, you'll have to make a folder named 'extstatic' in the project's directory and place files in it (symlinks work as well).
- JQuery will be loaded from 'extstatic/jquery.min.js'
- Bootstrap's folder should be 'extstatic/bootstrap'
- MathJax's folder should be 'extstatic/mathjax'
Documentation for this site is in the doc folder in markdown. To generate HTML documentation, run make docs
in the project's root directory. If you wish to contribute, make sure to read everything in doc.
There is a bug in jsonschema
because of which it does not load nested $ref
s to external files (see issue on github). Because of this bug, I had to make a single schema file.