Sign inSign up

flipdot/money-utils

By flipdot

•Updated over 6 years ago

Image
0

288

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