45 lines
1.4 KiB
Python
Executable File
45 lines
1.4 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import requests
|
|
import datetime
|
|
from Cheetah.Template import Template
|
|
|
|
class ResourceNotFoundException(Exception): pass
|
|
|
|
def getJson(url):
|
|
resp = requests.get(url)
|
|
if resp.status_code != 200:
|
|
raise ResourceNotFoundException("URL: {}, Code: {}".format(url, resp.status_code))
|
|
return resp.json()
|
|
|
|
|
|
BASE_URL = "http://172.16.10.29:5000/hv"
|
|
URL_MIETERS_ACTIVE = "{base}/mieters/active"
|
|
URL_SALDO_BY_MIETER = "{base}/mieter/{mieterId}/saldo/{year}"
|
|
REPORT_THRESHOLD = 0.5
|
|
|
|
TEMPLATE_FILE = "report.tmpl"
|
|
CURRENT_YEAR = datetime.datetime.now().year
|
|
|
|
|
|
try:
|
|
activeMieters = getJson(URL_MIETERS_ACTIVE.format(base=BASE_URL))
|
|
mieters = [ { 'vorname': x['vorname'], 'nachname': x['nachname'], 'id': x['id'] } for x in activeMieters ]
|
|
mietersToReport = []
|
|
|
|
for mieter in mieters:
|
|
saldoByMieter = getJson(URL_SALDO_BY_MIETER.format(base=BASE_URL, mieterId=mieter['id'], year=CURRENT_YEAR))
|
|
|
|
if abs(saldoByMieter['saldo']) > REPORT_THRESHOLD:
|
|
mietersToReport.append({
|
|
'vorname': mieter['vorname'],
|
|
'nachname': mieter['nachname'],
|
|
'saldo': "{:.2f}".format(saldoByMieter['saldo'])
|
|
})
|
|
if mietersToReport:
|
|
params = { 'mietersToReport': mietersToReport }
|
|
report = Template(file=TEMPLATE_FILE, searchList=[ params ])
|
|
print(report)
|
|
except Exception as e:
|
|
print("ERROR: {}".format(e))
|