Update

Backup your files

Backup your media files, those are the pictures uploaded by your users in the petition contents and metadata.

The files to backup are in the mediaroot directory that you configured in your settings in the MEDIA_ROOT variable.

$ source path/to/pytition_venv/bin/activate
$ export DJANGO_SETTINGS_MODULE="pytition.settings.config" # path to your config
$ backup_dir=pytition_backup_$(date +%Y%m%d_%H%M%S)
$ mediaroot_dir=$(python3 pytition/manage.py shell -c 'from django.conf import settings; print(settings.MEDIA_ROOT)')
$ rsync -av $mediaroot_dir $backup_dir

Backup your Database

For this, I would advise to use the tools provided with your database server.

  • SQLite: just copy your .db file and you’re done!

  • PostgreSQL: use pg_dump to backup and psql to restore

  • MariaDB / MySQL: use mysqldump to backup and mysql to restore

You can also try to backup using the django tool:

$ source path/to/pytition_venv/bin/activate
$ export DJANGO_SETTINGS_MODULE="pytition.settings.config" # path to your config
$ # let's dump data
$ python3 pytition/manage.py dumpdata --all --output data.json
$ # now let's restore it
$ python3 pytition/manage.py loaddata data.json

Warning

Always test your backup mechanism. If not tested, you can only suppose your backups are worthless. You need to try to restore them on a dummy and empty instance, in order to make sure the backup is OK. Untested backups do not work.

Update to a newer Pytition version

You can simply run the update command of the manage.py CLI:

$ source pytition_venv/bin/activate
$ python3 pytition/manage.py update

Or go through the following document and do it manually.

Download latest Pytition release tarball or update your git clone:

$ git stash && git pull
$ version=$(curl -s https://api.github.com/repos/pytition/pytition/releases/latest | grep "tag_name" | cut -d : -f2,3 | tr -d \" | tr -d ,)
$ git checkout $version

Then upgrade Pytition’s dependencies:

$ source pytition_venv/bin/activate
(pytition_venv) $ pip3 install --upgrade -r requirements.txt

Then update your database scheme, update static files, compile new translation files:

$ export DJANGO_SETTINGS_MODULE="pytition.settings.config" # path to your config
$ python3 pytition/manage.py migrate
$ python3 pytition/manage.py collectstatic
$ python3 pytition/manage.py compilemessages

Then restart your web server, be it apache or nginx, and also your application server (uWSGI). Congratulations! You should now be OK with a brand new Pytition release!