A web application for scheduling meetings and general polling.
  • Python 42%
  • HTML 38.9%
  • CSS 6.7%
  • SCSS 5.7%
  • JavaScript 4.9%
  • Other 1.8%
Find a file
ldr 479314af0c Fix OpenID signin
The update from v1.0.1 to v1.1.0 introduced "support for `nonce` and `state` parameters during authorization code flow", but that support was buggy so the login broke.
The following release, v2.0.0, fixes that bug: "Fix some errors relating to how state and nonce parameters were handled in the django integration."
The breaking change should hopefully not affect Bitpoll and everything seems to work when using OpenID.

See the changelog for more: https://github.com/fsinfuhh/py_simple_openid_connect/tags
2026-01-31 00:35:51 +01:00
.github/workflows Add build_image workflow 2023-09-28 11:35:13 +02:00
bitpoll Disabled unnecessary autocomplete check 2025-12-11 19:01:22 +01:00
docker_files Fix deployment issues 2024-01-22 12:29:55 +01:00
locale Add gender neutral translations 2025-02-05 22:49:14 +01:00
.gitignore add run folder to gitignore 2022-06-19 22:30:14 +02:00
.gitmodules update django-simple-csp to new url and version 2017-07-11 17:50:32 +02:00
compose.yaml add docker compose file for easier testing 2023-05-16 21:58:12 +00:00
Dockerfile Some Hotfixes 2025-03-05 15:15:15 +01:00
LICENSE Add LICENSE 2017-05-15 15:10:12 +02:00
manage.py Fix settings and urlconf after rename 2017-07-12 16:44:50 +02:00
README.md Fixed markdown-warnings 2024-10-30 15:22:29 +01:00
requirements-production.in Improve/fix deploymint 2024-01-12 17:29:00 +01:00
requirements-production.txt Fix OpenID signin 2026-01-31 00:35:51 +01:00
requirements.in Update requirements 2024-01-12 16:56:22 +01:00
requirements.txt Bumped requirements 2025-01-29 16:44:36 +01:00

Bitpoll

Bitpoll is a software to conduct polls about Dates, Times or general Questions.

This is a new version of the Dudel from opatut (https://github.com/opatut/dudel) used on https://bitpoll.de, rewritten using the Django framework as a backend.

Using Docker

The docker image is built automatically from the current master branch. You can use the following commands to set up the docker container:

Create a directory for static and config files:

mkdir -p run/{log,static,config}

Get the example settings file and adapt it according to your needs:

wget https://raw.githubusercontent.com/fsinfuhh/Bitpoll/master/bitpoll/settings_local.sample.py -O run/config/settings.py

It is important to change at least the database settings, secret key, and allowed hosts.

Start the docker container:

docker run -a stdout -a stderr --rm --name bitpoll -p 3008:3008 -p 3009:3009 --volume ./run/static:/opt/static --volume ./run/config:/opt/config ghcr.io/fsinfuhh/bitpoll

The container is reachable on port 3009. If you use an external web server, you can use uwsgi traffic on port 3008 and serve the static assets from run/static at /static/.

Manual Install

Get the code:

git clone https://github.com/fsinfuhh/Bitpoll

Generate a Python virtualenv and install dependencies:

virtualenv -p $(which python3) .pyenv
source .pyenv/bin/activate
pip install -r requirements.txt

Copy bitpoll/settings_local.sample.py to bitpoll/settings_local.py and customize the local settings.

Initialise Database:

./manage.py migrate

Run Testserver:

./manage.py runserver

Production

In production Senty is used for error reporting. django-auth-ldap is used vor login via ldap uwsgi to serve the app

Install Dependencies for Production:

sudo apt install g++ make python3-psycopg2 python3-ldap3 gettext gcc python3-dev libldap2-dev libsasl2-dev

Install Python Dependencies

pip install -r requirements-production.txt

Configure examples are in settings_local.py

our used uwsgi config can be found at https://github.com/fsinfuhh/mafiasi-rkt/blob/master/bitpoll/uwsgi-bitpoll.ini

For Production systems it is nessesarry to run

./manage.py compilemessages
./manage.py collectstatic

Management of Dependencies

We use pip-tools to manage the dependencies. After modification or the requirements*.in files or for updates of packages run

pip-compile --upgrade --output-file requirements.txt requirements.in
pip-compile --upgrade --output-file requirements-production.txt  requirements-production.in requirements.in

to sync your enviroment with the requirements.txt just run

pip-sync

this will install/deinstall dependencies so that the virtualenv is matching the requirements file