from reportlab.lib.pagesizes import A4 from create_payment_slip import create_payment_slip from sustApp.models.database import engine, SessionLocal from pydantic import BaseModel from sqlalchemy.orm import Session import sustApp.models.models as models from reportlab.lib.utils import ImageReader import logging, sys from sqlalchemy import extract from config_loader import load_config cfg = load_config() year = cfg['year'] logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) db = SessionLocal() 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, models.Members.member_email == None, ).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_([204,205,206])).all() for member in members: # TOOD: Add column payment_date to Payments # create only, if not already delivered/paid paid = db.query(models.Payments.payment_year)\ .filter(models.Payments.member_id == member.id, extract('year', models.Payments.payment_year) == year)\ .count() if not paid: delivered = db.query(models.Deliveries.delivery_date)\ .filter(models.Deliveries.member_id == member.id, extract('year', models.Deliveries.delivery_date) == year)\ .count() if not delivered: #create_payment_slip(member=member) logging.debug(f'Member: {member.member_surname}') #logging.info('We processed %d records', len(processed_records)) else: logging.debug(f'Skipping creation for Member: {member.member_surname} as already delivered!') else: logging.debug(f'Skipping creation for Member: {member.member_surname} as already paid!') db.close()