added addIssue endpoint and updated offeraccepted
This commit is contained in:
parent
62033249e9
commit
37615876d6
|
@ -149,12 +149,17 @@ def updateOfferAccepted(request, id, email, user_type):
|
||||||
opening_type= data[OPENING_TYPE]
|
opening_type= data[OPENING_TYPE]
|
||||||
else:
|
else:
|
||||||
opening_type= "Placement"
|
opening_type= "Placement"
|
||||||
|
if DEADLINE_DATETIME in data:
|
||||||
|
deadline_datetime = datetime.datetime.strptime(data[DEADLINE_DATETIME], '%Y-%m-%d %H:%M:%S %z')
|
||||||
|
else:
|
||||||
|
deadline_datetime = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) + datetime.timedelta(days=2)
|
||||||
if opening_type == "Internship":
|
if opening_type == "Internship":
|
||||||
opening = get_object_or_404(Internship, pk=data[OPENING_ID])
|
opening = get_object_or_404(Internship, pk=data[OPENING_ID])
|
||||||
else:
|
else:
|
||||||
opening = get_object_or_404(Placement, pk=data[OPENING_ID])
|
opening = get_object_or_404(Placement, pk=data[OPENING_ID])
|
||||||
if opening.offer_accepted is None:
|
if opening.offer_accepted is None:
|
||||||
opening.offer_accepted = offer_accepted == "true"
|
opening.offer_accepted = offer_accepted == "true"
|
||||||
|
opening.deadline_datetime = deadline_datetime
|
||||||
opening.changed_by = get_object_or_404(User, id=id)
|
opening.changed_by = get_object_or_404(User, id=id)
|
||||||
opening.save()
|
opening.save()
|
||||||
if opening.offer_accepted:
|
if opening.offer_accepted:
|
||||||
|
|
|
@ -73,6 +73,10 @@ CDC_REPS_EMAILS = [
|
||||||
"suvamay.jana@iitdh.ac.in",
|
"suvamay.jana@iitdh.ac.in",
|
||||||
"ramesh.nayaka@iitdh.ac.in"
|
"ramesh.nayaka@iitdh.ac.in"
|
||||||
]
|
]
|
||||||
|
CDC_REPS_EMAILS_FOR_ISSUE=[ #add reps emails
|
||||||
|
"support.cdc@iitdh.ac.in"
|
||||||
|
"irontwist00@gmail.com"
|
||||||
|
]
|
||||||
|
|
||||||
# To be Configured Properly
|
# To be Configured Properly
|
||||||
CLIENT_ID = os.environ.get('GOOGLE_OAUTH_CLIENT_ID') # Google Login Client ID
|
CLIENT_ID = os.environ.get('GOOGLE_OAUTH_CLIENT_ID') # Google Login Client ID
|
||||||
|
@ -207,7 +211,9 @@ APPLICATION_CSV_COL_NAMES = ['Applied At', 'Roll No.', 'Name', 'Email', 'Phone N
|
||||||
'Resume', 'Selected', ]
|
'Resume', 'Selected', ]
|
||||||
|
|
||||||
|
|
||||||
|
ISSUE_SUBMITTED_TEMPLATE_SUBJECT = 'CDC - Issue Submitted'
|
||||||
|
STUDENT_ISSUE_SUBMITTED_TEMPLATE = 'student_issue_submitted.html'
|
||||||
|
REPS_ISSUE_SUBMITTED_TEMPLATE = 'reps_issue_submitted.html'
|
||||||
# Internships
|
# Internships
|
||||||
INTERNSHIP = 'Internship'
|
INTERNSHIP = 'Internship'
|
||||||
INTERNSHIP_ID = 'internship_id'
|
INTERNSHIP_ID = 'internship_id'
|
||||||
|
@ -225,6 +231,7 @@ FACILITIES = 'facilities'
|
||||||
OTHER_FACILITIES = 'other_facilities'
|
OTHER_FACILITIES = 'other_facilities'
|
||||||
STIPEND_DETAILS_PDF = 'compensation_details_pdf'
|
STIPEND_DETAILS_PDF = 'compensation_details_pdf'
|
||||||
STIPEND_DETAILS_PDF_NAMES = 'stipend_description_pdf_names'
|
STIPEND_DETAILS_PDF_NAMES = 'stipend_description_pdf_names'
|
||||||
|
INTERNSHIP_OPENING_URL = "https://cdc.iitdh.ac.in/portal/student/dashboard/internships/{id}" # On frontend, this is the URL to be opened
|
||||||
|
|
||||||
SEASONS = (
|
SEASONS = (
|
||||||
'Summer',
|
'Summer',
|
||||||
|
|
|
@ -478,4 +478,31 @@ class Contributor(models.Model):
|
||||||
image = models.CharField(max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, blank=False, default="", null=True)
|
image = models.CharField(max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, blank=False, default="", null=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class Issues(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
|
title = models.CharField(max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, blank=False, default="")
|
||||||
|
description = models.CharField(max_length=200, blank=False, default="")
|
||||||
|
opening=(models.ForeignKey(Placement, on_delete=models.CASCADE, blank=False) or models.ForeignKey(Internship, on_delete=models.CASCADE, blank=False))
|
||||||
|
#status = models.CharField(max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, blank=False, default="")
|
||||||
|
student=models.ForeignKey(Student, on_delete=models.CASCADE, blank=False)
|
||||||
|
created_at = models.DateTimeField(blank=False, default=None, null=True)
|
||||||
|
updated_at = models.DateTimeField(blank=False, default=None, null=True)
|
||||||
|
changed_by = models.ForeignKey(User, on_delete=models.RESTRICT, blank=True, null=True)
|
||||||
|
history = HistoricalRecords(user_model=User)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
''' On save, add timestamps '''
|
||||||
|
if not self.created_at:
|
||||||
|
self.created_at = timezone.now()
|
||||||
|
self.updated_at = timezone.now()
|
||||||
|
|
||||||
|
return super(Issues, self).save(*args, **kwargs)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.title + " - " + self.student.name
|
||||||
|
class Meta:
|
||||||
|
verbose_name_plural = "Issues"
|
||||||
|
|
|
@ -3,14 +3,14 @@ from django.urls import path
|
||||||
from . import studentViews
|
from . import studentViews
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('login/', studentViews.login, name="Login"), #done for intern
|
path('login/', studentViews.login, name="Login"),
|
||||||
path('profile/', studentViews.studentProfile, name="Student Profile"), #done for intern
|
path('profile/', studentViews.studentProfile, name="Student Profile"),
|
||||||
path('getDashboard/', studentViews.getDashboard, name="Dashboard"), # customised dashboard.. check are we checking registedred check allowed branch/batches filter in
|
path('getDashboard/', studentViews.getDashboard, name="Dashboard"),
|
||||||
path("addResume/", studentViews.addResume, name="Upload Resume"), #done for intern
|
path("addResume/", studentViews.addResume, name="Upload Resume"),
|
||||||
path("deleteResume/", studentViews.deleteResume, name="Upload Resume"),#done for intern
|
path("deleteResume/", studentViews.deleteResume, name="Delete Resume"),
|
||||||
path("submitApplication/", studentViews.submitApplication, name="Submit Application"), #done for intern
|
path("submitApplication/", studentViews.submitApplication, name="Submit Application"),
|
||||||
path("deleteApplication/", studentViews.deleteApplication, name="Delete Application"), #done for intern check for opening type data in headers
|
path("deleteApplication/", studentViews.deleteApplication, name="Delete Application"),
|
||||||
path("getContributorStats/", studentViews.getContributorStats, name="Get Contributor Stats"),
|
path("getContributorStats/", studentViews.getContributorStats, name="Get Contributor Stats"),
|
||||||
path("studentAcceptOffer/", studentViews.studentAcceptOffer, name="Student Accept Offer"), #same as above check header
|
path("studentAcceptOffer/", studentViews.studentAcceptOffer, name="Student Accept Offer"),
|
||||||
|
path("addIssue/",studentViews.addIssue,name= "Add Issue")
|
||||||
]
|
]
|
||||||
#store all files..
|
|
|
@ -346,4 +346,52 @@ def studentAcceptOffer(request, id, email, user_type):
|
||||||
logger.warning("Accept Offer: " + str(sys.exc_info()))
|
logger.warning("Accept Offer: " + str(sys.exc_info()))
|
||||||
|
|
||||||
return Response({'action': "Accept Offer", 'message': "Something Went Wrong"},
|
return Response({'action': "Accept Offer", 'message': "Something Went Wrong"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
|
||||||
|
#view for addIssue
|
||||||
|
|
||||||
|
@api_view(['POST'])
|
||||||
|
@isAuthorized(allowed_users=[STUDENT])
|
||||||
|
@precheck(required_data=["Title","Description","opening_id"])
|
||||||
|
def addIssue(request, id, email, user_type):
|
||||||
|
try:
|
||||||
|
data = request.data
|
||||||
|
student = get_object_or_404(Student, id=id)
|
||||||
|
issue = Issues()
|
||||||
|
issue.student = student
|
||||||
|
issue.title = data["Title"]
|
||||||
|
issue.description = data["Description"]
|
||||||
|
# issue.opening=get_object_or_404(Placement, id=data["opening_id"]) or get_object_or_404(Internship, id=data["opening_id"])
|
||||||
|
try:
|
||||||
|
issue.opening=get_object_or_404(Placement, id=data["opening_id"])
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
issue.opening=get_object_or_404(Internship, id=data["opening_id"])
|
||||||
|
except:
|
||||||
|
return Response({'action': "Add Issue", 'message': "Opening Not Found"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
issue.save()
|
||||||
|
subject=ISSUE_SUBMITTED_TEMPLATE_SUBJECT
|
||||||
|
data={
|
||||||
|
"name":student.name,
|
||||||
|
"application_type":PLACEMENT if isinstance(issue.opening,Placement) else INTERNSHIP,
|
||||||
|
"company_name":issue.opening.company_name,
|
||||||
|
"additional_info":{
|
||||||
|
"Title":issue.title,
|
||||||
|
"Description":issue.description
|
||||||
|
},
|
||||||
|
"email":email
|
||||||
|
}
|
||||||
|
sendEmail(email, subject, data, STUDENT_ISSUE_SUBMITTED_TEMPLATE)
|
||||||
|
#send_mail_to reps
|
||||||
|
sendEmail(CDC_REPS_EMAILS_FOR_ISSUE,"Issue Raised",data,REPS_ISSUE_SUBMITTED_TEMPLATE)
|
||||||
|
return Response({'action': "Add Issue", 'message': "Issue Added"},
|
||||||
|
status=status.HTTP_200_OK)
|
||||||
|
except Http404:
|
||||||
|
return Response({'action': "Add Issue", 'message': 'Student Not Found'},
|
||||||
|
status=status.HTTP_404_NOT_FOUND)
|
||||||
|
except:
|
||||||
|
logger.warning("Add Issue: " + str(sys.exc_info()))
|
||||||
|
return Response({'action': "Add Issue", 'message': "Something Went Wrong"},
|
||||||
status=status.HTTP_400_BAD_REQUEST)
|
status=status.HTTP_400_BAD_REQUEST)
|
|
@ -428,7 +428,7 @@ def send_opening_notifications(opening_id, opening_type=PLACEMENT):
|
||||||
"opening_type": "INTERNSHIP" if isinstance(opening, Internship) else "PLACEMENT",
|
"opening_type": "INTERNSHIP" if isinstance(opening, Internship) else "PLACEMENT",
|
||||||
"designation": opening.designation,
|
"designation": opening.designation,
|
||||||
"deadline": deadline_datetime.strftime("%A, %-d %B %Y, %-I:%M %p"),
|
"deadline": deadline_datetime.strftime("%A, %-d %B %Y, %-I:%M %p"),
|
||||||
"link": PLACEMENT_OPENING_URL.format(id=opening.designation)
|
"link": PLACEMENT_OPENING_URL.format(id=opening.designation) if opening_type == PLACEMENT else INTERNSHIP_OPENING_URL.format(id=opening.designation),
|
||||||
}
|
}
|
||||||
emails.append(student_user.email)
|
emails.append(student_user.email)
|
||||||
#sendEmail(student_user.email, subject, data, NOTIFY_STUDENTS_OPENING_TEMPLATE)
|
#sendEmail(student_user.email, subject, data, NOTIFY_STUDENTS_OPENING_TEMPLATE)
|
||||||
|
@ -451,7 +451,7 @@ def exception_email(opening):
|
||||||
"company_name": opening["company_name"],
|
"company_name": opening["company_name"],
|
||||||
}
|
}
|
||||||
pdfhtml = opening_description_table_html(opening)
|
pdfhtml = opening_description_table_html(opening)
|
||||||
name = opening["company_name"] + '_jnf_response.pdf'
|
name = opening["company_name"] + '_jnf_response.pdf' if opening[OPENING_TYPE]!="INF" else opening["company_name"] + '_inf_response.pdf'
|
||||||
attachment_jnf_respone = {
|
attachment_jnf_respone = {
|
||||||
"name": name,
|
"name": name,
|
||||||
"html": pdfhtml,
|
"html": pdfhtml,
|
||||||
|
@ -474,6 +474,10 @@ def store_all_files(request):
|
||||||
for file in files.getlist(COMPENSATION_DETAILS_PDF):
|
for file in files.getlist(COMPENSATION_DETAILS_PDF):
|
||||||
file_location = STORAGE_DESTINATION_COMPANY_ATTACHMENTS + "temp" + '/'
|
file_location = STORAGE_DESTINATION_COMPANY_ATTACHMENTS + "temp" + '/'
|
||||||
saveFile(file, file_location)
|
saveFile(file, file_location)
|
||||||
|
#stipend details pdf for internships
|
||||||
|
for file in files.getlist(STIPEND_DETAILS_PDF):
|
||||||
|
file_location = STORAGE_DESTINATION_COMPANY_ATTACHMENTS + "temp" + '/'
|
||||||
|
saveFile(file, file_location)
|
||||||
# selection procedure details pdf
|
# selection procedure details pdf
|
||||||
for file in files.getlist(SELECTION_PROCEDURE_DETAILS_PDF):
|
for file in files.getlist(SELECTION_PROCEDURE_DETAILS_PDF):
|
||||||
file_location = STORAGE_DESTINATION_COMPANY_ATTACHMENTS + "temp" + '/'
|
file_location = STORAGE_DESTINATION_COMPANY_ATTACHMENTS + "temp" + '/'
|
||||||
|
|
|
@ -0,0 +1,117 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<meta name="x-apple-disable-message-reformatting">
|
||||||
|
<title></title>
|
||||||
|
<!--[if mso]>
|
||||||
|
<noscript>
|
||||||
|
<xml>
|
||||||
|
<o:OfficeDocumentSettings>
|
||||||
|
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||||
|
</o:OfficeDocumentSettings>
|
||||||
|
</xml>
|
||||||
|
</noscript>
|
||||||
|
<![endif]-->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="shortcut icon" href="favicon.ico"/>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
table, td, div, h1, p {
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body style="margin:0;padding:0;">
|
||||||
|
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding:0;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:602px;border-collapse:collapse;border:1px solid #334878;border-spacing:0;text-align:left;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding:40px 0 30px 0;background:#334878;">
|
||||||
|
<img src="https://drive.google.com/uc?id=1QTA6dB7jnsZfU1kzyUqfD_2V5xODpWFt" alt="" width="200"
|
||||||
|
style="height:auto;display:block;"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:36px 30px 42px 30px;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:0 0 36px 0;color:#153643;">
|
||||||
|
<h1 style="font-size:24px;margin:0 0 20px 0;font-family: 'Roboto', sans-serif;
|
||||||
|
">Hello, Folks</h1>
|
||||||
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
|
||||||
|
We have received a issue regarding a <b>{{ application_type }}</b> opening at
|
||||||
|
<b>
|
||||||
|
{{ company_name }}</b> From {{name}}.
|
||||||
|
{% if additional_info_items %}
|
||||||
|
We received these additional details
|
||||||
|
<br>
|
||||||
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family:
|
||||||
|
'Roboto', sans-serif;text-align: center">
|
||||||
|
|
||||||
|
<table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
|
||||||
|
border-radius:15px; background-color: #e0e3ee">
|
||||||
|
|
||||||
|
{% for i,j in additional_info.items %}
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td style="padding:8px 10px;color:#153643; ">{{ i }}:</td>
|
||||||
|
<td style="padding:8px 10px;color:#153643;">{{ j }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</p>
|
||||||
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
|
||||||
|
please look into it and take necessary actions.
|
||||||
|
get in touch with the student at at <nobr><u>{{ email }}</u></nobr>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:0;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;">
|
||||||
|
<tr>
|
||||||
|
<td style="width:260px;padding:0;vertical-align:top;color:#334878;">
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:30px;background:#334878;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;font-size:9px;font-family: 'Roboto', sans-serif;">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:0;width:50%;" align="left">
|
||||||
|
<p style="margin:0;font-size:14px;line-height:16px;font-family: 'Roboto', sans-serif;color:#ffffff;">
|
||||||
|
® CDC,IIT Dharwad,2021<br/>
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,118 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<meta name="x-apple-disable-message-reformatting">
|
||||||
|
<title></title>
|
||||||
|
<!--[if mso]>
|
||||||
|
<noscript>
|
||||||
|
<xml>
|
||||||
|
<o:OfficeDocumentSettings>
|
||||||
|
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||||
|
</o:OfficeDocumentSettings>
|
||||||
|
</xml>
|
||||||
|
</noscript>
|
||||||
|
<![endif]-->
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
<link rel="shortcut icon" href="favicon.ico"/>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
table, td, div, h1, p {
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body style="margin:0;padding:0;">
|
||||||
|
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding:0;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:602px;border-collapse:collapse;border:1px solid #334878;border-spacing:0;text-align:left;">
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding:40px 0 30px 0;background:#334878;">
|
||||||
|
<img src="https://drive.google.com/uc?id=1QTA6dB7jnsZfU1kzyUqfD_2V5xODpWFt" alt="" width="200"
|
||||||
|
style="height:auto;display:block;"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:36px 30px 42px 30px;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:0 0 36px 0;color:#153643;">
|
||||||
|
<h1 style="font-size:24px;margin:0 0 20px 0;font-family: 'Roboto', sans-serif;
|
||||||
|
">Hello, {{ name }}</h1>
|
||||||
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
|
||||||
|
We have received your issue regarding a <b>{{ application_type }}</b> opening at
|
||||||
|
<b>
|
||||||
|
{{ company_name }}</b>.
|
||||||
|
{% if additional_info_items %}
|
||||||
|
We received these additional details
|
||||||
|
<br>
|
||||||
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family:
|
||||||
|
'Roboto', sans-serif;text-align: center">
|
||||||
|
|
||||||
|
<table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
|
||||||
|
border-radius:15px; background-color: #e0e3ee">
|
||||||
|
|
||||||
|
{% for i,j in additional_info.items %}
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td style="padding:8px 10px;color:#153643; ">{{ i }}:</td>
|
||||||
|
<td style="padding:8px 10px;color:#153643;">{{ j }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</p>
|
||||||
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
|
||||||
|
We will get back to you if we find it legitimate. If you have any queries, please
|
||||||
|
feel to
|
||||||
|
write to
|
||||||
|
<nobr><u>cdc.support@iitdh.ac.in</u></nobr>
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:0;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;">
|
||||||
|
<tr>
|
||||||
|
<td style="width:260px;padding:0;vertical-align:top;color:#334878;">
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:30px;background:#334878;">
|
||||||
|
<table role="presentation"
|
||||||
|
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;font-size:9px;font-family: 'Roboto', sans-serif;">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:0;width:50%;" align="left">
|
||||||
|
<p style="margin:0;font-size:14px;line-height:16px;font-family: 'Roboto', sans-serif;color:#ffffff;">
|
||||||
|
® CDC,IIT Dharwad,2021<br/>
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue