email connection fixed

This commit is contained in:
ayxan 2023-01-30 17:24:00 +04:00
parent e3e6497d4b
commit 54d02bd56e

View File

@ -1,21 +1,21 @@
from celery import shared_task from celery import shared_task
from account.models import User from account.models import User
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.core.mail import EmailMessage
from imdb_api_access import SeriesCounter from imdb_api_access import SeriesCounter
from imdb_api_access import MaximumUsageError from imdb_api_access import MaximumUsageError
from django.core.mail import (EmailMessage,
get_connection)
# from celery.utils.log import get_task_logger # from celery.utils.log import get_task_logger
# logger = get_task_logger(__name__) # logger = get_task_logger(__name__)
def update_series(updated_series): def update_series(updated_series):
updated_series.series.last_season = updated_series.last_season updated_series.series.last_season = updated_series.last_season
updated_series.series.last_episode = updated_series.last_episode updated_series.series.last_episode = updated_series.last_episode
updated_series.series.new_episodes_count = updated_series.new_episodes_count updated_series.series.new_episodes_count = updated_series.new_episodes_count
def send_email(user): def compose_email(user):
series = user.series.filter(show=True).order_by('-id') series = user.series.filter(show=True).order_by('-id')
series_counter = SeriesCounter(user.imdb_api_key) series_counter = SeriesCounter(user.imdb_api_key)
@ -27,15 +27,14 @@ def send_email(user):
for updated_series in series_counter.new_series_list: for updated_series in series_counter.new_series_list:
update_series(updated_series) update_series(updated_series)
updated_series.save() updated_series.save()
message = render_to_string('email/maximum_usage_notification.html', { return render_to_string(
'user': user, 'email/maximum_usage_notification.html',
'new_series_list': series_counter.new_series_list, {
'maximum_usage': str(e) 'user': user,
}) 'new_series_list': series_counter.new_series_list,
email = EmailMessage( 'maximum_usage': str(e),
'New Episodes!', message, to=[user.email] },
) )
email.send()
return return
if series_len: if series_len:
@ -44,28 +43,30 @@ def send_email(user):
updated_series.series.save() updated_series.series.save()
if series_counter.error_series: if series_counter.error_series:
message = render_to_string('email/error_series_notification.html', { return render_to_string('email/error_series_notification.html', {
'user': user, 'user': user,
'new_series_list': series_counter.new_series_list, 'new_series_list': series_counter.new_series_list,
'error_series_list': series_counter.error_series 'error_series_list': series_counter.error_series,
}) })
email = EmailMessage(
'New Episodes!', message, to=[user.email]
)
email.send()
return
message = render_to_string('email/new_series_notification.html', { return render_to_string('email/new_series_notification.html', {
'user': user, 'user': user,
'new_series_list': series_counter.new_series_list 'new_series_list': series_counter.new_series_list,
}) })
email = EmailMessage(
'New Episodes!', message, to=[user.email]
)
email.send()
return
@shared_task(name='send_emails') @shared_task(name='send_emails')
def send_feedback_email_task(): def send_feedback_email_task():
users = User.objects.filter(send_email=True) users = User.objects.filter(send_email=True)
for user in users: send_email(user)
with get_connection() as connection:
for user in users:
if html_message := compose_email(user):
msg = EmailMessage(
subject='Series Updated!',
body=html_message,
from_email='series.notification@gmail.com',
to=[user.email],
connection=connection,
)
msg.content_subtype = 'html'
msg.send()