Skip to content
Django app for self-hosted privacy-friendly online petitions
Python HTML JavaScript CSS Shell Dockerfile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update FUNDING.yml Oct 26, 2019
dev README: put install instructions in external file Nov 17, 2019
nginx-uwsgi add some docker configuration to see the use with uwsgi/nginx Apr 18, 2019
pytition Update compiled French lang file Nov 17, 2019
.gitignore Add .swp and .db files in gitignore Apr 18, 2019 Create Feb 19, 2019
Dockerfile Update psycopg2 requirement to be compatible with Python 3.8 Nov 16, 2019
Jenkinsfile Do not run tests in parallel, we are hitting a Django bug Jul 13, 2019
LICENSE Initial commit Sep 28, 2017 README: put install instructions in external file Nov 17, 2019
requirements_dev.txt add a mailer that handle retry on failure and asynchronous Apr 18, 2019

Build Status Coverage status


Why using Pytition?

  • Because it allows you to host petitions without compromising the privacy of your signatories.
  • No tracking, ever: CSS, JS and all resources are self-hosted. Pytition does not use CDN.
  • Nice UI: Bootstrap 4 + JQuery 3.
  • Based on solid backend technology: Django.
  • Responsive UI: works well on phones/tablets/laptops/desktops.
  • If you host an instance of Pytition, you can guarantee your signatories that their informations won't leak to third parties.
  • It is Open Source and Free Software.


  • Multi-lingual UI with i18n. For now only English and French translations available but you can send a Pull Request :)
  • You can pre-visualize petitions before publishing them.
  • Easy to use: petition content is typed-in via TinyMCE editors (like WordPress).
  • You can setup real SMTP account for the confirmation e-mail so that it is less likely considered as SPAM.
  • Supports Open Graph tags to provide description and image to allow nice cards to be shown when people post the petition link on social networks.
  • You can propose your signatories to subscribe to a newsletter/mailinglist (via HTTP GET/POST or EMAIL methods).
  • You can export signatures in CSV format.
  • Support for several organizations on the same Pytition instance v2.0
    • Fine grain per-user per-organization permissions
  • Email retry support through the use of a mail queue middleware
  • Nice (multiple) permlink support for each petition

Future features

  • Support for multi-lingual petition content: v3.0
  • Support for adding several petition templates: v4.0
  • Add optional Mastodon/Diaspora share-icons

Install development environment

See dev/

Installing in production

See dev/

Included dependencies

Those are external projects that are needed and used by Pytition, but included in Pytition source tree:

  • Bootstrap 4.2.1
  • JQuery 3.3.1
  • Popper 1.14.6
  • Open Iconic 1.1.1
  • TinyMCE 4.9.2
  • jQuery Smart Wizard 4


  • Python 3
  • Django 2.2.x
  • django-tinymce 2.8.0
  • django-colorfield 0.1.15
  • requests 2.20.x
  • mysqlclient 1.3.13
  • beautifulsoup4 4.6.3
  • django-formtools 2.1
  • bcrypt
You can’t perform that action at this time.