This is a demo project for EduPlanner, an educational planning tool. The project includes sample courses, tasks, and user configurations to showcase the capabilities of EduPlanner.
- python-hatch:
pacman -S python-hatch - python-build:
pacman -S python-build
We're using hatchling - all you have to run is python3 -m build to build the package,
and python3 -m hatch shell to enter the development environment containing all necessary dependencies and such.
The course and task configurations are located in the config/courses.yml file. You can modify this file to add or change courses and tasks as needed. User configurations are in the config/users.yml file. Note that the schema for user configurations is auto-generated via eduplanner_demo schemagen to ensure that task IDs correspond to existing tasks. If you add new tasks, make sure to update the schema accordingly by running the command (vscode should do this automatically if you've installed the recommended extensions).
You can use the provided docker-compose setup to run test containers for a moodle test server and mariadb instance.
Run the following commands to start the containers (or alternatively use ./up.sh):
mkdir -p .dev/mariadb_data
sudo chmod -R 777 .dev/mariadb_data
docker-compose up -dTo whipe the installation, you can run the following commands (or alternatively use ./destroy.sh):
docker-compose down
sudo rm -rf .devTODO: automate these processes
Before you can run the demo script, you need to
- install the eduplanner plugin
- Enable web services in moodle
- Site administration -> Advanced features -> Enable web services
- create roles for the included capabilities (student, teacher, slotmaster)
The names of these roles are not important - as long as there's one for each capability, the script will find the correct roles to use.
NOTE: The following capabilities need to be assigned to each role:
- moodle/webservice:createmobiletoken
- moodle/webservice:createtoken
- if you want to debug errors, you should also enable error reporting in moodle, otherwise the script will not be able to report any details about errors
after this, the script should be able to handle everything itself.