email services updated
This commit is contained in:
1
BankServices/RoutineEmailService/.python-version
Normal file
1
BankServices/RoutineEmailService/.python-version
Normal file
@@ -0,0 +1 @@
|
||||
3.12
|
||||
40
BankServices/RoutineEmailService/Dockerfile
Normal file
40
BankServices/RoutineEmailService/Dockerfile
Normal file
@@ -0,0 +1,40 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /
|
||||
|
||||
# Install system dependencies and Poetry
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gcc \
|
||||
&& rm -rf /var/lib/apt/lists/* && pip install --no-cache-dir poetry
|
||||
|
||||
# Copy Poetry configuration
|
||||
COPY /BankServices/RoutineEmailService/pyproject.toml ./pyproject.toml
|
||||
|
||||
# Configure Poetry and install dependencies with optimizations
|
||||
RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi --no-root --only main \
|
||||
&& pip cache purge && rm -rf ~/.cache/pypoetry
|
||||
|
||||
# Install cron for scheduling tasks
|
||||
RUN apt-get update && apt-get install -y cron
|
||||
|
||||
# 11:00 Istanbul Time (UTC+3) system time is 08:00 UTC
|
||||
RUN echo "0 8 * * * /usr/local/bin/python /app.py >> /var/log/cron.log 2>&1" > /tmp/crontab_list && crontab /tmp/crontab_list
|
||||
|
||||
# Copy application code
|
||||
ADD /BankServices/RoutineEmailService /
|
||||
|
||||
ADD /Configs /Configs
|
||||
ADD /Schemas /Schemas
|
||||
ADD /Commons /Commons
|
||||
|
||||
ADD /Services/MongoService /Services/MongoService
|
||||
ADD /Services/PostgresService /Services/PostgresService
|
||||
ADD /Services/EmailService /Services/EmailService
|
||||
|
||||
# Set Python path to include app directory
|
||||
ENV PYTHONPATH=/ PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
# Create log file to grab cron logs
|
||||
RUN touch /var/log/cron.log
|
||||
|
||||
# Run cron setup and tail the log file for user to monitor logs
|
||||
CMD cron && tail -f /var/log/cron.log
|
||||
0
BankServices/RoutineEmailService/README.md
Normal file
0
BankServices/RoutineEmailService/README.md
Normal file
57
BankServices/RoutineEmailService/app.py
Normal file
57
BankServices/RoutineEmailService/app.py
Normal file
@@ -0,0 +1,57 @@
|
||||
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):
|
||||
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
|
||||
return template.render(headers=headers, rows=rows) # Render template with variables
|
||||
|
||||
|
||||
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():
|
||||
account_records = (
|
||||
AccountRecords.query.filter()
|
||||
.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
|
||||
|
||||
rows = [{
|
||||
"date": record.bank_date, "comment": record.bank_comment, "currency": record.currency_value,
|
||||
} for record in account_records]
|
||||
|
||||
send_to = "karatay@mehmetkaratay.com.tr"
|
||||
html_template = render_email_template(
|
||||
headers=["Ulaştığı Tarih", "Banka Transaksiyonu Ek Bilgi", "Aktarım Değeri"],
|
||||
rows=rows,
|
||||
)
|
||||
exit()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
set_account_records_to_send_email()
|
||||
15
BankServices/RoutineEmailService/pyproject.toml
Normal file
15
BankServices/RoutineEmailService/pyproject.toml
Normal file
@@ -0,0 +1,15 @@
|
||||
[project]
|
||||
name = "routineemailservice"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"arrow>=1.3.0",
|
||||
"fastapi>=0.115.11",
|
||||
"jinja2>=3.1.6",
|
||||
"psycopg2-binary>=2.9.10",
|
||||
"redbox>=0.2.1",
|
||||
"redmail>=0.6.0",
|
||||
"sqlalchemy-mixins>=2.0.5",
|
||||
]
|
||||
0
BankServices/RoutineEmailService/templates/a.txt
Normal file
0
BankServices/RoutineEmailService/templates/a.txt
Normal file
Reference in New Issue
Block a user