Move all to subDir sustApp

This commit is contained in:
2025-01-19 17:10:56 +01:00
parent 408e282fdc
commit b63f4ef370
23 changed files with 12875 additions and 2656 deletions
+80
View File
@@ -0,0 +1,80 @@
from sqlalchemy import extract
from database import engine, SessionLocal
import models
import logging, sys
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from os.path import exists
import datetime
from create_payment_slip import create_payment_slip
import os
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
def payment_slip_delivered(member: models.Members, year: int):
return db.query(models.Deliveries.delivery_date)\
.filter(models.Deliveries.member_id == member.id, extract('year', models.Deliveries.delivery_date) == year)\
.count()
def send_mail(member: models.Members):
delivered = payment_slip_delivered(member, 2024)
if delivered:
logging.debug(f'Member: {member.member_surname} already mailed or delivered!')
return
smtp_server = 'mail.gmx.com'
smtp_port = 587
smtp_username = 'zisco@gmx.at'
#TODO Secure
smtp_password = '57spunk07'
from_email = 'sv.stthomas@gmx.at'
to_email = member.member_email
subject = 'Mitgliedsbeitrag 2024'
body = f'Liebes Mitglied,\n\nDein Zahlschein für 2024 liegt bei.\nDu kannst gerne mittels beiliegendem, aufgedrucktem QR-Code überweisen.\nDanke sagt Dein Team vom Sportverein!'
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body))
path_to_file = os.path.join(os.getenv('APPDATA'), "sust", "payment_slips","mail",f"{member.member_zip}_payment_slip_member{member.id}.pdf")
if not exists(path_to_file):
create_payment_slip(member=member)
with open(path_to_file, 'rb') as f:
attachment = MIMEApplication(f.read(), _subtype='pdf')
attachment.add_header('Content-Disposition', 'attachment', filename=f'{member.member_zip}_payment_slip_member{member.id}.pdf')
msg.attach(attachment)
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(smtp_username, smtp_password)
smtp.send_message(msg)
newDelivery = models.Deliveries(delivery_date = datetime.datetime.now(),
member_id = member.id,
delivered_by_id = 186,
delivery_year = datetime.date.today())
db.add(newDelivery)
db.commit()
logging.debug(f'Sent mail to {member.member_email}')
db = SessionLocal()
models.Base.metadata.create_all(bind=engine)
#members = db.query(models.Members).filter(models.Members.member_email != None, ~models.Members.id.in_([183,51,200,49])).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_([8])).all()
for member in members:
if member.member_email:
send_mail(member=member)
else:
logging.debug(f'Member {member.member_surname} has no email associated!')