Installation¶
Requirements¶
- Python >= 3.4 (no backward compatibility)
- PostgreSQL only (no MySQL or SQLite support)
Deployment¶
Backend¶
The deployment is the same as any other Django projects. Here is a quick summary:
install required system packages. For example on Debian:
apt-get install python3 python3-dev postgresql libpq-dev virtualenv
create a PostgreSQL database in a cluster with role and owner
create a virtualenv:
virtualenv <NAME> -p python3
install dependencies with pip (see Production or Development)
configure the settings (see Production or Development)
export the
DJANGO_SETTINGS_MODULEto easily use themanage.pywith the proper production setting. For example:export DJANGO_SETTINGS_MODULE="mymoney.settings.prod"
import the SQL schema:
./manage.py migrate
create a super user:
./manage.py createsuperuser
Connect to the /admin Web interface to create a first bank account.
Note
WSGI will use the prod.py settings
Production¶
Install dependencies (in virtualenv):
pip install -r requirements/prod.txt
copy
mymoney/settings/local.py.disttomymoney/settings/local.pyand edit it:cp mymoney/settings/local.py.dist mymoney/settings/local.py
collect statics files:
./manage.py collectstatic
execute the Django check command and apply fixes if needed:
./manage.py check --deploy
Set up cron tasks on server to execute the following commands:
cloning recurring bank transactions:
./manage.py clonescheduled
At the project root directory, the scripts directory provides bash script
wrappers to execute these commands.
Thus, you could create cron rules similar to something like:
0 1 * * * ABSOLUTE_PATH/scripts/clonescheduled.sh <ABSOLUTE_PATH_TO_V_ENV>
For example, create a file in /etc/cron.d/clonescheduled, and edit:
0 2 * * * <USER> /ABSOLUTE_PATH/scripts/clonescheduled.sh <ABSOLUTE_PATH_TO_V_ENV>
Development¶
Install dependencies:
pip install -r requirements/dev.txt
copy
mymoney/settings/local.py.disttomymoney/settings/local.pyand edit it:cp mymoney/settings/local.py.dist mymoney/settings/local.py
Manually¶
install dependencies:
pip install -r requirements/test.txt
then execute tests:
./manage.py test --settings=mymoney.settings.test mymoney