• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created over 5 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LMS allows teachers and educators to easily provide feedback on student programming work - both manually and automatically.

Python's Course LMS

LMS License is BSD-3 Clause

👋 Welcome to Python course learning management system. 🐍

The system objectives -

  1. Allow teachers and mentors to input exercises list and provide feedback/comments to students exercises solutions.
  2. Allow students to load their exercises solutions and get feedback to their work.

Creating development environment

Prerequisites

  1. Linux based system - either WSL on windows or full blown Linux.
  2. Latest Python version
  3. Docker

Minimal setup

This setup is for debug purposes and will use SQLite database and front-end only.

Steps to do:

  1. Clone this repository.
  2. Set environment variables.
  3. Run the application.
git clone https://github.com/PythonFreeCourse/lms
cd lms

export FLASK_DEBUG=1
export LOCAL_SETUP=true
export FLASK_APP=lms.lmsweb
export PYTHONPATH=`pwd`:$PYTHONPATH

cd devops
source dev_bootstrap.sh
# The initial credentials should appear in your terminal. :)

cd ..
flask run  # Run in root directory

After logging in, use localhost admin to modify entries in the database.

Full setup

This setup will create the following items:

  • Application - LMS code.
  • Middleware (messaging queue) - RabbitMQ.
  • Persistence database - PostgreSQL.

Steps to do:

  1. Clone this repository.
  2. Setup using docker & docker-compose.
  3. Run the application.
git clone https://github.com/PythonFreeCourse/lms
cd lms
cp lms/lmsweb/config.py.example lms/lmsweb/config.py
echo "SECRET_KEY = \"$(python -c 'import os;print(os.urandom(32).hex())')\"" >> lms/lmsweb/config.py

cd devops
. ./build.sh && . ./start.sh && . ./bootstrap.sh && . ./i18n.sh

In case you want to add the stub data to PostgreSQL DB, run:

docker exec -it lms_http_1 bash
python lmsdb/bootstrap.py

Enter [http://127.0.0.1:8080], and the initial credentials should appear in your terminal. :)

After logging in, use localhost admin to modify entries in the database.

In case you want to enable the mail system:

  1. Insert your mail details in the configuration file.
  2. Change the DISABLE_MAIL line value to False.

Code modification check list

Run Flake8

# on LMS root directory
flake8 lms

Updating localization files

. devops/i18n.sh update

Then go to lms/lmsweb/translations to translate the strings, if needed.

Run tests

export PYTHONPATH=`pwd`
pip install -r requirements.txt
pip install -r dev_requirements.txt
py.test -vvv

Contributing

View contributing guidelines.