#6: General enhancements

This commit is contained in:
2025-03-01 18:10:34 +01:00
parent 8516d270f4
commit c1098114bc
7 changed files with 5818 additions and 5911 deletions
+5765 -5897
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
{'maintainer': 'Markus Zimmerberger',
'year': 2025,
'map_params': {'metrics': ['euclidean', 'l1', 'manhattan'],
'min_dist': [0.01, 0.1, 0.5],
'spread': 1.0},
'visualize_params': {'median_threshold': 6},
}
+5
View File
@@ -0,0 +1,5 @@
import yaml
def load_config(config_path="./sustApp/config.yaml"):
with open(config_path, encoding='utf8') as f:
return yaml.load(f, Loader=yaml.FullLoader)
+16 -7
View File
@@ -8,6 +8,11 @@ import datetime
import locale
import os
from config_loader import load_config
cfg = load_config()
year = cfg['year']
def print_multiple_lines(lines: int, text):
cnt = 1
@@ -32,7 +37,7 @@ def create_payment_slip(member: models.Members = None):
qrcode = helpers.make_epc_qr(name='Sportunion St. Thomas',
iban='AT493443700000113407',
amount=15*member.member_count,
reference=f'2025-4732-{member.id:03}-{member.member_count}')
reference=f'{year}-4732-{member.id:03}-{member.member_count}')
qrcode.save("epc_qr.png", scale=2)
subfolder = "mail" if member.member_email else ""
@@ -88,7 +93,7 @@ def create_payment_slip(member: models.Members = None):
print_multiple_lines(2, text)
text.textLines("* Skigymnastik\n* Radfahren\n* Stockschiessen\n* Pilates\n* Tagesskifahrt\n* uvam")
print_multiple_lines(5, text)
text.textLines(f"Wir möchten das Einheben des Mitgliedsbeitrags zuküntig einfacher machen, daher bitten wir {salutation3},\nuns eine Mail mit dem Betreff \"Zahlschein oder Abbucher\" an unsere Mail-Adresse sv.stthomas@gmx.at zu senden!")
text.textLines(f"Wir möchten das Zustellen des Mitgliedsbeitrags-Zahlscheines zuküntig auf Mail umstellen, daher bitten wir {salutation3},\nuns eine Mail mit dem Betreff \"Zahlschein\" an unsere Mail-Adresse sv.stthomas@gmx.at zu senden!")
print_multiple_lines(3, text)
text.textLines(f"{salutation2.capitalize()} Sportverein-Team!")
c.drawText(text)
@@ -112,17 +117,21 @@ def create_payment_slip(member: models.Members = None):
text = c.beginText(188, 103)
c.setFont("Helvetica", 8)
if not member is None:
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz 2025-4732-{member.id:03}-{member.member_count} eintragen")
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz {year}-4732-{member.id:03}-{member.member_count} eintragen")
print_multiple_lines(1, text)
if member.member_count > 1:
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname_spouse} {member.member_suffix} {member.member_firstname} {member.member_surname}")
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03}, {member.member_firstname_spouse} {member.member_suffix} {member.member_firstname} {member.member_surname}")
else:
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname} {member.member_surname}")
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03}, {member.member_firstname} {member.member_surname}")
c.drawText(text)
c.setFont("Helvetica", 12)
c.drawString(77, 50, f"{year}")
c.drawString(300, 120, f"{year}")
c.setFont("Helvetica", 10)
c.drawString(188, h - 696, f'2024-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Zahlungsanweisung
c.drawString(11, 120, f'2024-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Auftragsbestätigung
c.drawString(188, h - 696, f'{year}-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Zahlungsanweisung
c.drawString(11, 120, f'{year}-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Auftragsbestätigung
c.drawString(130, h - 694, (locale.format_string('%.2f', 15 * member.member_count))) # Betrag Auftragsbestätigung
c.drawString(w - 30, 170, (locale.format_string('%.2f', 15 * member.member_count))) # Betrag Zahlungsanweisung
c.save()
+14 -2
View File
@@ -1,3 +1,4 @@
select * from members m where m.member_firstname like 'Josef'
update members m set member_geo_latitude = null, member_geo_longitude = null
where id in (110,107,45,21,19,108,36,24,22,18,35,162,90,3,142,122,121,115,9,128,79,78,50,186,183,180,176,157,148,98);
@@ -16,7 +17,7 @@ update members set member_city = 'Sankt Thomas' where member_city = 'St. Thomas'
update members set member_city = trim(member_city)
insert into deliveries (delivery_date, member_id, delivered_by_id, delivery_year)
values (now(), 78, 186, '2024-01-01'),
values (now(), 204, 186, '2025-01-01') --,
(now(), 79, 186, '2024-01-01'),
(now(), 3, 186, '2024-01-01'),
(now(), 4, 186, '2024-01-01'),
@@ -69,13 +70,24 @@ select mp.member_surname, mp.member_firstname, mp.member_firstname_spouse from m
select * from members_paid mp where id = 8
-- already paid? TODO: Member "active since?" attribute missing in "member"
select m.* from members_active m
select m.*
from members_active m
join deliveries d on d.member_id = m.id
where m.id in (select id from members_delivered md
except
select id from members_paid mp where mp.payment_year = '2024-01-01')
order by delivery_date asc
-- already delivered
select m.*, d.*
from members_active m
right join deliveries d on d.member_id = m.id
where d.delivery_year = '2025-01-01'
order by delivery_date asc
select * from deliveries d
where d.delivery_year = '2025-01-01'
insert into deliveries (delivery_date, member_id, delivery_year)
select now(), ss.id, '2024-01-01' from
(select id from members_active m
+10 -4
View File
@@ -9,7 +9,7 @@ from sqlalchemy import *
import logging
import webbrowser
import re
from config_loader import load_config
def payment_slip_delivered(member: models.Members, year: int):
return db.query(models.Deliveries.delivery_date)\
@@ -52,6 +52,9 @@ def checkEmail(email):
else:
return False
cfg = load_config()
year = cfg['year']
logger = logging.getLogger(__name__)
#geolocator = Nominatim(user_agent="sust", timeout=10)
@@ -92,8 +95,8 @@ marker_cluster = MarkerCluster().add_to(map)
#folium.Marker([lat, lon], popup=str(name)+': '+color+'-'+str(clname), icon=folium.Icon(color='black',icon_color='#FFFF00')).add_to(feature_group)
for member in members:
if member.member_geo_latitude != None and member.member_geo_latitude != None:
delivered = payment_slip_delivered(member, 2024)
paid = payment_made(member, 2024)
delivered = payment_slip_delivered(member, year)
paid = payment_made(member, year)
iconColor = "blue"
hasMail = checkEmail(member.member_email)
@@ -111,7 +114,10 @@ for member in members:
location = (member.member_geo_latitude, member.member_geo_longitude)
folium.Marker(location=location,
popup=f'{member.member_firstname} {member.member_surname}',
tooltip=f'\nZugestellt & bezahlt' if (delivered and paid) else 'Nicht bezahlt' if not paid else 'Nicht zugestellt',
tooltip=f'\nZugestellt & bezahlt' if (delivered and paid) else
'Nicht zugestellt' if not delivered else
'Zugestellt, aber nicht bezahlt' if delivered and not paid else
'Weder zugestellt, noch bezahlt',
icon=folium.Icon(color=iconColor))\
.add_to(marker_cluster)
+1 -1
View File
@@ -14,7 +14,7 @@ models.Base.metadata.create_all(bind=engine)
#members = db.query(models.Members).filter(models.Members.member_email == None).all()
#members = db.query(models.Members).filter(models.Members.member_active == True).all()
#members = db.query(models.Members).filter(models.Members.id.in_([2,3,9,199]), models.Members.member_active == True, models.Members.member_printed == False).all()
members = db.query(models.Members).filter(models.Members.id.in_([200])).all()
members = db.query(models.Members).filter(models.Members.id.in_([50])).all()
for member in members:
create_payment_slip(member=member)