Django project to manage receipts and reimbursements at Datasektionen.
Cashflow uses Python 3.6.2
-
Install PostgreSQL
-
pipenv install
-
pipenv run ./manage.py migrate
-
pipenv run ./manage.py runserver
The server will restart on file changes.
- Get a database dump:
ssh hermes dokku postgres:export cashflow > cashflow.sql
- Shove it into a local database:
pg_restore -h localhost -U cashflow -d cashflow --no-owner < cashflow.sql
- Copy files from s3 to local:
aws s3 cp --recursive s3://dsekt-cashflow-2/media/ media/
(warning: you need a fair bit of free disk space for this. todo: how does one easily download only new files?)
The following environment variables are required to run the project:
Variable | Description | Default |
---|---|---|
DATABASE_URL | PostgreSQL server url | --- |
DEBUG | Django debug mode. Set to True when developing locally. Never set to True in production. | False |
SECRET_KEY | Django encryption key | --- |
LOGIN_KEY | Login API key for KTH authentication | --- |
S3_BUCKET_NAME | Amazon AWS s3 bucket name | --- |
S3_ACCESS_KEY_ID | Amazon AWS IAM access key id | --- |
S3_SECRET_ACCESS_KEY | Amazon AWS IAM secret access key | --- |
S3_USE_SIGV4 | If Frankfurt, set to False | True |
S3_HOST | Url to s3 server | s3.eu-central-1.amazonaws.com |
SPAM_API_KEY | API key for the spam mail system | --- |
SPAM_URL | URL to spam service | https://spam.datasektionen.se |
PLS_URL | URL to pls service | https://pls.datasektionen.se |
LOGIN_API_URL | URL to login service api | https://login.datasektionen.se |
LOGIN_FRONTEND_URL | URL to login service frontend | https://login.datasektionen.se |
SEND_EMAILS | If False, does not send emails | True |
(The variables beginning with S3
are not used if DEBUG
is true. Files are
instead stored at ./media/
)
They can be put in an .env-file in root. They will be loaded automatically by pipenv
.
Check out .env.example for an example.
The default max upload size in nginx is 1 MB. To allow larger file uploads, set the max size of file uploads to for example 100 MB.
echo "client_max_body_size 100M;" > /home/dokku/cashflow/nginx.conf.d/max_size.conf