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-9.4 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.production"
import the SQL schema:
./manage.py migrate
create a super user:
./manage.py createsuperuser
Note
WSGI will use the production.py settings, whereas manage.py will
use the local.py by default.
Production¶
Install dependencies (in virtualenv):
pip install -r requirements/production.txt
copy
mymoney/settings/production.disttomymoney/settings/production.pyand edit it:cp mymoney/settings/production.dist mymoney/settings/production.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
cleanup tasks (only usefull with further user accounts):
./manage.py deleteorphansbankaccounts
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>
0 2 * * * ABSOLUTE_PATH/scripts/deleteorphansbankaccounts.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/local.txt
copy
mymoney/settings/local.disttomymoney/settings/local.pyand edit it:cp mymoney/settings/local.dist mymoney/settings/local.py
Internationalization¶
copy
mymoney/settings/l10n.disttomymoney/settings/l10n.pyand edit it:cp mymoney/settings/l10n.dist mymoney/settings/l10n.py
Further notes about some additional settings:
USE_L10N_DIST: Whether to use the minify file including translations. It imply that the translated file is generated by the MyMoney client.
edit your final setting file to use the l10n configuration instead:
# from .base import * from .l10n import *
Note
Only French internationalisation/translations are supported for now. But any contributions are welcome!
Demo¶
To have a quick look, you could generate some data with the following commands:
./manage.py demo
You can also clear any data relatives to the project’s models with:
./manage.py demo --purge
Tests¶
Whichever method is used, you must create a setting file for testing. Copy
mymoney/settings/test.dist to mymoney/settings/test.py and edit it:
cp mymoney/settings/test.dist mymoney/settings/test.py
Tox¶
You can use Tox. At the project root directory without virtualenv, just execute:
tox
Behind the scenes, it runs several testenv for:
Manually¶
install dependencies:
pip install -r requirements/test.txt
then execute tests:
./manage.py test --settings=mymoney.settings.test mymoney