import os import arrow from Schemas import AccountRecords from jinja2 import Environment, FileSystemLoader from Services.EmailService.provider import send_email def render_email_template( headers: list, rows: list, balance_error: bool, bank_balance: float ): template_dir = os.path.join(os.path.dirname(__file__), "templates") env = Environment( loader=FileSystemLoader(template_dir) ) # Load templates from the directory template = env.get_template( "template_accounts.html" ) # Load the specific template file # Render template with variables return template.render( headers=headers, rows=rows, bank_balance=f"{bank_balance:.4f}", balance_error=balance_error, today=str(arrow.now().date()), ) def send_email_to_given_address(send_to: str, html_template: str): today = arrow.now() subject = f"{str(today.date())} Gunes Apt. Cari Durum Bilgilendirme Raporu" try: send_email(subject=subject, receivers=[send_to], html=html_template) print(f"Email is sent to : {send_to}. BB") return except Exception as e: print(f"Error: {e}") print("Email is not sent") return def set_account_records_to_send_email(): """ from app import set_account_records_to_send_email """ db_session = AccountRecords.new_session() account_records = AccountRecords.filter_all(db=db_session).core_query account_records = ( account_records.order_by( AccountRecords.bank_date.desc(), AccountRecords.bank_reference_code.desc() ) .limit(3) .all() ) first_record, second_record, balance_error = ( account_records[0], account_records[1], False, ) second_balance = first_record.bank_balance - first_record.currency_value if second_balance != second_record.bank_balance: balance_error = True list_of_rows = list() for record in account_records: list_of_rows.append( [record.bank_date, record.process_comment, f"{record.currency_value:.4f}"] ) send_to = "karatay@mehmetkaratay.com.tr" html_template = render_email_template( headers=["Ulaştığı Tarih", "Banka Transaksiyonu Ek Bilgi", "Aktarım Değeri"], rows=list_of_rows, balance_error=balance_error, bank_balance=account_records[0].bank_balance, ) send_email_to_given_address(send_to=send_to, html_template=html_template) if __name__ == "__main__": set_account_records_to_send_email()