Sign inSign up

flipdot/money-utils

By flipdot

Updated over 6 years ago

Image
0

279

flipdot/money-utils repository overview

Money-Utils

Monitors money transfers to an account and filters them according to various patterns to report information.

Developer Setup

Note:
If all you want is run the service, please head down to the Deployment section.

  • If you're on Debian, you will need some more packages:

    apt install python3-dev build-essential
    
  • Enable lingering services for your user:

    sudo loginctl enable-linger $USER
    
  • Copy config.example.py to config.py and customize contents according to your likings.

The following script will:

  • Make a virtualenv and install dependencies from requirements.txt

  • Setup a systemd-user-service money.service

    ./setup.sh
    
  • Make a database:

    ./manage.py migrate
    ./manage.py createsuperuser
    
  • Run Cron jobs to import TXs

    • this will:
      • import transactions from your bank
      • analyze member fees
    ./manage.py runcrons
    
  • Start server:

    ./manage.py runserver
    
    # or, enable and start the systemd service:
    systemctl --user enable --now money
    
  • go to http://localhost:5002/ and enjoy the stats!

Deployment in dev setup:

  • Edit uwsgi.ini

  • Run:

    ./manage.py collectstatic
    ./webserver
    

Deployment

Do these steps:

export SOURCE_COMMIT=$(git describe --always --no-abbrev)
docker-compose build

docker-compose up

## in another window:
docker-compose exec money ./manage.py migrate
docker-compose exec money ./manage.py cratesuperuser

Member Management

Once the server is running, go to http://localhost:8000/admin. Log in, and click on "Members". Add some members. The only fields you will have to fill out:

  • First Name
  • Last Name (if you know it)
  • Nickname (if you know it)
  • Email (if you know it)
  • Fee (if it isn't one of the standard fees from fee_util.py)

These properties will be used to find the member fee transactions. All the other fields will be filled by the analysis.

After adding some members, do ./manage.py runcrons again to analyze their fees.

License

GPLv3. Other licenses available upon request.



BELOW LEGACY

/recharges.json

Lists drinks-recharge events according to the pattern drinks <uid> <info>, where

  • uid is the LDAP user ID
  • info is some additional text, commonly "username random-string"

The random string at the end is used to differentiate recharges happening on the same day, since SEPA does not generate unique transaction IDs. Instead, it considers the 5-tuple (date, IBAN from, IBAN to, amount, transaction text) as unique key.

load_transactions.py

loads new transactions from the bank.

members.py

performs member fee analysis.

member_report.py

displays an oldschool ASCII report of paid member fees in the last 12 months.

clear_analysis.py

clears all analyzed data from database (except for Fee_Entries). Can be used to rescue the database from botched data if you're messing with the members.py script.

hbci_client.py

Wrapper for the python-fints library.


Old stuff:

drinks.py

old report: loads transactions and drinks-recharges using an ad-hoc pickle cache defined in cache.py.

Legacy; has been integrated into django app on /recharges.py

webserver: small flask webserver to do nothing but serve the output of drinks.py as JSON.

Can be started as systemd service, using money.service.


Tag summary

Content type

Image

Digest

Size

567.9 MB

Last updated

over 6 years ago

docker pull flipdot/money-utils