The server side of the damn project.
Add tests for liste of squares ge and lt
Fix f63c217
Enable both, lt and ge, for list of area squares


browse  log 
release notes 



You can also use your local clone with git send-email.

Divide and map. Now. -- the damn project -- helps mappers by dividing a big area into smaller squares that people can map together.

damn_server provides access to the PostGIS database via JSON API. It is written in Python3 and published under AGPLv3 License.

builds.sr.ht status

Report security issues. Send patches to:

git config format.subjectPrefix 'PATCH damn-server'
git config sendemail.to '~qeef/damn-dev@lists.sr.ht'

To develop, you need PostGIS database. You can use damn-deploy:

git clone https://git.sr.ht/~qeef/damn-deploy
cd damn-deploy
sed -i '/POSTGRES_PASSWORD=.*/d' .env
docker-compose -f http.yml up db

Create virtual environment and install dependencies:

python3 -m venv tve
. tve/bin/activate
pip install -r requirements.dev.txt

Set environment variable with the IP address of the damndb:

export DB_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' damndb)

Run unit tests:

python3 -m unittest discover tests

with coverage:

coverage run --branch --include=damn_server/area.py,damn_server/conf.py,damn_server/db.py,damn_server/list_of.py,damn_server/new.py,damn_server/square.py,damn_server/user.py,damn_upkeep/execute.py,damn_upkeep/generate.py -m unittest discover tests && coverage report --show-missing

Run damn server app:

uvicorn damn_server.api:app --workers 9

Run integration tests (damn server app must be running):

python3 -m unittest tests/integration.py

NOTE: You can prepend python3 or uvicorn with PYTHONASYNCIODEBUG=1 to see the async debug info.

NOTE: Use --workers 9 for testing. When developing, use --reload instead.

Run load tests (damn server app must be running):

pip install -r requirements.loadtest.txt
locust -f tests/mapathon.py -H -u 1000 -r 10 -t 10m --headless --only-summary

Connect to the database:

psql "postgresql://damnuser:$(cat .env | sed -n 's/^POSTGRES_PASSWORD=\(.\+\)$/\1/p')@$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' damndb)/damndb"

Make documentation:

pip install -r requirements.doc.txt
cd doc && make html