Django port of exeLearning