Formulaire & carte pour recenser les aspirant-e-s connecté-e-s à un réseau radio.

jocelyn 93049e5d4e Merge branch 'master' of Nim/wifi-with-me into master 2 days ago
requirements 3d3b0cf5f3 send notifications to webhooks 1 month ago
var f15f21d91e Bootstrap Django skeleton 3 years ago
wifiwithme a7006fcdb1 webhook: send whole message, for genericity 1 month ago
.gitignore 843e58be8d Ignoring venv and .idea folders 2 years ago
LICENSE 0b4ffe0b21 Create LICENSE 4 years ago 1b7690b7a2 document webhook notifications configurations in README 1 month ago f15f21d91e Bootstrap Django skeleton 3 years ago


In order to facilitate dependency management, you can use a pip and a virtual environment (like virtualenv).

Install packages:

 # apt-get install python3-pip python3-virtualenv libyaml-dev

Create and activate the virtualenv with:

 $ virtualenv -p $(which python3) venv
 $ source venv/bin/activate

We use django framework. Install it from requirements with pip:

 $ pip install -r requirements/base.txt

For development, install dev.txt instead:

 $ pip install -r requirements/dev.txt

Set up configuration

Then create and edit a wifiwithme/settings/ configuration file wifiwithme/settings/

Mandatory settings

You must Define some details about your ISP in the ISP variable, eg:

    'TITLE':'Réseau wifi expérimental',
    'EMAIL':'bureau (at)',
    'ZONE':'Nantes et environs',
    'ADDRESS_EXAMPLE': 'rue du calvaire, nantes',


Optional settings

Website URL

The wifi-with-me website URL (for links included in emails :)


URL Prefix

Optionaly, you can define an url prefix (ex: /foo/) so that wifi-with-me is accessible under :


Email Notifications

If you want to receive email notifications on each new contrib, customize those :

List of notification recipients:


Notification sender address:


Webhook Notifications

If you want to send web notifications on each new contrib, install requests and customize those :

WEBHOOK_URL = 'https://<domain>/<path>'
WEBHOOK_KEY = '<secret>'

Then, on each contrib, an HTTP POST request wil be made to WEBHOOK_URL with a json dict containing 'key': WEBHOOK_KEY and the notification as 'text'.

Data expiration

The data gets deleted after one year, if the contributing user does not give its explicit consent to keep it one more year.

Reminders are sent to the contribution author when expiration date gets close. By default we send two notifications :

    30,  # 1 month before
    7,   # 1 week before

You can tweak it to your will or decide to send no reminder (with value []).

Migrate from bottle version (optional)

If you used the (old) bottle version of wifi-with-me and want to migrate your data follow this extra step :

$ ./ migrate auth
$ ./ migrate contribmap 0001 --fake

Run development server

It is required to initialize database first:

$ ./ migrate

Create an admin:

$ ./ createsuperuser

Then launch service with:

$ ./ runserver

You can visit with your browser at

Drop the database

If you want to reset all your data.

$ rm db.sqlite3

Run production server

(Pretty rough instructions. Feel free to submit patches)

  1. Make sure to set DJANGO_SETTINGS_MODULE environment variable to, eg:

    $ export
  2. Deploy it like any django site

  3. Customize mandatory and optional settings

  4. Customize SECRET_KEY to something really random. Hint: `python -c "import string,random; uni=string.ascii_letters+string.digits+string.punctuation; print(repr(''.join([random.SystemRandom().choice(uni) for i in range(random.randint(45,50))])))"

  5. Set daily crons for the two commands that take care of data expiration handling. (do not forget DJANGO_SETTINGS_MODULE, and use the --help of these commands)

    • ./ delete_expired_contribs
    • ./ send_expiration_reminders