80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
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
|
||
"""
|
||
|
||
with AccountRecords.new_session() as db_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()
|