In the beginning God created man, and the costs followed afterwards.
This project is a concrete integration of the django-accounting application. It is ready to be deployed on Heroku, but you can deploy on which provider you want.
- Python 3.3
- Django 1.7+
- dj-static
- Already configured for an Heroku deploy
Maybe you want to integrate the accounting engine into your existing project, so check out the features offered by django-accounting.
First create the virtualenv with the right python version
$ mkvirtualenv accountant --python=$(which python3)
$ workon accountantInstall the dependencies
$ pip install -r reqs/dev.txt
$ npm installCreate the local database
$ createdb accountant
$ ./manage.py migrateNow run the server :
$ ./manage.py runserver$ aws iam create-user --user-name heroku-accountantoutput
{
"User": {
"UserName": "heroku-accountant",
"Path": "/",
"CreateDate": "2015-01-22T14:10:08.058Z",
"UserId": "<user_id>",
"Arn": "arn:aws:iam::<user_arn_id>:user/heroku-accountant"
}
}$ aws iam create-access-key --user-name heroku-accountantoutput
{
"AccessKey": {
"UserName": "heroku-accountant",
"Status": "Active",
"CreateDate": "2015-01-22T14:18:56.237Z",
"SecretAccessKey": "<secret_key>",
"AccessKeyId": "<access_key>"
}
}Write down the <secret_key> and <access_key> values, so that we can give the values to the heroku app.
$ aws s3 mb s3://accountantx --region eu-west-1$ aws iam put-user-policy --user-name heroku-accountant --policy-name AmazonS3FullAccess-heroku-accountant --policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::accountantx",
"Condition": {}
},
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectAclVersion"
],
"Resource": "arn:aws:s3:::accountantx/*",
"Condition": {}
}
]
}'We need to specify the buildpack to use otherwise heroku won't know which one to choose, due to the fact that both
package.jsonandrequirements.txtfiles exist.
Lancer les commandes dans l'ordre ci-dessous:
$ heroku create accountant-x --region eu
$ heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-python.git
$ heroku addons:add heroku-postgresql:hobby-dev
$ heroku addons:add mandrill:starter
$ heroku addons:add newrelic:wayne
$ heroku config:set DJANGO_SETTINGS_MODULE="accountant.settings.prod"
$ heroku config:set SECRET_KEY=`openssl rand -base64 32`
$ heroku config:set LOCAL_SERVER=0
$ heroku config:set SITE_MAIN_DOMAIN=accountant-x.herokuapp.com
$ heroku config:set DISABLE_COLLECTSTATIC=1
$ heroku config:set AWS_STORAGE_BUCKET_NAME=accountantx AWS_S3_ACCESS_KEY_ID="<access_key>" AWS_S3_SECRET_ACCESS_KEY="<secret_key>"
$ git push heroku master
$ ./manage.py collectstatic --noinput
$ aws s3 sync --acl public-read accountant/static s3://accountantx/static/
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
$ heroku openAnd you're done !
I've defined some shortcuts in the Makefile, feel free to explore those or add yours.
deploy to production
$ make dpdeploy & migrate to production
$ make dmpcollectstatic to production
$ make cpAccounting is available under the MIT license. See the LICENSE file for more info.
