Compare commits

..

60 Commits

Author SHA1 Message Date
Challenger 48451b9060
Merge f0a02ec2d0 into a6ec89f1c6 2024-09-12 08:37:54 +00:00
Jaya Surya P a6ec89f1c6
Merge pull request #203 from CDC-IITDH/nitin
fixed download resume error
2024-09-06 22:45:43 +05:30
NitinVangipuram b977053556 fixed download resume error 2024-09-06 18:59:43 +05:30
NitinVangipuram c7a5325ed6 fixed download resume error 2024-09-06 18:58:02 +05:30
Jaya Surya P 5e53859f52
Merge pull request #202 from CDC-IITDH/nitin
changes to downloadresume
2024-09-05 16:06:15 +05:30
NitinVangipuram 48ffebb221 changes to downloadresume 2024-09-05 15:21:05 +05:30
Jaya Surya P c89cae549f
Merge pull request #201 from CDC-IITDH/nitin
changes to student model
2024-08-16 21:43:22 +05:30
NitinVangipuram 020a10f71a changes to internshipfilter 2024-08-15 23:02:03 +05:30
NitinVangipuram bab382c8ec changes to student model 2024-08-14 22:42:40 +05:30
CDC bd4fbdc49a resolved merge conflicts 2024-08-06 15:16:09 +05:30
Vangipuram Nitin 60ed13588c
Merge pull request #200 from CDC-IITDH/surya/changes
changes for new config
2024-08-04 23:44:30 +05:30
NitinVangipuram 18c3d9b046 changes to eligibility filter 2024-08-04 17:25:53 +05:30
NitinVangipuram 32fb8c5d6a Merge branch 'main' of https://github.com/CDC-IITDH/cdc-placement-website-backend into surya/changes 2024-07-28 22:21:44 +05:30
Jaya Surya c2ebf5a600 added somethings 2024-07-28 19:41:16 +05:30
Jaya Surya aac7bf55d1 changes for new config 2024-07-25 19:58:26 +05:30
Jaya Surya P 18f509e6a4
Merge pull request #199 from CDC-IITDH/vnitin
changes to fields
2024-07-25 19:52:30 +05:30
NitinVangipuram 93b716ec90 changes to templates 2024-07-25 12:25:49 +05:30
NitinVangipuram 6e68db7760 changes to fields 2024-07-24 23:27:27 +05:30
Jaya Surya P 48b59248e6
Merge pull request #198 from CDC-IITDH/vnitin
changes to models
2024-07-21 23:27:36 +05:30
NitinVangipuram 727c53ef85 changes to models 2024-07-21 21:53:34 +05:30
Jaya Surya P 7f2e4d24dd
Merge pull request #197 from CDC-IITDH/vnitin
changes
2024-07-19 15:39:49 +05:30
Vangipuram Nitin 6a46dc0dcd
changed django.yml 2024-07-19 15:07:12 +05:30
NitinVangipuram 9990cdfa5a changes 2024-07-19 14:48:31 +05:30
NitinVangipuram 280d4a599f Merge branch 'vnitin' of https://github.com/CDC-IITDH/cdc-placement-website-backend into vnitin 2024-07-19 14:29:56 +05:30
NitinVangipuram 1ac94e4faf Merge branch 'main' of https://github.com/CDC-IITDH/cdc-placement-website-backend into vnitin 2024-07-19 12:31:08 +05:30
NitinVangipuram 32a52f9567 changes 2024-07-19 11:56:33 +05:30
Jaya Surya P e7c6249734
Merge pull request #195 from CDC-IITDH/vasu
templates
2024-07-06 12:05:20 +05:30
Sreenivasu Akella 0e64af83a4 templates 2024-07-06 12:04:21 +05:30
Jaya Surya P 390e582075
Merge pull request #196 from CDC-IITDH/downloadResume
Added admin view to zip and download resumes for a particular application
2024-07-06 12:03:51 +05:30
CDC 1b3f9bb383 start backend script 2024-06-22 14:46:22 +05:30
NitinVangipuram 6cf27e52a4 Added New fields to Models 2024-06-21 00:15:00 +05:30
Eshwar dcb85afea4 Changed it so that only selected student's resumes get downloaded 2024-06-19 22:34:06 +05:30
Eshwar 0be1a6c56e Added admin view to zip and download resumes for a particular application 2024-06-19 22:22:41 +05:30
Jaya Surya c95c3bb631 changes to admin.py 2024-06-04 15:02:15 +05:30
Jaya Surya bf42c17c3a updated requirements.txt 2024-05-29 14:38:25 +05:30
Jaya Surya 10cc08dc4d changed 4th year batch to 2021 2024-05-08 01:03:27 +05:30
karthik mv 9447654979
Merge pull request #194 from CDC-IITDH/removed-automated-deadline
removed-automated deadline
2023-12-07 03:24:27 +05:30
uttamthummala b6a7dd055a fixed offer accepted 2023-11-30 12:58:07 +05:30
uttamthummala 48a5d7c417 removed intern test 2023-11-30 12:16:09 +05:30
uttamthummala 595461f33b removed-automated deadline 2023-11-30 11:37:12 +05:30
karthik mv b3f9e2835d
Merge pull request #193 from CDC-IITDH/fix-validation
fix tier validation
2023-11-29 23:08:05 +05:30
karthikmurakonda 3d3584ab8e fix tier validation 2023-11-29 23:05:55 +05:30
uttamthummala 0e65eb4e63
Merge pull request #192 from CDC-IITDH/fix-eligibility
can apply only to greater tiers
2023-11-19 16:46:36 +05:30
karthikmurakonda c298e313e2 2 offer for tier 1 2023-11-19 16:37:41 +05:30
karthikmurakonda 3819d3d7ed can apply only to greater tiers 2023-11-19 16:14:42 +05:30
uttamthummala f1018b8fac
Merge pull request #191 from CDC-IITDH/upgrade-selenium-test
added auto clean test files and test objects
2023-11-16 23:13:43 +05:30
uttamthummala 6e95741397 added auto clean test files and test objects 2023-11-13 23:43:12 +05:30
karthik mv 9b14023f35
Merge pull request #190 from CDC-IITDH:fixing-inf
remove json dumps
2023-11-11 03:38:56 +05:30
karthikmurakonda 7c3d4f9e4d remove json dumps 2023-11-11 03:35:29 +05:30
uttamthummala 6c484c1292
Merge pull request #189 from CDC-IITDH/karthikmurakonda-patch-3
Update companyViews.py
2023-11-09 19:47:43 +05:30
karthik mv 72c6187d0d
Update companyViews.py 2023-11-09 19:44:57 +05:30
uttamthummala f6d27a9e5a
Merge pull request #187 from CDC-IITDH/fixing-inf
fixed inf validation and logs every inf and jnf request
2023-11-09 18:39:29 +05:30
uttamthummala 1c3103ed4a
fixed typo 2023-11-09 18:37:36 +05:30
uttamthummala 8fe297c490
fixed typo 2023-11-09 18:26:06 +05:30
karthikmurakonda cdf1e7bf19 fixed inf validation and logs every inf and jnf request 2023-11-09 17:45:29 +05:30
karthik mv 484e1130e8
Merge pull request #185 from CDC-IITDH/karthikmurakonda-patch-2
Update run_prod.sh for prod
2023-10-31 00:52:09 +05:30
karthik mv 8981627dee
Update run_prod.sh for prod 2023-10-31 00:50:19 +05:30
karthik mv bc6f89addd
Merge pull request #184 from CDC-IITDH/notification-populater
changed endpoints to populate notifications
2023-10-31 00:48:21 +05:30
uttamthummala 11f58558a8
Merge branch 'main' into notification-populater 2023-10-29 16:52:37 +05:30
uttamthummala e05c4761a4 changed endpoints to populate notifications 2023-10-29 16:51:48 +05:30
33 changed files with 2312 additions and 1075 deletions

BIN
.DS_Store vendored

Binary file not shown.

2
.gitignore vendored
View File

@ -130,6 +130,7 @@ dmypy.json
/venv/
./CDC_Backend/static
CDC_Backend/static_url*
./CDC_Backend/Storage
/CDC_Backend/CDC_Backend/__pycache__/
/CDC_Backend/APIs/__pycache__/
@ -144,3 +145,4 @@ dev.env
#vscode settings
.vscode/
.DS_Store

Binary file not shown.

BIN
CDC_Backend/.DS_Store vendored

Binary file not shown.

View File

@ -83,7 +83,7 @@ class Student(StudentAdmin):
class PlacementResources(resources.ModelResource):
class Meta:
model = Placement
exclude = ('id','changed_by', 'is_company_details_pdf', 'is_description_pdf',
exclude = ('changed_by', 'is_company_details_pdf', 'is_description_pdf',
'is_compensation_details_pdf', 'is_selection_procedure_details_pdf')
class AdminAdmin(ExportMixin, SimpleHistoryAdmin):
resource_class = PlacementResources
@ -92,7 +92,7 @@ class AdminAdmin(ExportMixin, SimpleHistoryAdmin):
class PlacementResources(resources.ModelResource):
class Meta:
model = Placement
exclude = ('id', 'changed_by', 'is_company_details_pdf', 'is_description_pdf',
exclude = ( 'changed_by', 'is_company_details_pdf', 'is_description_pdf',
'is_compensation_details_pdf', 'is_selection_procedure_details_pdf')
@ -103,7 +103,7 @@ class AdminAdmin(ExportMixin, SimpleHistoryAdmin):
class PlacementResources(resources.ModelResource):
class Meta:
model = Placement
exclude = ('id', 'changed_by', 'is_company_details_pdf', 'is_description_pdf',
exclude = ('changed_by', 'is_company_details_pdf', 'is_description_pdf',
'is_compensation_details_pdf', 'is_selection_procedure_details_pdf')

View File

@ -13,6 +13,7 @@ urlpatterns = [
path('getApplications/', adminViews.getApplications, name="Get Applications"),
path("submitApplication/", adminViews.submitApplication, name="Submit Application"),
path('generateCSV/', adminViews.generateCSV, name="Generate CSV"),
path('downloadResume/', adminViews.downloadResume, name="Download Resume"),
path('addPPO/', adminViews.addPPO, name="Add PPO"),
path('getStudentApplication/', adminViews.getStudentApplication, name="Get student application"),
path('getStats/', adminViews.getStats, name="Get Stats"),

View File

@ -1,4 +1,5 @@
import csv
import zipfile
from rest_framework.decorators import api_view
@ -124,7 +125,8 @@ def updateDeadline(request, id, email, user_type):
opening.deadline_datetime = datetime.datetime.strptime(data[DEADLINE_DATETIME], '%Y-%m-%d %H:%M:%S %z')
opening.changed_by = get_object_or_404(User, id=id)
opening.save()
send_opening_to_notifications_service(id=opening.id,name=opening.company_name,deadline=data[DEADLINE_DATETIME],role=opening.designation)
if opening.offer_accepted:
send_opening_to_notifications_service(id=opening.id,name=opening.company_name,deadline=data[DEADLINE_DATETIME],role=opening.designation,opening_type=opening_type)
return Response({'action': "Update Deadline", 'message': "Deadline Updated"},
status=status.HTTP_200_OK)
except Http404:
@ -147,22 +149,17 @@ def updateOfferAccepted(request, id, email, user_type):
opening_type= data[OPENING_TYPE]
else:
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 = timezone.localtime(timezone.now()).replace(hour=0, minute=0, second=0, microsecond=0) + datetime.timedelta(days=2)
if opening_type == "Internship":
opening = get_object_or_404(Internship, pk=data[OPENING_ID])
else:
opening = get_object_or_404(Placement, pk=data[OPENING_ID])
if opening.offer_accepted is None:
opening.offer_accepted = offer_accepted == "true"
opening.deadline_datetime = deadline_datetime
opening.changed_by = get_object_or_404(User, id=id)
opening.save()
if opening.offer_accepted:
deadline=deadline_datetime.strftime('%Y-%m-%d %H:%M:%S %z')
send_opening_to_notifications_service(id=opening.id,name=opening.company_name,deadline=deadline,role=opening.designation)
deadline_datetime = datetime.datetime.strftime(opening.deadline_datetime, '%Y-%m-%d %H:%M:%S %z')
send_opening_to_notifications_service(id=opening.id,name=opening.company_name,deadline=deadline_datetime,role=opening.designation,opening_type=opening_type)
send_opening_notifications(opening.id,opening_type)
else:
raise ValueError("Offer Status already updated")
@ -462,6 +459,42 @@ def generateCSV(request, id, email, user_type):
status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST'])
@isAuthorized(allowed_users=[ADMIN])
@precheck(required_data=[OPENING_ID])
def downloadResume(request, id, email, user_type):
try:
data = request.data
if OPENING_TYPE in data:
opening_type= data[OPENING_TYPE]
if opening_type == "Internship":
opening = get_object_or_404(Internship, id=data[OPENING_ID])
applications = InternshipApplication.objects.filter(internship=opening)
else:
opening = get_object_or_404(Placement, id=data[OPENING_ID])
applications = PlacementApplication.objects.filter(placement=opening)
zip_filename = generateRandomString() + ".zip"
if not os.path.isdir(STORAGE_DESTINATION_RESUME_ZIP):
os.makedirs(STORAGE_DESTINATION_RESUME_ZIP, exist_ok=True)
resumes = {}
for apl in applications:
resumes[apl.student.roll_no] = STORAGE_DESTINATION_RESUMES + apl.student.id + '/' + apl.resume # Check if the folder name is student id or user id
with zipfile.ZipFile(STORAGE_DESTINATION_RESUME_ZIP + zip_filename, 'w', zipfile.ZIP_DEFLATED) as zip_file:
for student_roll_no, resume_path in resumes.items():
zip_file.write(resume_path, os.path.basename(str(student_roll_no) + ".pdf"))
file_path = LINK_TO_RESUMES_ZIP + urllib.parse.quote_plus(zip_filename)
return Response({'action': "Download resumes", 'message': "Resumes zip created", 'file': file_path},
status=status.HTTP_200_OK)
except:
logger.warning("Create csv: " + str(sys.exc_info()))
return Response({'action': "Create csv", 'message': "Something Went Wrong"},
status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST'])
@isAuthorized(allowed_users=[ADMIN])
@precheck(required_data=[COMPANY_NAME, COMPENSATION_GROSS, OFFER_ACCEPTED, STUDENT_ID, DESIGNATION, TIER])
@ -750,7 +783,6 @@ def getStats(request, id, email, user_type):
status=status.HTTP_200_OK)
except:
logger.warning("Get Stats: " + str(sys.exc_info()))
print(sys.exc_info())
return Response({'action': "Get Stats", 'message': "Something Went Wrong"},
status=status.HTTP_400_BAD_REQUEST)
@ -766,7 +798,11 @@ def get_eligible_students(request):
opening_type= data[OPENING_TYPE]
else:
opening_type= "Placement"
eligible_students=get_eligible_emails(opening_id=opening_id, opening_type=opening_type)
if "send_all" in data:
send_all = "True"==data["send_all"]
else:
send_all = False
eligible_students=get_eligible_emails(opening_id=opening_id, opening_type=opening_type, send_all=send_all)
return Response({'action': "Get Eligible Students", 'message': "Eligible Students Fetched",
'eligible_students': eligible_students},
status=status.HTTP_200_OK)

View File

@ -11,12 +11,14 @@ logger = logging.getLogger('db')
IS_COMPANY_DETAILS_PDF, CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, CITY, STATE, COUNTRY, PINCODE, DESIGNATION,
DESCRIPTION,
IS_DESCRIPTION_PDF, COMPENSATION_CTC, COMPENSATION_GROSS, COMPENSATION_TAKE_HOME, COMPENSATION_BONUS,
IS_COMPENSATION_DETAILS_PDF, ALLOWED_BRANCH, RS_ELIGIBLE, SELECTION_PROCEDURE_ROUNDS,
IS_COMPENSATION_DETAILS_PDF, ALLOWED_BRANCH, ELIGIBLESTUDENTS, SELECTION_PROCEDURE_ROUNDS,
SELECTION_PROCEDURE_DETAILS,
IS_SELECTION_PROCEDURE_DETAILS_PDF, TENTATIVE_DATE_OF_JOINING, TENTATIVE_NO_OF_OFFERS, OTHER_REQUIREMENTS,
RECAPTCHA_VALUE, JOB_LOCATION
])
RECAPTCHA_VALUE, JOB_LOCATION,PSYCHOMETRIC_TEST,MEDICAL_TEST,NUMBER_OF_EMPLOYEES,BACKLOG_ELIGIBLE,PWD_ELIGIBLE,CPI,EXPECTED_NO_OF_OFFERS])
def addPlacement(request):
logger.info("JNF filled by " + str(request.data['email']))
logger.info(request.data)
try:
data = request.data
files = request.FILES
@ -34,11 +36,35 @@ def addPlacement(request):
opening.website = data[WEBSITE]
opening.company_details = data[COMPANY_DETAILS]
opening.is_company_details_pdf = data[IS_COMPANY_DETAILS_PDF]
if data[RS_ELIGIBLE] == 'Yes':
opening.rs_eligible = True
else:
opening.rs_eligible = False
# if data[RS_ELIGIBLE] == 'Yes':
# opening.rs_eligible = True
# else:
# opening.rs_eligible = False
if data[ELIGIBLESTUDENTS] is None:
raise ValueError('Eligible Students cannot be empty')
elif set(json.loads(data[ELIGIBLESTUDENTS])).issubset(ELIGIBLE):
opening.eligiblestudents = json.loads(data[ELIGIBLESTUDENTS])
else:
raise ValueError('Allowed Branch must be a subset of ' + str(ELIGIBLE))
if data[PWD_ELIGIBLE] == 'Yes':
opening.pwd_eligible = True
else:
opening.pwd_eligible = False
if data[BACKLOG_ELIGIBLE] == 'Yes':
opening.backlog_eligible = True
else:
opening.backlog_eligible = False
if data[PSYCHOMETRIC_TEST] == 'Yes':
opening.psychometric_test = True
else:
opening.psychometric_test = False
if data[MEDICAL_TEST] == 'Yes':
opening.medical_test = True
else:
opening.medical_test = False
opening.cpi_eligible = data[CPI]
if opening.is_company_details_pdf:
company_details_pdf = []
for file in files.getlist(COMPANY_DETAILS_PDF):
@ -57,10 +83,8 @@ def addPlacement(request):
# Add a contact person details in the opening
opening.contact_person_name = data[CONTACT_PERSON_NAME]
# Check if Phone number is Integer
if data[PHONE_NUMBER].isdigit():
opening.phone_number = int(data[PHONE_NUMBER])
else:
raise ValueError('Phone number should be integer')
opening.phone_number = data[PHONE_NUMBER]
opening.email = data[EMAIL]
@ -111,6 +135,18 @@ def addPlacement(request):
opening.compensation_CTC = None
else:
raise ValueError('Compensation CTC must be an integer')
# Newly added
if data[COMPANY_TURNOVER].isdigit():
opening.company_turnover = int(data[COMPANY_TURNOVER])
elif data[COMPANY_TURNOVER] is None or data[COMPANY_TURNOVER] == '':
opening.company_turnover = None
else:
# Handle the case where the data is not a valid number or None/empty
# You can raise an error, set a default value, or log a warning
opening.company_turnover = None # Or some default value or error handling
# Check if compensation_gross is integer
if data[COMPENSATION_GROSS].isdigit():
@ -193,6 +229,14 @@ def addPlacement(request):
# Convert to date object
opening.tentative_date_of_joining = datetime.datetime.strptime(data[TENTATIVE_DATE_OF_JOINING],
'%d-%m-%Y').date()
establishment_date_str = data.get('ESTABLISHMENT_DATE', '')
if establishment_date_str:
try:
opening.establishment_date = datetime.datetime.strptime(establishment_date_str, '%d-%m-%Y').date()
except ValueError:
opening.establishment_date = None
else:
opening.establishment_date = None
# Only Allowing Fourth Year for Placement
opening.allowed_batch = [FOURTH_YEAR,]
@ -211,8 +255,17 @@ def addPlacement(request):
opening.tentative_no_of_offers = None
else:
raise ValueError('Tentative No Of Offers must be an integer')
# newly added
if data[EXPECTED_NO_OF_OFFERS].isdigit():
opening.expected_no_of_offers = int(data[EXPECTED_NO_OF_OFFERS])
elif data[EXPECTED_NO_OF_OFFERS] == 'null':
opening.expected_no_of_offers = None
opening.other_requirements = data[OTHER_REQUIREMENTS]
# newly added
if data[NUMBER_OF_EMPLOYEES].isdigit():
opening.number_of_employees = int(data[NUMBER_OF_EMPLOYEES])
elif data[NUMBER_OF_EMPLOYEES] == 'null':
opening.number_of_employees = None
opening.save()
@ -233,20 +286,19 @@ def addPlacement(request):
except ValueError as e:
store_all_files(request)
exception_email(data)
logger.warning("ValueError in addPlacement: " + str(e))
logger.warning(traceback.format_exc())
return Response({'action': "Add Placement", 'message': str(e)},
status=status.HTTP_400_BAD_REQUEST)
except:
except Exception as e:
store_all_files(request)
exception_email(data)
logger.warning("Add New Placement: " + str(sys.exc_info()))
logger.warning("Add New Placement: " + str(e))
logger.warning(traceback.format_exc())
return Response({'action': "Add Placement", 'message': "Something went wrong"},
return Response({'action': "Add Placement", 'message': "Something went wrong: " + str(e)},
status=status.HTTP_400_BAD_REQUEST)
@api_view(['POST'])
@precheck([TOKEN])
def verifyEmail(request):
@ -347,12 +399,13 @@ def autoFillInf(request):
@precheck([COMPANY_NAME, WEBSITE, IS_COMPANY_DETAILS_PDF, COMPANY_DETAILS, ADDRESS,
CITY, STATE, COUNTRY, PINCODE, COMPANY_TYPE, NATURE_OF_BUSINESS, IS_DESCRIPTION_PDF,
DESIGNATION, INTERNSHIP_LOCATION, DESCRIPTION, SEASON, START_DATE, END_DATE, WORK_TYPE,
ALLOWED_BRANCH, SOPHOMORES_ELIIGIBLE, RS_ELIGIBLE, NUM_OFFERS, IS_STIPEND_DETAILS_PDF, STIPEND,
ALLOWED_BRANCH, ELIGIBLESTUDENTS, NUM_OFFERS, IS_STIPEND_DETAILS_PDF, STIPEND,
FACILITIES, OTHER_FACILITIES, SELECTION_PROCEDURE_ROUNDS, SELECTION_PROCEDURE_DETAILS, IS_SELECTION_PROCEDURE_DETAILS_PDF,
SELECTION_PROCEDURE_DETAILS, OTHER_REQUIREMENTS,
CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, RECAPTCHA_VALUE])
CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, RECAPTCHA_VALUE ,ESTABLISHMENT_DATE,PWD_ELIGIBLE,BACKLOG_ELIGIBLE,PSYCHOMETRIC_TEST,MEDICAL_TEST,CPI,EXPECTED_NO_OF_OFFERS,NUMBER_OF_EMPLOYEES,COMPANY_TURNOVER])
def addInternship(request):
logger.info("INF filled by " + str(request.data['email']))
logger.info(request.data)
try:
data = request.data
files = request.FILES
@ -410,18 +463,25 @@ def addInternship(request):
raise ValueError('Season must be a subset of ' + str(SEASONS))
internship.interning_period_from = datetime.datetime.strptime(data[START_DATE], '%d-%m-%Y').date()
internship.interning_period_to = datetime.datetime.strptime(data[END_DATE], '%d-%m-%Y').date()
establishment_date_str = data.get('ESTABLISHMENT_DATE', '')
if establishment_date_str:
try:
internship.establishment_date = datetime.datetime.strptime(establishment_date_str, '%d-%m-%Y').date()
except ValueError:
internship.establishment_date = None
else:
internship.establishment_date = None
if data[WORK_TYPE] == 'Work from home':
internship.is_work_from_home = True
else:
internship.is_work_from_home = False
if data[ALLOWED_BATCH] is None or json.loads(data[ALLOWED_BATCH]) == "":
raise ValueError('Allowed Branch cannot be empty')
elif set(json.loads(data[ALLOWED_BATCH])).issubset(BATCHES):
if ALLOWED_BATCH in data and (data[ALLOWED_BATCH] is None or json.loads(data[ALLOWED_BATCH]) == ""):
raise ValueError('Allowed Batches cannot be empty')
elif ALLOWED_BATCH in data and set(json.loads(data[ALLOWED_BATCH])).issubset(BATCHES):
internship.allowed_batch = json.loads(data[ALLOWED_BATCH])
else:
raise ValueError('Allowed Batch must be a subset of ' + str(BATCHES))
internship.allowed_batch = ['2021']
if data[ALLOWED_BRANCH] is None or json.loads(data[ALLOWED_BRANCH]) == "":
raise ValueError('Allowed Branch cannot be empty')
@ -430,14 +490,35 @@ def addInternship(request):
else:
raise ValueError('Allowed Branch must be a subset of ' + str(BRANCHES))
if data[SOPHOMORES_ELIIGIBLE] == 'Yes':
internship.sophomore_eligible = True
# if data[SOPHOMORES_ELIIGIBLE] == 'Yes':
# internship.sophomore_eligible = True
# else:
# internship.sophomore_eligible = False
if data[ELIGIBLESTUDENTS] is None:
raise ValueError('Eligible Students cannot be empty')
elif set(json.loads(data[ELIGIBLESTUDENTS])).issubset(ELIGIBLE):
internship.eligiblestudents = json.loads(data[ELIGIBLESTUDENTS])
else:
internship.sophomore_eligible = False
if data[RS_ELIGIBLE] == 'Yes':
internship.rs_eligible = True
raise ValueError('Allowed Branch must be a subset of ' + str(ELIGIBLE))
if data[PWD_ELIGIBLE] == 'Yes':
internship.pwd_eligible = True
else:
internship.rs_eligible = False
internship.pwd_eligible = False
if data[BACKLOG_ELIGIBLE] == 'Yes':
internship.backlog_eligible = True
else:
internship.backlog_eligible = False
if data[PSYCHOMETRIC_TEST] == 'Yes':
internship.psychometric_test = True
else:
internship.psychometric_test = False
if data[MEDICAL_TEST] == 'Yes':
internship.medical_test = True
else:
internship.medical_test = False
internship.cpi_eligible = data[CPI]
if data[NUM_OFFERS].isdigit():
internship.tentative_no_of_offers = int(data[NUM_OFFERS])
else:
@ -459,6 +540,26 @@ def addInternship(request):
internship.stipend = int(data[STIPEND])
else:
raise ValueError('Stipend must be an integer')
# Newly added
if data[COMPANY_TURNOVER].isdigit():
internship.company_turnover = int(data[COMPANY_TURNOVER])
elif data[COMPANY_TURNOVER] is None or data[COMPANY_TURNOVER] == '':
internship.company_turnover = None
else:
# Handle the case where the data is not a valid number or None/empty
# You can raise an error, set a default value, or log a warning
internship.company_turnover = None # Or some default value or error handling
# newly added
if data[EXPECTED_NO_OF_OFFERS].isdigit():
internship.expected_no_of_offers = int(data[EXPECTED_NO_OF_OFFERS])
elif data[EXPECTED_NO_OF_OFFERS] == 'null':
internship.expected_no_of_offers = None
internship.other_requirements = data[OTHER_REQUIREMENTS]
# newly added
if data[NUMBER_OF_EMPLOYEES].isdigit():
internship.number_of_employees = int(data[NUMBER_OF_EMPLOYEES])
elif data[NUMBER_OF_EMPLOYEES] == 'null':
internship.number_of_employees = None
if data[FACILITIES] != "" :
if json.loads(data[FACILITIES]) == "":
internship.facilities_provided = []
@ -523,15 +624,15 @@ def addInternship(request):
status=status.HTTP_200_OK)
except ValueError as e:
store_all_files(request)
# exception_email(data)
logger.warning("ValueError in addInternship: " + str(e))
logger.warning(traceback.format_exc())
return Response({'action': "Add Internship", 'message': str(e)},
status=status.HTTP_400_BAD_REQUEST)
except:
except Exception as e:
store_all_files(request)
# exception_email(data)
logger.warning("Add New Internship: " + str(sys.exc_info()))
logger.warning("Add New Internship: " + str(e))
logger.warning(traceback.format_exc())
return Response({'action': "Add Internship", 'message': "Something went wrong"},
return Response({'action': "Add Internship", 'message': "Something went wrong: " + str(e)},
status=status.HTTP_400_BAD_REQUEST)

View File

@ -10,7 +10,14 @@ BRANCH_CHOICES = [
['EP', 'EP'],
['CIVIL', 'CIVIL'],
['CHEMICAL', 'CHEMICAL'],
['BSMS', 'BSMS'],
['MNC','MNC']
]
ELIGIBLE_CHOICES = [
["Btech", "Btech"],
["MS", "MS"],
["MTech", "MTech"],
["PHD", "PHD"],
["BSMS", "BSMS"],
]
BRANCHES = [
"CSE",
@ -19,6 +26,13 @@ BRANCHES = [
"EP",
"CIVIL",
"CHEMICAL",
"MNC",
]
ELIGIBLE =[
"Btech",
"MS",
"MTech",
"PHD",
"BSMS",
]
BATCHES = [ #change it accordingly
@ -28,6 +42,7 @@ BATCHES = [ #change it accordingly
"2020",
]
BATCH_CHOICES = [
["2023","2023"],
["2022", "2022"],
["2021", "2021"],
["2020", "2020"],
@ -52,7 +67,8 @@ TIERS = [
['7', 'Tier 7'],
['8', 'Open Tier'],
]
bTech = 'Btech'
# not being used anywhere
DEGREE_CHOICES = [
['bTech', 'B.Tech'],
['ms/phd', 'MS/ PhD'],
@ -65,13 +81,15 @@ TOTAL_BATCHES = 6 # Total No of Batches
CDC_REPS_EMAILS = [
"cdc@iitdh.ac.in",
"cdcfic@iitdh.ac.in",
"priyanka.naga@iitdh.ac.in",
"vandana@iitdh.ac.in",
"sairam@iitdh.ac.in",
"satyapriya.gupta@iitdh.ac.in",
"dhriti.ghosh@iitdh.ac.in",
"suvamay.jana@iitdh.ac.in",
"ramesh.nayaka@iitdh.ac.in"
"ramesh.nayaka@iitdh.ac.in",
"210010003@iitdh.ac.in",
"210010046@iitdh.ac.in",
"210030035@iitdh.ac.in",
]
CDC_REPS_EMAILS_FOR_ISSUE=[ #add reps emails
"cdc.support@iitdh.ac.in",
@ -89,6 +107,7 @@ PLACEMENT_OPENING_URL = "https://cdc.iitdh.ac.in/portal/student/dashboard/placem
LINK_TO_STORAGE_COMPANY_ATTACHMENT = "https://cdc.iitdh.ac.in/storage/Company_Attachments/"
LINK_TO_STORAGE_RESUME = "https://cdc.iitdh.ac.in/storage/Resumes/"
LINK_TO_APPLICATIONS_CSV = "https://cdc.iitdh.ac.in/storage/Application_CSV/"
LINK_TO_RESUMES_ZIP = "https://cdc.iitdh.ac.in/storage/Resume_Zips/"
LINK_TO_EMAIl_VERIFICATION_API = "https://cdc.iitdh.ac.in/portal/company/verifyEmail?token={token}"
PDF_FILES_SERVING_ENDPOINT = 'https://cdc.iitdh.ac.in/storage/Company_Attachments/' # TODO: Change this to actual URL
@ -104,7 +123,7 @@ SERVICE= 'service'
COMPANY = 'company'
TIER = 'tier'
# To be Configured Properly
FOURTH_YEAR = '2020'
FOURTH_YEAR = '2021'
MAX_OFFERS_PER_STUDENT = 2
MAX_RESUMES_PER_STUDENT = 3
EMAIL_VERIFICATION_TOKEN_TTL = 48 # in hours
@ -116,6 +135,7 @@ JNF_SMALLTEXT_MAX_CHARACTER_COUNT = 50
STORAGE_DESTINATION_RESUMES = "./Storage/Resumes/"
STORAGE_DESTINATION_COMPANY_ATTACHMENTS = './Storage/Company_Attachments/'
STORAGE_DESTINATION_APPLICATION_CSV = './Storage/Application_CSV/'
STORAGE_DESTINATION_RESUME_ZIP = './Storage/Resume_Zips/'
TOKEN = 'token'
RESUME_FILE_NAME = 'resume_file_name'
@ -155,6 +175,7 @@ IS_DESCRIPTION_PDF = 'is_description_pdf'
OPENING_TYPE = 'opening_type'
JOB_LOCATION = 'job_location'
COMPENSATION_CTC = 'compensation_ctc'
COMPANY_TURNOVER = 'company_turnover' # newly added field
COMPENSATION_GROSS = 'compensation_gross'
COMPENSATION_TAKE_HOME = 'compensation_take_home'
COMPENSATION_BONUS = 'compensation_bonus'
@ -164,7 +185,13 @@ COMPENSATION_DETAILS_PDF_NAMES = 'compensation_details_pdf_names'
IS_COMPENSATION_DETAILS_PDF = 'is_compensation_details_pdf'
ALLOWED_BATCH = 'allowed_batch'
ALLOWED_BRANCH = 'allowed_branch'
RS_ELIGIBLE = 'rs_eligible'
# RS_ELIGIBLE = 'rs_eligible' removed
ELIGIBLESTUDENTS= 'eligiblestudents'# newly adde field
PWD_ELIGIBLE = 'pwd_eligible' # newly added field
BACKLOG_ELIGIBLE = 'backlog_eligible' # newly added field
PSYCHOMETRIC_TEST = 'pyschometric_test' # newly added field
MEDICAL_TEST = 'medical_test' # newly added field
CPI = 'cpi' # newly added field
BOND_DETAILS = 'bond_details'
SELECTION_PROCEDURE_ROUNDS = 'selection_procedure_rounds'
SELECTION_PROCEDURE_DETAILS = 'selection_procedure_details'
@ -172,7 +199,10 @@ SELECTION_PROCEDURE_DETAILS_PDF = 'selection_procedure_details_pdf'
SELECTION_PROCEDURE_DETAILS_PDF_NAMES = 'selection_procedure_details_pdf_names'
IS_SELECTION_PROCEDURE_DETAILS_PDF = 'is_selection_procedure_details_pdf'
TENTATIVE_DATE_OF_JOINING = 'tentative_date_of_joining'
ESTABLISHMENT_DATE = 'establishment_date' # newly added field
TENTATIVE_NO_OF_OFFERS = 'tentative_no_of_offers'
EXPECTED_NO_OF_OFFERS = 'expected_no_of_offers' # newly added field
NUMBER_OF_EMPLOYEES = 'number_of_employees' # newly added field
OTHER_REQUIREMENTS = 'other_requirements'
DEADLINE_DATETIME = 'deadline_datetime'
OFFER_ACCEPTED = 'offer_accepted'

63
CDC_Backend/APIs/cron.py Normal file
View File

@ -0,0 +1,63 @@
from .models import *
from .utils import *
import shutil
import logging
import traceback
logger=logging.getLogger('db')
def clean_up_tests():
# Delete all the test internships and placements created
try:
internships= Internship.objects.filter(company_name="test company",email="notifications@cdc-iitdh.tech")
hits_internship=len(internships)
for internship in internships:
#count number of file
files = os.listdir(STORAGE_DESTINATION_COMPANY_ATTACHMENTS+internship.id)
if len(files) == 4:
print("working fine")
else:
print("not working fine")
logger.error("files submitted in inf are not getting stored for test case"+internship.description)
#remove folder from the server
print("removing folder ",STORAGE_DESTINATION_COMPANY_ATTACHMENTS+internship.id)
shutil.rmtree(STORAGE_DESTINATION_COMPANY_ATTACHMENTS+internship.id)
internship.delete()
placements= Placement.objects.filter(company_name="test company",email="notifications@cdc-iitdh.tech")
hits_placement=len(placements)
for placement in placements:
#count number of file
files = os.listdir(STORAGE_DESTINATION_COMPANY_ATTACHMENTS+placement.id)
if len(files) == 4:
print("working fine")
else:
print("not working fine")
logger.error("files submitted in inf are not getting stored for test case"+placement.description)
#remove folder from the server
print("removing folder ",STORAGE_DESTINATION_COMPANY_ATTACHMENTS+internship.id)
shutil.rmtree(STORAGE_DESTINATION_COMPANY_ATTACHMENTS+placement.id)
placement.delete()
if hits_internship >= 6:
print("all hits are working fine")
else:
print("some hits are not working fine")
logger.error("some test hits are not working fine for internship")
if hits_placement >= 6:
print("all hits are working fine")
else:
print("some hits are not working fine")
logger.error("some test hits are not working fine for placement")
except :
logger.error("error in clean up function")
logger.error(traceback.format_exc())

View File

@ -26,15 +26,17 @@ class Student(models.Model):
roll_no = models.CharField(blank=False, max_length=15, unique=True)
name = models.CharField(blank=False, max_length=JNF_TEXT_MAX_CHARACTER_COUNT)
batch = models.CharField(max_length=10, choices=BATCH_CHOICES, blank=False)
branch = models.CharField(choices=BRANCH_CHOICES, blank=False, max_length=10)
branch = models.CharField(choices=BRANCH_CHOICES, blank=True,default=None, null=True, max_length=10)
phone_number = models.PositiveBigIntegerField(blank=True, default=None, null=True)
resumes = ArrayField(models.CharField(null=True, default=None, max_length=JNF_TEXT_MAX_CHARACTER_COUNT), size=10,
default=list, blank=True)
cpi = models.DecimalField(decimal_places=2, max_digits=4)
can_apply = models.BooleanField(default=True, verbose_name='Registered')
can_apply_internship = models.BooleanField(default=True, verbose_name='Internship Registered') #added for internship
can_apply_internship = models.BooleanField(default=True, verbose_name='Internship Registered')
changed_by = models.ForeignKey(User, blank=True, on_delete=models.RESTRICT, default=None, null=True)
degree = models.CharField(choices=DEGREE_CHOICES, blank=False, max_length=10, default=DEGREE_CHOICES[0][0])
degree = models.CharField(choices=ELIGIBLE_CHOICES, blank=False, max_length=10, default=ELIGIBLE_CHOICES[0][0]) # should be ELIGIBLE_CHOICES
isPwd = models.BooleanField(default=False, verbose_name='Person with Disability')
isBacklog = models.BooleanField(default=False, verbose_name='Has Backlog')
history = HistoricalRecords(user_model=User)
def __str__(self):
@ -90,13 +92,14 @@ class Placement(models.Model):
default=list, blank=True)
is_company_details_pdf = models.BooleanField(blank=False, default=False)
contact_person_name = models.CharField(blank=False, max_length=JNF_TEXT_MAX_CHARACTER_COUNT)
phone_number = models.PositiveBigIntegerField(blank=False)
phone_number = models.CharField(max_length=15, blank=False)
email = models.CharField(blank=False, max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, default="")
city = models.CharField(blank=False, max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, default="")
state = models.CharField(blank=False, max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, default="")
country = models.CharField(blank=False, max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, default="")
pin_code = models.IntegerField(blank=False, default=None, null=True)
city_type = models.CharField(blank=False, max_length=15, choices=OFFER_CITY_TYPE)
cpi_eligible = models.DecimalField(decimal_places=2, default=0.00, max_digits=4) #newly added field
# Job Details
designation = models.CharField(blank=False, max_length=JNF_TEXT_MAX_CHARACTER_COUNT, default=None, null=True)
description = models.CharField(blank=False, max_length=JNF_TEXTAREA_MAX_CHARACTER_COUNT, default=None, null=True)
@ -106,6 +109,7 @@ class Placement(models.Model):
blank=True)
is_description_pdf = models.BooleanField(blank=False, default=False)
compensation_CTC = models.IntegerField(blank=False, default=None, null=True) # Job - Per Year
company_turnover = models.IntegerField(blank=True, default=None, null=True) # newly added field
compensation_gross = models.IntegerField(blank=False, default=None, null=True)
compensation_take_home = models.IntegerField(blank=False, default=None, null=True)
compensation_bonus = models.IntegerField(blank=True, default=None, null=True)
@ -124,6 +128,7 @@ class Placement(models.Model):
is_selection_procedure_details_pdf = models.BooleanField(blank=False, default=False)
tier = models.CharField(blank=False, choices=TIERS, max_length=10, default=None, null=True)
tentative_date_of_joining = models.DateField(blank=False, verbose_name="Tentative Date", default=timezone.now)
establishment_date = models.DateField(blank=True, default=None, null=True) # newly added field
allowed_batch = ArrayField(
models.CharField(max_length=10, choices=BATCH_CHOICES),
size=TOTAL_BATCHES,
@ -136,7 +141,17 @@ class Placement(models.Model):
default=list
)
tentative_no_of_offers = models.IntegerField(blank=False, default=None, null=True)
rs_eligible = models.BooleanField(blank=False, default=False)
expected_no_of_offers = models.IntegerField(blank=False , default=None , null=True) # newly added
number_of_employees = models.IntegerField(blank=True, default=None, null=True) # newly added field
eligiblestudents = ArrayField(
models.CharField(choices=ELIGIBLE_CHOICES, blank=False, max_length=10),
size=10,
default=list
) #newly added field
pwd_eligible = models.BooleanField(blank=True, default=False) #newly added field
backlog_eligible = models.BooleanField(blank=True, default=False) #newly added field
psychometric_test = models.BooleanField(blank=True, default=False) #newly added field
medical_test = models.BooleanField(blank=True, default=False) #newly added field
other_requirements = models.CharField(blank=True, max_length=JNF_TEXTAREA_MAX_CHARACTER_COUNT, default="")
additional_info = ArrayField(models.CharField(blank=True, max_length=JNF_TEXTMEDIUM_MAX_CHARACTER_COUNT), size=15,
default=list, blank=True)
@ -324,9 +339,21 @@ class Internship(models.Model):
size=TOTAL_BATCHES,
default=list
)
sophomore_eligible = models.BooleanField(blank=False, default=False)
rs_eligible = models.BooleanField(blank=False, default=False)
eligiblestudents = ArrayField(
models.CharField(choices=ELIGIBLE_CHOICES, blank=False, max_length=10),
size=10,
default=list
)
tentative_no_of_offers = models.IntegerField(blank=False, default=None, null=True)
company_turnover = models.IntegerField(blank=True, default=None, null=True) # newly added field
establishment_date = models.DateField(blank=True, default=None, null=True) # newly added field
expected_no_of_offers = models.IntegerField(blank=True , default=None , null=True) # newly added
number_of_employees = models.IntegerField(blank=True, default=None, null=True) # newly added field
pwd_eligible = models.BooleanField(blank=True, default=False) #newly added field
backlog_eligible = models.BooleanField(blank=True, default=False) #newly added field
psychometric_test = models.BooleanField(blank=True, default=False) #newly added field
medical_test = models.BooleanField(blank=True, default=False) #newly added field
cpi_eligible = models.DecimalField(decimal_places=2, default=0.00, max_digits=4) #newly added field
is_stipend_description_pdf = models.BooleanField(blank=False, default=False)
stipend_description_pdf_names=ArrayField(
models.CharField(null=True, default=None, max_length=JNF_TEXT_MAX_CHARACTER_COUNT), size=5, default=list,
@ -356,7 +383,7 @@ class Internship(models.Model):
is_selection_procedure_details_pdf = models.BooleanField(blank=False, default=False)
#contact details of company person
contact_person_name = models.CharField(blank=False, max_length=JNF_TEXT_MAX_CHARACTER_COUNT)
phone_number = models.PositiveBigIntegerField(blank=False)
phone_number = models.CharField(max_length=15, blank=False)
email = models.EmailField(blank=False)
# contact_person_designation = models.CharField(blank=False, max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, default="")
# telephone_number = models.PositiveBigIntegerField(blank=True, default=None, null=True)

View File

@ -1,4 +1,6 @@
from datetime import datetime as dt
from rest_framework.decorators import api_view
from django.db.models import Q
from .serializers import *
from .utils import *
@ -48,7 +50,7 @@ def refresh(request):
@isAuthorized(allowed_users=[STUDENT])
def studentProfile(request, id, email, user_type):
try:
#print(id)
studentDetails = get_object_or_404(Student, id=id)
data = StudentSerializer(studentDetails).data
@ -101,20 +103,40 @@ def getDashboard(request, id, email, user_type):
try:
studentDetails = get_object_or_404(Student, id=id)
placements = Placement.objects.filter(allowed_batch__contains=[studentDetails.batch],
filters = Q(
allowed_branch__contains=[studentDetails.branch],
deadline_datetime__gte=datetime.datetime.now(),
offer_accepted=True, email_verified=True).order_by('deadline_datetime')
eligiblestudents__contains=[studentDetails.degree],
deadline_datetime__gte=dt.now(),
offer_accepted=True,
email_verified=True
)
if studentDetails.degree == 'Btech':
filters &= Q(allowed_batch__contains=[studentDetails.batch])
placements = Placement.objects.filter(filters).order_by('deadline_datetime')
filtered_placements = placement_eligibility_filters(studentDetails, placements)
placementsdata = PlacementSerializerForStudent(filtered_placements, many=True).data
placementApplications = PlacementApplication.objects.filter(student_id=id).order_by('-updated_at')
placementApplications = PlacementApplicationSerializer(placementApplications, many=True).data
internships = Internship.objects.filter(allowed_batch__contains=[studentDetails.batch],
if studentDetails.degree == 'BSMS': # for BSMS branch is not considered
internships = Internship.objects.filter(
allowed_batch__contains=[studentDetails.batch],
deadline_datetime__gte=datetime.datetime.now(),
offer_accepted=True,
email_verified=True
).order_by('deadline_datetime')
else:
internships = Internship.objects.filter(
allowed_batch__contains=[studentDetails.batch],
allowed_branch__contains=[studentDetails.branch],
deadline_datetime__gte=datetime.datetime.now(),
offer_accepted=True, email_verified=True).order_by('deadline_datetime')
offer_accepted=True,
email_verified=True
).order_by('deadline_datetime')
filtered_internships = internship_eligibility_filters(studentDetails, internships)
internshipsdata = InternshipSerializerForStudent(filtered_internships, many=True).data

View File

@ -720,27 +720,8 @@ class AdminView(APITestCase):
self.assertEqual(response.data['message'], 'Offer Accepted Updated')
self.assertEqual(Placement.objects.get(
id=self.placement1.id).offer_accepted, True)
self.assertEqual(Placement.objects.get(
id=self.placement1.id).deadline_datetime, timezone.localtime(timezone.now()).replace(hour=0, minute=0, second=0, microsecond=0)+timezone.timedelta(days=2))
def test_offerAccepted_withDeadline(self):
url = reverse("Update Offer Accepted")
data = {
"opening_type": "Placement",
"opening_id": self.placement3.id,
"offer_accepted": "true",
"deadline_datetime": (timezone.localtime(timezone.now()).replace(
hour=0, minute=0, second=0, microsecond=0)+timezone.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S %z')
}
self.admin.user_type = ["s_admin"]
self.admin.save()
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.token)
response = self.client.post(url, data=json.dumps(
data), content_type='application/json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Placement.objects.get(
id=self.placement3.id).deadline_datetime, timezone.localtime(timezone.now()).replace(hour=0, minute=0, second=0, microsecond=0)+timezone.timedelta(days=1))
self.assertEqual(response.data['message'], 'Offer Accepted Updated')
def test_offerAccepted_wrongOpening(self):
url = reverse("Update Offer Accepted")
@ -1199,28 +1180,7 @@ class AdminView(APITestCase):
self.assertEqual(Internship.objects.get(
id=self.internship1.id).offer_accepted, True)
self.internship1.refresh_from_db()
self.assertEqual(self.internship1.deadline_datetime, timezone.localtime(timezone.now()).replace(
hour=0, minute=0, second=0, microsecond=0)+timezone.timedelta(days=2))
def test_updateofferAccepted_withDeadline_internship(self):
url = reverse("Update Offer Accepted")
data = {
"opening_type": "Internship",
"opening_id": self.internship3.id,
"offer_accepted": "true",
"deadline_datetime": (timezone.localtime(timezone.now()).replace(
hour=0, minute=0, second=0, microsecond=0)+timezone.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S %z')
}
self.admin.user_type = ["s_admin"]
self.admin.save()
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.token)
response = self.client.post(url, data=json.dumps(
data), content_type='application/json')
self.internship3.refresh_from_db()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Internship.objects.get(
id=self.internship3.id).deadline_datetime, timezone.localtime(timezone.now()).replace(hour=0, minute=0, second=0, microsecond=0)+timezone.timedelta(days=1))
self.assertEqual(response.data['message'], 'Offer Accepted Updated')
def test_updateofferAccepted_wrongOpening_internship(self):
url = reverse("Update Offer Accepted")

View File

@ -81,22 +81,22 @@ def precheck(required_data=None):
request_data = request.data
if not len(request_data):
request_data = request.POST
if len(request_data):
if request_data and len(request_data):
for i in required_data:
# print(i)
if i not in request_data:
return Response({'action': "Pre check", 'message': str(i) + " Not Found"},
status=status.HTTP_400_BAD_REQUEST)
else:
return Response({'action': "Pre check", 'message': "Message Data not Found"},
status=status.HTTP_400_BAD_REQUEST)
# print("Pre check: " + str(request_data))
return view_func(request, *args, **kwargs)
except:
# print what exception is
print(traceback.format_exc())
logger.warning("Pre check: " + str(sys.exc_info()))
return Response({'action': "Pre check", 'message': "Something went wrong"},
except Exception as e:
# Log the full traceback for debugging purposes
logger.error("Pre check error: %s", traceback.format_exc())
return Response({'action': "Pre check", 'message': "Something went wrong: " + str(e)},
status=status.HTTP_400_BAD_REQUEST)
return wrapper_func
@ -238,27 +238,38 @@ def PlacementApplicationConditions(student, placement):
PPO_PSU = [i for i in PPO if i.tier == 'psu']
# find length of PPO
if len(selected_companies) + len(PPO) >= MAX_OFFERS_PER_STUDENT:
raise PermissionError("Max Applications Reached for the Season")
raise PermissionError("Max Applications Reached for the Season1")
if len(selected_companies_PSU) > 0:
raise PermissionError('Selected for PSU Can\'t apply anymore')
raise PermissionError('Selected for PSU Can\'t apply anymore2')
if len(PPO_PSU) > 0:
raise PermissionError('Selected for PSU Can\'t apply anymore')
raise PermissionError('Selected for PSU Can\'t apply anymore3')
if placement.tier == 'psu':
return True, "Conditions Satisfied"
for i in selected_companies:
if int(i.placement.tier) < int(placement.tier):
return False, "Can't apply for this tier"
if 1.5 * i.placement.compensation_CTC > placement.compensation_CTC:
return False, "Can't apply for this Placement, 1.5 times CTC condition not satisfied"
for i in PPO:
if int(i.tier) < int(placement.tier):
return False, "Can't apply for this tier"
if student.degree != 'bTech' and not placement.rs_eligible:
raise PermissionError("Can't apply for this placement")
if 1.5 * i.compensation > placement.compensation_CTC:
return False, "Can't apply for this Placement, 1.5 times CTC condition not satisfied"
if student.degree not in placement.eligiblestudents:
raise PermissionError("Can't apply for this placement4")
if student.degree == bTech and student.batch not in placement.allowed_batch:
raise PermissionError("Can't apply for this placement5")
if student.branch not in placement.allowed_branch:
raise PermissionError("Can't apply for this placement6")
if student.can_apply == False:
raise PermissionError("Can't apply for this placement7")
if student.isBacklog == True and placement.backlog_eligible == False:
raise PermissionError("Can't apply for this placement8")
if student.isPwd == True and placement.pwd_eligible == False:
raise PermissionError("Can't apply for this placement9")
if placement.cpi_eligible > student.cpi:
raise PermissionError("Can't apply for this placement10")
return True, "Conditions Satisfied"
@ -272,8 +283,22 @@ def InternshipApplicationConditions(student, internship):
try:
selected_companies = InternshipApplication.objects.filter(student=student, selected=True)
if len(selected_companies) >= 1:
# print("selected companies > 1")
return False, "You have already secured a Internship"
if student.degree not in internship.eligiblestudents:
raise PermissionError("Can't apply for this Internship")
if student.degree != 'BSMS' and student.branch not in internship.allowed_branch: # for BSMS branch is not considered
raise PermissionError("Can't apply for this Internship")
if student.degree == bTech and student.batch not in internship.allowed_batch:
raise PermissionError("Can't apply for this Internship")
if student.can_apply_internship == False:
raise PermissionError("Can't apply for this Internship")
if student.isBacklog == True and internship.backlog_eligible == False:
raise PermissionError("Can't apply for this Internship")
if student.isPwd == True and internship.pwd_eligible == False:
raise PermissionError("Can't apply for this Internship")
if internship.cpi_eligible > student.cpi:
raise PermissionError("Can't apply for this Internship")
return True, "Conditions Satisfied"
except PermissionError as e:
@ -406,6 +431,8 @@ def placement_eligibility_filters(student, placements):
except:
logger.warning("Utils - placement_eligibility_filters: " + str(sys.exc_info()))
return placements
def internship_eligibility_filters(student, internships):
try:
filtered_internships = []
@ -423,7 +450,6 @@ def internship_eligibility_filters(student, internships):
@background_task.background(schedule=2)
def send_opening_notifications(opening_id, opening_type=PLACEMENT):
try:
# print(opening_id, opening_type)
if opening_type == PLACEMENT:
opening = get_object_or_404(Placement, id=opening_id)
else:
@ -457,38 +483,48 @@ def send_opening_notifications(opening_id, opening_type=PLACEMENT):
logger.warning('Utils - send_opening_notifications: ' + str(sys.exc_info()))
return False
def get_eligible_emails(opening_id, opening_type=PLACEMENT):
def get_eligible_emails(opening_id, opening_type='PLACEMENT', send_all=False):
try:
# print(opening_id, opening_type)
if opening_type == PLACEMENT:
if opening_type == 'PLACEMENT':
opening = get_object_or_404(Placement, id=opening_id)
else:
opening = get_object_or_404(Internship, id=opening_id)
emails = []
students = Student.objects.all()
for student in students.iterator():
if student.branch in opening.allowed_branch:
if student.degree == 'bTech' or opening.rs_eligible is True:
if student.branch in opening.allowed_branch and student.degree in opening.eligiblestudents:
if student.degree == 'Btech' and student.batch in opening.allowed_batch:
if (isinstance(opening, Placement) and PlacementApplicationConditions(student, opening)[0]) or (
isinstance(opening, Internship) and InternshipApplicationConditions(student, opening)[0]):
try:
if (opening_type == 'PLACEMENT' and student.can_apply) or (
opening_type == 'INTERNSHIP' and student.can_apply_internship):
student_user = get_object_or_404(User, id=student.id)
# check if he applied
if opening_type == PLACEMENT:
# if send_all True send all students eligible for the opening
if send_all:
emails.append(student_user.email)
continue
# check if the student applied
if opening_type == 'PLACEMENT':
if PlacementApplication.objects.filter(student=student, placement=opening).exists():
continue
else:
if InternshipApplication.objects.filter(student=student, internship=opening).exists():
continue
emails.append(student_user.email)
except Exception as e:
logger.warning('Utils - send_opening_notifications: For Loop' + str(e))
return False, []
return True, emails
except:
logger.warning('Utils - send_opening_notifications: ' + str(sys.exc_info()))
except Exception as e:
logger.warning('Utils - send_opening_notifications: ' + str(e))
return False, []
def exception_email(opening):
opening = opening.dict()
data = {
@ -565,12 +601,13 @@ def send_email_for_opening(opening):
@background_task.background(schedule=2)
def send_opening_to_notifications_service(id,name,deadline,role):
def send_opening_to_notifications_service(id,name,deadline,role,opening_type=PLACEMENT):
data={
"id":id,
"company":name,
"deadline":deadline,
"role":role
"role":role,
"opening_type":opening_type
}
encoded=jwt.encode(data,os.environ.get("JWT_SECRET_KEY"),algorithm="HS256")
data_={

View File

@ -30,7 +30,7 @@ DEBUG = os.environ.get('DEBUG') == "True"
ALLOWED_HOSTS = ['cdc.iitdh.ac.in', 'localhost']
ADMINS = [ ('Karthik Mv', '200010030@iitdh.ac.in')]
ADMINS = [ ('Jaya Surya', '210020051@iitdh.ac.in')]
# Application definition
INSTALLED_APPS = [
@ -47,7 +47,8 @@ INSTALLED_APPS = [
'background_task',
'simple_history',
'import_export',
'django_extensions'
'django_extensions',
'django_crontab',
]
MIDDLEWARE = [
@ -142,10 +143,10 @@ DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static_url/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_url')
STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'static_url'),
)
CORS_ORIGIN_ALLOW_ALL = False
@ -203,3 +204,7 @@ LOGGING = {
}
# django_heroku.settings(locals())
CRONJOBS = [
('0 8,20 * * *', 'APIs.cron.clean_up_tests')
]

2
CDC_Backend/run_prod.sh Normal file → Executable file
View File

@ -1 +1 @@
gunicorn --certfile=/home/cdc/Desktop/1f9476e3959ebe60.crt --keyfile=/home/cdc/Desktop/star_iitdh_key.key --bind localhost:8000 CDC_Backend.wsgi --access-logfile access.log --error-logfile error.log --forwarded-allow-ips="cdc.iitdh.ac.in" &
gunicorn --certfile=/home/cdc/Desktop/1f9476e3959ebe60.crt --keyfile=/home/cdc/Desktop/star_iitdh_key.key --bind localhost:8000 CDC_Backend.wsgi --access-logfile access.log --error-logfile error.log --forwarded-allow-ips="cdc.iitdh.ac.in"

View File

@ -1,90 +1,196 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<html lang="en">
<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">
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="x-apple-disable-message-reformatting" />
<title>Email Template</title>
<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">
<link
href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap"
rel="stylesheet"
/>
<style>
table, td, div, h1, p {
font-family: 'Roboto', sans-serif;
body,
table,
td,
div,
p,
h1 {
font-family: "Roboto", sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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;">
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
We have received your {{opening_type}} Notification for {{ designation }}. Kindly verify your email by clicking <a
href="{{ one_time_link }}">here</a>.
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/Approved.png"
alt="verify Logo"
style="
width: 35%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h2 style="text-align: center">Verification Required</h2>
<p style="text-align: center">
We have received your
<strong>{{opening_type}}</strong> Notification for
<strong>{{designation}}</strong>. Please verify your email by
clicking the button below:
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
<p style="text-align: center">
<a
href="{{one_time_link}}"
style="
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 50px;
font-weight: 500;
"
>Verify Email</a
>
</p>
</td>
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</p>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -5,69 +5,188 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
#details_table tr:nth-child(even) {
background: #FFF
body, table, td, div, p, h1 {
font-family: 'Roboto', sans-serif;
}
#details_table tr:nth-child(odd) {
background: #bfe3f3
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
#details_table td {
padding: 10px;
width: 50%;
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header, .email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
#details_table {
border: #334878 1px solid;
width: 100%;
border-collapse: collapse;
width: 80%;
margin: auto;
margin: 20px auto;
font-size: 16px;
}
#details_table th, #details_table td {
padding: 10px;
border: 1px solid #dddddd;
text-align: left;
}
#details_table th {
background-color: #ff7350;
color: #ffffff;
}
#details_table tr:nth-child(even) {
background-color: #f2f2f2;
}
#details_table tr:nth-child(odd) {
background-color: #ffffff;
}
#details_table ul {
padding-left: 20px;
margin: 0;
}
#details_table a {
color: #334878;
text-decoration: none;
}
.social-icons img {
width: 24px;
height: 24px;
margin: 0 5px;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body, .email-footer {
padding: 20px !important;
}
}
</style>
<title>Document</title>
<title>Notification</title>
</head>
<body style="margin: 0;font-family: sans-serif;">
<body>
<header style="background-color: #334878;"><img style="height: 3cm; margin: auto; display: block; padding: 0.5cm;"
src='{{ imgpath }}' alt="cdc logo"></header>
<h1 style="text-align: center;"> {{type}} Notification Form Response</h1>
<div class="email-wrapper">
<div class="email-container">
<div class="email-header">
<img src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png" alt="CDC Logo" style="width: 35%; height: auto; display: block; margin: 0 auto;" />
</div>
<div class="inner-container">
<div class="email-body">
<img src="https://cdc.iitdh.ac.in/storage/Images/email_2058176.png" alt="Notification Logo" style="width: 20%; height: auto; display: block; margin: 0 auto;" />
<h2 style="text-align: center;">{{type}} Notification Form Response</h2>
<p style="text-align: center;">
<table id="details_table">
<thead>
<tr>
<th>Key</th>
<th>Value</th>
</tr>
</thead>
<tbody>
{% for key, value in data.items %}
<tr>
<td>
{{ key }}
</td>
<td>{{ key }}</td>
<td>
{% if 'list' in value.type %}
<ul>
{% for item in value.details %}
<li>
{% if 'link' in value.type and value.link %}
<a href="{{ value.link|add:item}}">{{ item|slice:"16:" }}</a>
<a href="{{ value.link|add:item }}" target="_blank">{{ item|slice:"16:" }}</a>
{% elif 'link' in value.type %}
<a href="{{ item }}">{{ item }}</a>
<a href="{{ item }}" target="_blank">{{ item }}</a>
{% else %}
{{ item }}
{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
{% if 'link' in value.type %}
<a href="{{ value.details }}">{{ value.details }}</a>
<a href="{{ value.details }}" target="_blank">{{ value.details }}</a>
{% else %}
{{ value }}
{% endif %}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<p style="margin-left: 10%;">In case of any descripency regarding above details, please contact <a
href="mailto:cdc@iitdh.ac.in">cdc@iitdh.ac.in</a>
In case of any discrepancy regarding the above details, please contact <a href="mailto:cdc@iitdh.ac.in">cdc@iitdh.ac.in</a>.
</p>
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555;">Follow us on:</p>
<div class="social-icons">
<a href="https://twitter.com/cdc_iitdh" style="margin-right: 10px; color: #eff7ff">
<img src="https://cdc.iitdh.ac.in/storage/Images/twitter.png" alt="Twitter">
</a>
<a href="https://www.instagram.com/cdc.iitdh/?hl=en" style="margin-right: 10px; color: #eff7ff">
<img src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png" alt="Instagram">
</a>
<a href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in" style="margin-right: 10px; color: #eff7ff">
<img src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png" alt="LinkedIn">
</a>
</div>
<p style="color: #555555;">&copy; 2024 CDC, all rights reserved</p>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,9 +1,9 @@
<!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">
<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>
@ -14,122 +14,200 @@
</xml>
</noscript>
<![endif]-->
<link rel="preconnect" href="https://fonts.gstatic.com">
<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">
<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;
body,
table,
td,
div,
h1,
p {
font-family: "Roboto", sans-serif;
}
#details_table tr:nth-child(even) {
background: #FFF
body {
margin: 0;
padding: 0;
}
#details_table tr:nth-child(odd) {
background: #f9f9f9
.email-wrapper {
width: 100%;
background-color: #ffffff;
padding: 0;
margin: 0;
}
#details_table td {
padding: 10px
.email-container {
max-width: 600px;
width: 100%;
margin: 0 auto;
border: 8 px;
border-collapse: collapse;
background-color: #eff7ff;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
}
.email-header img {
width: 200px;
height: auto;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px 42px 30px;
}
.inner-container .email-body h2 {
font-size: 24px;
margin: 0 0 20px 0;
color: #153643;
}
.inner-container .email-body p {
margin: 0 0 12px 0;
font-size: 16px;
line-height: 24px;
color: #153643;
}
#details_table {
border: #334878 1px solid;
width: 100%;
border: 1px solid #334878;
border-collapse: collapse;
}
#details_table td {
padding: 10px;
color: #153643;
border: 1px solid #334878;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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;
">Thank You for filling the form</h1>
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
We have received your <b>{{ opening_type }}</b> notification for a
<b>{{ designation }}</b> offer at <b>
{{ company_name }}</b>.
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/Confirmed.png"
alt="verify Logo"
style="
width: 30%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h2 style="text-align: center">
Thank You For Filling The Form
</h2>
<p style="text-align: center">
We have received your <b>{{ opening_type }}</b> notification
for a <b>{{ designation }}</b> offer at
<b>{{ company_name }}</b>. We will keep you informed with the
updates. If you have any queries, please feel free to write to
<nobr><u>cdc@iitdh.ac.in</u></nobr
>.
</p>
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
We will keep you informed with the updates. If you have any queries, please
feel to
write to
<nobr><u>cdc@iitdh.ac.in</u></nobr>
</p>
<table id="details_table">
<!-- <table id="details_table">
{% for key, value in data.items %}
<tr>
<td>
{{ key }}
</td>
<td>{{ key }}</td>
<td>
{% if 'list' in value.type %}
<ul>
{% for item in value.details %}
<li>
{% if 'link' in value.type and value.link %}
<a href="{{ value.link|add:item}}">{{ item }}</a>
{% elif 'link' in value.type %}
<a href="{{ item }}">{{ item }}</a>
{% else %}
{{ item }}
{% endif %}
</li>
<li>{% if 'link' in value.type and value.link %}<a href="{{ value.link|add:item}}">{{ item }}</a>{% elif 'link' in value.type %}<a href="{{ item }}">{{ item }}</a>{% else %}{{ item }}{% endif %}</li>
{% endfor %}
</ul>
{% else %}
{% if 'link' in value.type %}
<a href="{{ value.details }}">{{ value.details }}</a>
{% else %}
{{ value }}
{% if 'link' in value.type %}<a href="{{ value.details }}">{{ value.details }}</a>{% else %}{{ value }}{% endif %}
{% endif %}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</td>
</tr>
</table> -->
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

View File

@ -18,70 +18,133 @@
<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 {
body, table, td, div, p, h1 {
font-family: 'Roboto', sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header, .email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body, .email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body class="email-wrapper">
<table role="presentation" class="email-container">
<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;
">{{ 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;">
<td>
<div class="email-header">
<img src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png" alt="CDC Logo" style="width: 35%; height: auto; display: block; margin: 0 auto;" />
</div>
<div class="inner-container">
<div class="email-body">
<img src="https://cdc.iitdh.ac.in/storage/Images/notification.png" alt="verify Logo" style="width: 30%; height: auto; display: block; margin: 0 auto;" />
<h2 style="text-align: center;">{{ opening_type }} Opportunity at {{ company_name }}</h2>
<p style="text-align: center;">
Greetings of the day. Hope you are fine and doing well !
</p>
<p style="text-indent: 4ch; margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
CDC is excited to announce that <b>{{ company_name }}</b> is interested in
recruiting <b>{{ designation }}</b> from IIT Dharwad.
More details can be found in the CDC Web Portal.
Interested students can apply before <b>{{ deadline }}</b> in the CDC-Web Portal</p>
<p style="text-align: center;">
<a
href="{{ link }}" style="display: inline-block; padding: 12px 24px; margin: 20px 0; font-size: 16px; color: #ffffff; background-color: #ff7350; text-decoration: none; border-radius: 50px; font-weight: 500;">CDC Web Portal</a>.
</p>
</div>
</div>
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
Interested students can apply before <b>{{ deadline }}</b> in the <a
href="{{ link }}">CDC-Web Portal</a>.
</p>
</td>
</tr>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555;">Follow us on:</p>
</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;">
&reg; CDC,IIT Dharwad,2022<br/>
</p>
</td>
<a href="https://twitter.com/cdc_iitdh" style="margin-right: 10px; color: #eff7ff">
<img src="https://cdc.iitdh.ac.in/storage/Images/twitter.png" alt="Twitter" style="width: 24px; height: 24px;">
</a>
<a href="https://www.instagram.com/cdc.iitdh/?hl=en" style="margin-right: 10px; color: #eff7ff;">
<img src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png" alt="Instagram" style="width: 24px; height: 24px;">
</a>
<a href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in">
<img src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png" alt="LinkedIn" style="width: 24px; height: 24px;">
</a>
<p style="color: #555555;">copy right &copy; 2024 CDC, all rights reserved</p>
</div>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -1,9 +1,9 @@
<!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">
<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>
@ -14,104 +14,193 @@
</xml>
</noscript>
<![endif]-->
<link rel="preconnect" href="https://fonts.gstatic.com">
<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">
<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;
body,
table,
td,
div,
p,
h1 {
font-family: "Roboto", sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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 %}
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">
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/tracking.png"
alt="verify Logo"
style="
width: 35%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h1 style="text-align: center">Hello, Folks</h1>
<p style="text-align: center">
We have received a issue regarding a
<b>{{ application_type }}</b> opening at
<b> {{ company_name }}</b> From {{name}}. {% if
additional_info %} We received these additional details
<br />
<table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
border-radius:15px; background-color: #e0e3ee">
<!-- <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>
<!-- <tr>
<td style="padding:8px 10px;color:#153643; ">{{ i }}:</td>
<td style="padding:8px 10px;color:#153643;">{{ j }}</td>
</tr>
</tr> -->
{% endfor %}
</table>
{% endif %}
<!-- </table> -->
{% endif %} please look into it and take necessary actions.
get in touch with the student at
<nobr><u>{{ email }}</u></nobr>
<!-- </p> -->
</p>
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
</p>
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -1,9 +1,9 @@
<!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">
<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>
@ -14,73 +14,175 @@
</xml>
</noscript>
<![endif]-->
<link rel="preconnect" href="https://fonts.gstatic.com">
<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">
<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;
body,
table,
td,
div,
p,
h1 {
font-family: "Roboto", sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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;
">Hey, {{ student_name }}</h1>
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/Rejected.png"
alt="rejection Logo"
style="
width: 30%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h2 style="text-align: center">Hey, {{ student_name }}</h2>
<p style="text-align: center">
We regret to inform you that you have not been selected for
<b>{{ designation }}</b> role at <b>{{ company_name }}</b>.
CDC will keep bringing more such opportunities for you in the future.
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
CDC will keep bringing more such opportunities for you in the
future.
</p>
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</p>
</div>
</td>
</tr>
</table>
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -1,9 +1,9 @@
<!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">
<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>
@ -14,72 +14,173 @@
</xml>
</noscript>
<![endif]-->
<link rel="preconnect" href="https://fonts.gstatic.com">
<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">
<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;
body,
table,
td,
div,
p,
h1 {
font-family: "Roboto", sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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;
">Hey, {{ student_name }}</h1>
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family: 'Roboto', sans-serif;">
Congratulations, You have been selected for the <b>{{ designation }}</b> at
<b>{{ company_name }}</b>.<br>
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/Confirmed.png"
alt="approved Logo"
style="
width: 30%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h2 style="text-align: center">Hey, {{ student_name }}</h2>
<p style="text-align: center">
Congratulations, You have been selected for the
<b>{{ designation }}</b> at <b>{{ company_name }}</b>.<br />
</p>
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</p>
</div>
</td>
</tr>
</table>
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -1,9 +1,9 @@
<!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">
<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>
@ -14,105 +14,191 @@
</xml>
</noscript>
<![endif]-->
<link rel="preconnect" href="https://fonts.gstatic.com">
<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">
<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;
body,
table,
td,
div,
p,
h1 {
font-family: "Roboto", sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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 application for a <b>{{ application_type }}</b> offer 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">
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/message.png"
alt="verify Logo"
style="
width: 35%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h2 style="text-align: center">Hello, {{ name }}</h2>
<p style="text-align: center">
We have received your application for a
<b>{{ application_type }}</b> offer at
<b> {{ company_name }}</b>. {% if additional_info_items %} We
received these additional details
<br />
<table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
border-radius:15px; background-color: #e0e3ee">
<!-- <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>
<!-- <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 keep you informed with the updates. If you have any queries, please
feel to
write to
<!-- </table> -->
{% endif %} We will keep you informed with the updates. 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;">
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</p>
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -1,9 +1,9 @@
<!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">
<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>
@ -14,111 +14,199 @@
</xml>
</noscript>
<![endif]-->
<link rel="preconnect" href="https://fonts.gstatic.com">
<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">
<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;
body,
table,
td,
div,
p,
h1 {
font-family: "Roboto", sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header,
.email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body,
.email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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 some update in your application for a <b>{{ application_type }}</b> offer at
<b>
{{ company_name }}</b>.
<table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
<td>
<div class="email-header">
<img
src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png"
alt="CDC Logo"
style="width: 35%; height: auto; display: block; margin: 0 auto"
/>
</div>
<div class="inner-container">
<div class="email-body">
<img
src="https://cdc.iitdh.ac.in/storage/Images/mobile.png"
alt="verify Logo"
style="
width: 35%;
height: auto;
display: block;
margin: 0 auto;
"
/>
<h2 style="text-align: center">Hello, {{ name }}</h2>
<p style="text-align: center">
We have received some update in your application for a
<b>{{ application_type }}</b> offer at
<b> {{ company_name }}</b>.
<!-- <table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
border-radius:15px; background-color: #e0e3ee">
<tr>
<td style="padding:8px 10px;color:#153643; "> resume:</td>
<td style="padding:8px 10px;color:#153643;">{{ resume }}</td>
</tr>
</table>
-->
<!-- {% if additional_info_items %} -->
<!-- We received these additional details -->
<!-- <br> -->
<!-- <p style="text-align: center;"> -->
<!-- {% for i,j in additional_info_items.items %} -->
{% if additional_info_items %}
We received these additional details
<br>
<table style="border:solid 1px; margin: auto; text-align: center;width: 80%;
border-radius:15px; background-color: #e0e3ee">
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family:
'Roboto', sans-serif;text-align: center">
{% for i,j in additional_info_items.items %}
<tr>
<!-- <tr>
<td style="padding:8px 10px;color:#153643; ">{{ i }}:</td>
<td style="padding:8px 10px;color:#153643;">{{ j }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
</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 keep you informed with the updates. If you have any queries, please
feel to
write to
We will keep you informed with the updates. 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;">
</div>
</div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555">Follow us on:</p>
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
<a
href="https://twitter.com/cdc_iitdh"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/twitter.png"
alt="Twitter"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.instagram.com/cdc.iitdh/?hl=en"
style="margin-right: 10px; color: #eff7ff"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png"
alt="Instagram"
style="width: 24px; height: 24px"
/>
</a>
<a
href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in"
>
<img
src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png"
alt="LinkedIn"
style="width: 24px; height: 24px"
/>
</a>
<p style="color: #555555">
copy right &copy; 2024 CDC, all rights reserved
</p>
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -18,101 +18,145 @@
<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 {
body, table, td, div, p, h1 {
font-family: 'Roboto', sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header, .email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h2 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body, .email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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;">
<td >
<div class="email-header">
<img src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png" alt="CDC Logo" style="width: 35%; height: auto; display: block; margin: 0 auto;" />
</div>
<div class="inner-container">
<div class="email-body">
<img src="https://cdc.iitdh.ac.in/storage/Images/tracking.png" alt="verify Logo" style="width: 35%; height: auto; display: block; margin: 0 auto;" />
<h2 style="text-align: center;"
>Hello, {{ name }}</h1>
<p style="text-align:center;">
We have received your issue regarding a <b>{{ application_type }}</b> opening at
<b>
{{ company_name }}</b>.
{% if additional_info %}
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">
<!-- <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>
<!-- <tr>
<td style="padding:8px 10px;color:#153643; ">{{ i }}:</td>
<td style="padding:8px 10px;color:#153643;">{{ j }}</td>
</tr>
</tr> -->
{% endfor %}
</table>
<!-- </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;">
</p></div></div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555;">Follow us on:</p>
<a href="https://twitter.com/cdc_iitdh" style="margin-right: 10px; color: #eff7ff">
<img src="https://cdc.iitdh.ac.in/storage/Images/twitter.png" alt="Twitter" style="width: 24px; height: 24px;">
</a>
<a href="https://www.instagram.com/cdc.iitdh/?hl=en" style="margin-right: 10px; color: #eff7ff;">
<img src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png" alt="Instagram" style="width: 24px; height: 24px;">
</a>
<a href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in">
<img src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png" alt="LinkedIn" style="width: 24px; height: 24px;">
</a>
<p style="color: #555555;">copy right &copy; 2024 CDC, all rights reserved</p>
</div>
</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;">
&reg; CDC,IIT Dharwad,2021<br/>
</p>
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -18,60 +18,128 @@
<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 {
body, table, td, div, p, h1 {
font-family: 'Roboto', sans-serif;
}
body {
margin: 0;
padding: 0;
background-color: #e1e4e8; /* Outer background color */
}
.email-wrapper {
padding: 20px;
background-color: #e1e4e8; /* Outer background color */
}
.email-container {
width: 100%;
max-width: 600px;
margin: 0 auto;
background-color: #eff7ff; /* Outer box background color */
border-radius: 8px;
overflow: hidden;
}
.email-header, .email-footer {
padding: 40px 0;
text-align: center;
color: #ffffff;
}
.email-header img {
width: 150px;
height: auto;
margin-bottom: 20px;
}
.email-header h1 {
margin: 0;
font-size: 24px;
font-weight: 500;
}
.inner-container {
background-color: #ffffff; /* Inner box background color */
border-radius: 8px;
margin: 0 20px;
}
.inner-container .email-body {
padding: 36px 30px;
}
.inner-container .email-body h4 {
margin-bottom: 24px;
font-size: 24px;
color: black;
font-weight: 500;
}
.inner-container .email-body p {
margin-bottom: 16px;
font-size: 16px;
line-height: 24px;
color: #555555;
}
.email-footer {
padding: 20px 30px;
text-align: center;
color: #ffffff;
}
.email-footer p {
margin: 0;
font-size: 14px;
line-height: 20px;
}
.button {
display: inline-block;
padding: 12px 24px;
margin: 20px 0;
font-size: 16px;
color: #ffffff;
background-color: #ff7350;
text-decoration: none;
border-radius: 5px;
font-weight: 500;
}
@media only screen and (max-width: 600px) {
.inner-container .email-body, .email-footer {
padding: 20px !important;
}
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<body>
<div class="email-wrapper">
<table role="presentation" class="email-container">
<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;
">{{ 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;">
<td>
<div class="email-header">
<img src="https://cdc.iitdh.ac.in/storage/Images/CDC-Logo.png" alt="CDC Logo" style="width: 35%; height: auto; display: block; margin: 0 auto;" />
</div>
<div class="inner-container">
<div class="email-body">
<img src="https://cdc.iitdh.ac.in/storage/Images/reminder.png" alt="verify Logo" style="width: 25%; height: auto; display: block; margin: 0 auto;" />
<h4 style="text-align: center;">{{ opening_type }} Opportunity at {{ company_name }}</h3>
<p style="text-align: center;">
Gentle reminder to fill out the application form.
Interested students can apply before <b>{{ deadline }}</b> in the <a
href="{{ link }}">CDC-webportal</a>.
Interested students can apply before <b>{{ deadline }}</b> in the CDC-webportal</p>
<p style="text-align: center;"> <a
href="{{ link }}" style="display: inline-block; padding: 12px 24px; margin: 20px 0; font-size: 16px; color: #ffffff; background-color: #ff7350; text-decoration: none; border-radius: 50px; font-weight: 500;">CDC web portal</a>.
</p>
</td>
</tr>
</div></div>
<div class="email-footer">
<p style="margin-bottom: 16px; color: #555555;">Follow us on:</p>
<a href="https://twitter.com/cdc_iitdh" style="margin-right: 10px; color: #eff7ff">
<img src="https://cdc.iitdh.ac.in/storage/Images/twitter.png" alt="Twitter" style="width: 24px; height: 24px;">
</a>
<a href="https://www.instagram.com/cdc.iitdh/?hl=en" style="margin-right: 10px; color: #eff7ff;">
<img src="https://cdc.iitdh.ac.in/storage/Images/Instagram_icon.png" alt="Instagram" style="width: 24px; height: 24px;">
</a>
<a href="https://www.linkedin.com/company/cdciitdharwad/?originalSubdomain=in">
<img src="https://cdc.iitdh.ac.in/storage/Images/LinkedIn_logo_initials.png" alt="LinkedIn" style="width: 24px; height: 24px;">
</a>
<p style="color: #555555;">copy right &copy; 2024 CDC, all rights reserved</p>
</div>
</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;">
&reg; CDC,IIT Dharwad,2022<br/>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>

0
nginx.conf Executable file → Normal file
View File

View File

@ -1,4 +1,4 @@
asgiref==3.5.0
asgiref>=3.5.2,<4
astroid==2.11.2
cachetools==5.0.0
certifi==2021.10.8
@ -13,11 +13,13 @@ Django==3.2.13
django-background-tasks==1.2.5
django-compat==1.0.15
django-cors-headers==3.11.0
django-crontab==0.7.1
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
daphne==4.1.0
et-xmlfile==1.1.0
google-auth==2.6.6
gunicorn==20.1.0

2
setup.sh Executable file → Normal file
View File

@ -8,7 +8,7 @@ python3 manage.py migrate
echo "Migrations complete"
python3 manage.py collectstatic --noinput
python3 manage.py crontab add
DIR="./Storage"
if [ -d "$DIR" ]; then
### Take action if $DIR exists ###

7
start_backend_service.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
source /home/cdc/Desktop/CDC_Web_Portal_Backend/cdc-placement-website-backend/venv/bin/activate
cd /home/cdc/Desktop/CDC_Web_Portal_Backend/cdc-placement-website-backend/CDC_Backend
bash run_prod.sh

2
start_email_service.sh Executable file → Normal file
View File

@ -4,4 +4,4 @@ source /home/cdc/Desktop/CDC_Web_Portal_Backend/cdc-placement-website-backend/ve
cd /home/cdc/Desktop/CDC_Web_Portal_Backend/cdc-placement-website-backend/CDC_Backend
python manage.py process_tasks
python3 manage.py process_tasks