Merge pull request #145 from CDC-IITDH/gowtham/send-reminder-mails

Send reminder mails service
This commit is contained in:
karthik mv 2023-05-30 15:07:49 +05:30 committed by GitHub
commit ba8395c522
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 69 additions and 1 deletions

View File

@ -158,6 +158,7 @@ STUDENT_APPLICATION_SUBMITTED_TEMPLATE_SUBJECT = 'CDC - Application Submitted -
STUDENT_APPLICATION_UPDATED_TEMPLATE_SUBJECT = 'CDC - Application Updated - {company_name}'
COMPANY_EMAIl_VERIFICATION_TEMPLATE_SUBJECT = 'Email Verification - Career Development Cell, IIT Dharwad'
NOTIFY_STUDENTS_OPENING_TEMPLATE_SUBJECT = 'Placement Opportunity at {company_name}'
REMINDER_STUDENTS_OPENING_TEMPLATE_SUBJECT = 'Reminder - Placement Opportunity at {company_name}'
STUDENT_APPLICATION_SUBMITTED_TEMPLATE = 'student_application_submitted.html'
COMPANY_OPENING_SUBMITTED_TEMPLATE = 'company_opening_submitted.html'
@ -167,6 +168,7 @@ STUDENT_APPLICATION_UPDATED_TEMPLATE = 'student_application_updated.html'
COMPANY_EMAIL_VERIFICATION_TEMPLATE = 'company_email_verification.html'
COMPANY_JNF_RESPONSE_TEMPLATE = 'company_jnf_response.html'
NOTIFY_STUDENTS_OPENING_TEMPLATE = 'notify_students_new_opening.html'
REMINDER_STUDENTS_OPENING_TEMPLATE = 'students_opening_reminder.html'
APPLICATION_CSV_COL_NAMES = ['Applied At', 'Roll No.', 'Name', 'Email', 'Phone Number', 'Branch', 'Batch', 'CPI',
'Resume', 'Selected', ]

View File

@ -47,7 +47,9 @@ INSTALLED_APPS = [
'background_task',
'simple_history',
'import_export',
'django_extensions',
"django_extensions"
]
MIDDLEWARE = [

View File

@ -0,0 +1,63 @@
from APIs.models import Placement, Student, PlacementApplication, User
from APIs.utils import sendEmail, PlacementApplicationConditions
from APIs.constants import *
from django.shortcuts import get_object_or_404
from django.utils import timezone
import time
import pytz
REPEAT_AFTER = 10 * 60
def send_reminder_mails():
placements = Placement.objects.all()
students = Student.objects.all()
for placement in placements.iterator():
print("Processing placement: ", placement)
# if placement is approved and email is verified
if not (placement.offer_accepted and placement.email_verified):
continue
# if placement is not expired
if placement.deadline_datetime < timezone.now():
continue
# send the reminder mail if the deadline is within 24 hours +- ReapetAfter
if timezone.now() - timezone.timedelta(
seconds=REPEAT_AFTER) <= placement.deadline_datetime - timezone.timedelta(days=1) < timezone.now() + \
timezone.timedelta(seconds=REPEAT_AFTER):
for student in students:
try:
# if Application not found then send email
if not PlacementApplication.objects.filter(placement=placement, student=student).exists():
if student.branch in placement.allowed_branch:
if student.degree == 'bTech' or placement.rs_eligible is True:
if PlacementApplicationConditions(student, placement)[0]:
student_user = get_object_or_404(User, id=student.id)
# change timezone to IST
deadline_datetime = placement.deadline_datetime.astimezone(pytz.timezone('Asia/Kolkata'))
data = {
"company_name": placement.company_name,
"opening_type": 'Placement',
"deadline": deadline_datetime.strftime("%A, %-d %B %Y, %-I:%M %p"),
"link": PLACEMENT_OPENING_URL.format(id=placement.id)
}
print("Sending mail to " + student_user.email, "placement id: ", placement.id)
sendEmail(student_user.email,
REMINDER_STUDENTS_OPENING_TEMPLATE_SUBJECT.format(
company_name=placement.company_name),
data, REMINDER_STUDENTS_OPENING_TEMPLATE)
except Exception as e:
print(e)
continue
def run():
while True:
print("Sleeping for", REPEAT_AFTER, "seconds")
time.sleep(REPEAT_AFTER)
print("Running send_reminder_mails()")
send_reminder_mails()

View File

@ -45,7 +45,7 @@
<h1 style="font-size:24px;margin:0 0 20px 0;font-family: 'Roboto', sans-serif;
">{{ opening_type }} Opportunity at {{ company_name }}</h1>
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
Gentle reminder for the same.
Gentle reminder to fill out the application form.
Interested students can apply before <b>{{ deadline }}</b> in the <a
href="{{ link }}">CDC-webportal</a>.
</p>

View File

@ -14,6 +14,7 @@ django-background-tasks==1.2.5
django-compat==1.0.15
django-cors-headers==3.11.0
django-db-logger==0.1.12
django-extensions==3.2.1
django-import-export==2.8.0
django-simple-history==3.1.1
djangorestframework==3.13.1