schon/payments/utils/emailing.py
Egor fureunoir Gorbunov 14c37701b6 Features: 1) Add _ import for translations in emailing utility; 2) Simplify urlpatterns definition in api_urls; 3) Introduce is_publicly_visible attribute to multiple core models;
Fixes: 1) Correct transaction primary key reference in email utility; 2) Remove unnecessary model permissions in `jazzmin.py`;

Extra: 1) Minor formatting alignments to codebase including whitespace adjustments; 2) Retain static URL handling in debug mode for `api_urls`.
2025-06-29 19:18:27 +03:00

47 lines
1.6 KiB
Python

from datetime import datetime
from celery.app import shared_task
from constance import config
from django.core import mail
from django.core.mail import EmailMessage
from django.template.loader import render_to_string
from django.utils.translation import activate
from django.utils.translation import gettext_lazy as _
from core.utils.constance import set_email_settings
from payments.models import Transaction
@shared_task
def balance_deposit_email(transaction_pk: str) -> tuple[bool, str]:
try:
transaction = Transaction.objects.get(pk=transaction_pk)
except Transaction.DoesNotExist:
return False, f"Transaction not found with the given pk: {transaction_pk}"
activate(transaction.balance.user.language) # type: ignore
set_email_settings()
connection = mail.get_connection()
email = EmailMessage(
_(f"{config.PROJECT_NAME} | balance deposit"),
render_to_string(
template_name="balance_deposit_email.html",
context={
"amount": transaction.amount,
"balance": transaction.balance.amount,
"user_first_name": transaction.balance.user.first_name, # type: ignore
"project_name": config.PROJECT_NAME,
"contact_email": config.EMAIL_FROM,
"today": datetime.today(),
},
),
to=[transaction.balance.user.email], # type: ignore
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
connection=connection,
)
email.content_subtype = "html"
email.send()
return True, str(transaction_pk)