You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
xmrauctions/core/helpers/email_template.py

55 lines
1.7 KiB
Python

from django.conf import settings
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.urls import reverse
from items.models import Item
from sales.models import ItemSale
class EmailTemplate:
def __init__(self, item, scenario, role):
if isinstance(item, ItemSale):
context = {
'sale': item,
'sale_path': reverse('get_sale', args=[item.id])
}
tpl_path = 'sales'
if role == 'buyer':
self.to_address = item.bid.bidder.email
else:
self.to_address = item.item.owner.email
elif isinstance(item, Item):
context = {
'item': item,
'item_path': reverse('get_item', args=[item.id])
}
tpl_path = 'items'
self.to_address = item.owner.email
context['site_name'] = settings.SITE_NAME
context['site_url'] = settings.SITE_URL
context['escrow_period'] = settings.ESCROW_PERIOD_DAYS
subject = render_to_string(
template_name=f'{tpl_path}/notify/{scenario}/{role}/subject.txt',
context=context,
request=None
)
body = render_to_string(
template_name=f'{tpl_path}/notify/{scenario}/{role}/body.txt',
context=context,
request=None
)
self.subject = ''.join(subject.splitlines())
self.body = body
self.role = role
self.item = item
def send(self):
res = send_mail(
self.subject,
self.body,
settings.DEFAULT_FROM_EMAIL,
[self.to_address]
)
return res