fsr-de / myHPI

Django/Wagtail page serving myhpi.de
https://myhpi.de
12 stars 11 forks source link
django python wagtail wagtail-cms

myHPI

tests Coverage Status

This tool is used to manage the student representative website at https://myhpi.de. It is a CMS based on Wagtail/Django and adds several functionalities like polls.

Development setup

For a quick start, use the dev container, e.g. by installing the Dev Containers extension in Visual Studio Code or using the built-in feature in JetBrains IDEs. This automatically installs all dependencies in a container. After starting the container, setup your local data by following the Manual Setup from step 9 (creating a superuser).

Manual setup

To set up a development version on your local machine, you need to execute the following steps:

  1. Check out repository and cd to it
  2. Set up a virtualenv for the project with Python >=3.11 and activate it (e.g., python3 -m venv venv and source venv/bin/activate)
  3. Install poetry (if not already installed): curl -sSL https://install.python-poetry.org/ | python -
  4. Install dependencies with poetry install
  5. Create env file by copying the .env.example file to .env, e.g. cp .env.example .env (Notice that for some functionality like OIDC some settings must be changed)
  6. Migrate the database with python manage.py migrate
  7. Install bootstrap with python tools/install_bootstrap.py
  8. Optionally: Compile translations with python manage.py compilemessages -i venv (does not work on Windows, recommended to skip this step or see docs)
  9. Optionally: Create test data with python manage.py create_test_data
  10. Create a local superuser with python manage.py createsuperuser
  11. Start the development server with python manage.py runserver
  12. Open your web browser, visit http://localhost:8000/admin and log in with the user you just created

Tests

Test the code with python manage.py test myhpi.tests.

Code style

Pre-commit hook

We recommend installing a pre-commit hook with pre-commit install. The hook will do the following steps before every commit:

If you want to do that manually, run pre-commit run --all-files. Next to that, we also run pylint myhpi to check for semantic issues in the code.

IDE support

To get optional linting-related warnings within your IDE and format files when saving them, follow these steps:

Configuration in VSCode

Workspace settings:

{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "ms-python.black-formatter",
  "[javascript][css][scss][markdown][yaml]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[html]": {
    "editor.defaultFormatter": "monosans.djlint"
  },
}

Tips

Reset database

  1. Delete db.sqlite3
  2. Conduct development setup steps 7+