Sin descripción

tripeur 1ad8a2ab28 allow status to all users hace 5 días
.idea 39360e8322 feat: implement commission enpoints and refactor auth tests hace 1 semana
.vscode 71c0e9bb2f first commit hace 3 años
alembic 48990d9594 test: implement project constraints hace 1 semana
app 1ad8a2ab28 allow status to all users hace 5 días
script 24974ed330 Merge remote-tracking branch 'origin/master' hace 10 meses
.env.example 2b1b8c7f86 test: implement coedition hace 6 días
.flake8 71c0e9bb2f first commit hace 3 años
.gitignore c2d6ef0426 add log.txt to gitignore hace 2 años
Readme.md 2b1b8c7f86 test: implement coedition hace 6 días
alembic.ini e3127530cc add tags hace 2 años
bdlg2023.conf f1224ac6a1 add apache conf hace 2 años
init.sh 71c0e9bb2f first commit hace 3 años
poetry.lock 2b1b8c7f86 test: implement coedition hace 6 días
pyproject.toml 2b1b8c7f86 test: implement coedition hace 6 días
requirements-dev.txt 2b1b8c7f86 test: implement coedition hace 6 días
requirements.txt 2b1b8c7f86 test: implement coedition hace 6 días
update_password.py ff12e4672c bump dependencies hace 10 meses

Readme.md

bdlg-2023-server

This repository hosts an API that helps volunteer managers plan festival activities on a schedule, associate volunteers to time slots, and send SMS reminders during the event. Volunteer/slot data can also be bootstrapped from a Google Sheet import.

Core concepts

  • Organization — the top-level tenant. Every user belongs to zero or more organizations (multi-org membership is supported). Every project belongs to exactly one organization, which defines who can access it.
  • Global rolesuser (default) or super_admin. Only super_admin can create/edit organizations and manage organization membership.
  • Organization roles (per user, per organization):
    • org_admin — full control over the organization's projects and can change member roles within their own organization.
    • respo_benevole — manages volunteer allocation across the whole project: slots, templates, volunteers, groups, and SMS.
    • respo_commission — read access to the whole project plan; write access limited to templates/slots belonging to the commission (s) they are a member of. Cannot manage volunteers, groups, or SMS directly.
  • Commission (Pôle) — represents a team/area within a project (e.g. "Bar", "Accueil"). A commission's contact info is derived from its members' own profile (name + phone_number) rather than stored as free text — see SlotTemplate.responsible_override for the manual exception case.
  • Volunteer group — a saved, searchable set of volunteers within a project, usable for bulk slot assignment and group SMS.

Getting started

For running the application

git clone ... cd ...

python -m venv venv venv/scripts/activate poetry install

Note, be sure to use python3.11 with this application

Copy .env.example to .env and edit it to configure your setup init.sh uvicorn app.main:app --reload

Debug

python -m app.debug

Run tests

pytest

Run specific tests

pytest app\test\test_volunteer.py

Update requirements

poetry lock
poetry export -f requirements.txt --output requirements.txt --without-hashes
poetry export -f requirements.txt --output requirements-dev.txt --without-hashes --with dev

Regenerate after any backend route or schema change — see the frontend repo's README for details.

Credit

FastAPI project generated using https://github.com/rafsaf/minimal-fastapi-postgres-template