These links are unique to you - please do not share them
+
If accepted, you will evaluate every student in this batch
+
If you did not expect this invitation, please ignore this email
+
+
+
+
Thank you for your consideration,
+ Thesis Committee
+ PDPM IIITDM Jabalpur
+
+
+
diff --git a/FusionIIIT/templates/email/examiner_panel_invitation.txt b/FusionIIIT/templates/email/examiner_panel_invitation.txt
new file mode 100644
index 000000000..cf76b317f
--- /dev/null
+++ b/FusionIIIT/templates/email/examiner_panel_invitation.txt
@@ -0,0 +1,24 @@
+THESIS EXAMINER INVITATION
+==========================
+
+Dear {{ prof_name }},
+
+You are invited to serve as the external examiner for the M.Tech thesis
+evaluations of the following batch:
+
+"{{ batch_name }}"
+
+Please respond to this invitation by clicking one of the links below:
+
+Accept: {{ accept_url }}
+Decline: {{ reject_url }}
+
+IMPORTANT INFORMATION:
+- This invitation expires on {{ expires_at }}
+- These links are unique to you - please do not share them
+- If accepted, you will evaluate every student in this batch
+- If you did not expect this invitation, please ignore this email
+
+Thank you for your consideration,
+Thesis Committee
+PDPM IIITDM Jabalpur
diff --git a/FusionIIIT/templates/email/examiner_panel_scoring.html b/FusionIIIT/templates/email/examiner_panel_scoring.html
new file mode 100644
index 000000000..dd24f473b
--- /dev/null
+++ b/FusionIIIT/templates/email/examiner_panel_scoring.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Thesis Scoring Form
+
+
+
+
Thesis Scoring Form
+
+
Dear {{ prof_name }},
+
+
Thank you for accepting to examine the theses of the batch:
+
+ {{ batch_name }}
+
+
+
Please score each student's thesis (out of 100) using the secure link below:
This link is unique to you and should not be shared
+
You can save this email and return to score remaining students later
+
Your evaluation is valuable and greatly appreciated
+
+
+
+
Thank you for your valuable contribution,
+ Thesis Committee
+ PDPM IIITDM Jabalpur
+
+
+
diff --git a/FusionIIIT/templates/email/examiner_panel_scoring.txt b/FusionIIIT/templates/email/examiner_panel_scoring.txt
new file mode 100644
index 000000000..8ea7c967b
--- /dev/null
+++ b/FusionIIIT/templates/email/examiner_panel_scoring.txt
@@ -0,0 +1,21 @@
+THESIS SCORING FORM
+====================
+
+Dear {{ prof_name }},
+
+Thank you for accepting to examine the theses of the batch:
+
+"{{ batch_name }}"
+
+Please score each student's thesis (out of 100) using the secure link below:
+
+{{ scoring_url }}
+
+NOTE:
+- This link is unique to you and should not be shared
+- You can save this email and return to score remaining students later
+- Your evaluation is valuable and greatly appreciated
+
+Thank you for your valuable contribution,
+Thesis Committee
+PDPM IIITDM Jabalpur
diff --git a/FusionIIIT/templates/email/invitation.html b/FusionIIIT/templates/email/invitation.html
new file mode 100644
index 000000000..d020da0e9
--- /dev/null
+++ b/FusionIIIT/templates/email/invitation.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ Thesis Review Invitation
+
+
+
+
Thesis Review Invitation
+
+
Dear {{ prof_name }},
+
+
You are invited to review the PhD thesis titled:
+
+ {{ thesis_title }}
+
+
+
Please respond to this invitation by clicking one of the buttons below:
These links are unique to you - please do not share them
+
If you did not expect this invitation, please ignore this email
+
+
+
+
Thank you for your consideration,
+ Thesis Committee
+ PDPM IIITDM Jabalpur
+
+
+
\ No newline at end of file
diff --git a/FusionIIIT/templates/email/invitation.txt b/FusionIIIT/templates/email/invitation.txt
new file mode 100644
index 000000000..8d6eb5d14
--- /dev/null
+++ b/FusionIIIT/templates/email/invitation.txt
@@ -0,0 +1,22 @@
+THESIS REVIEW INVITATION
+========================
+
+Dear {{ prof_name }},
+
+You are invited to review the PhD thesis titled:
+
+"{{ thesis_title }}"
+
+Please respond to this invitation by clicking one of the links below:
+
+✓ Accept Review: {{ accept_url }}
+✗ Decline Review: {{ reject_url }}
+
+IMPORTANT INFORMATION:
+- This invitation expires on {{ expires_at }}
+- These links are unique to you - please do not share them
+- If you did not expect this invitation, please ignore this email
+
+Thank you for your consideration,
+Thesis Committee
+PDPM IIITDM Jabalpur
diff --git a/FusionIIIT/templates/email/review_form.html b/FusionIIIT/templates/email/review_form.html
new file mode 100644
index 000000000..77afe32f7
--- /dev/null
+++ b/FusionIIIT/templates/email/review_form.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Thesis Review Form
+
+
+
+
Thesis Review Form
+
+
Dear {{ prof_name }},
+
+
Thank you for accepting to review the PhD thesis:
+
+ {{ thesis_title }}
+
+
+
Please submit your review using the secure link below:
This link is unique to you and should not be shared
+
You can save this email and return to complete the review later
+
Your feedback is valuable and greatly appreciated
+
+
+
+
Thank you for your valuable contribution,
+ Thesis Committee
+ PDPM IIITDM Jabalpur
+
+
+
diff --git a/FusionIIIT/templates/email/review_form.txt b/FusionIIIT/templates/email/review_form.txt
new file mode 100644
index 000000000..8789afc80
--- /dev/null
+++ b/FusionIIIT/templates/email/review_form.txt
@@ -0,0 +1,21 @@
+THESIS REVIEW FORM
+==================
+
+Dear {{ prof_name }},
+
+Thank you for accepting to review the PhD thesis:
+
+"{{ thesis_title }}"
+
+Please submit your review using the secure link below:
+
+{{ review_url }}
+
+IMPORTANT NOTES:
+- This link is unique to you and should not be shared
+- You can save this email and return to complete the review later
+- Your feedback is valuable and greatly appreciated
+
+Thank you for your valuable contribution,
+Thesis Committee
+PDPM IIITDM Jabalpur
diff --git a/FusionIIIT/templates/email/thank_you.html b/FusionIIIT/templates/email/thank_you.html
new file mode 100644
index 000000000..22b5c7f09
--- /dev/null
+++ b/FusionIIIT/templates/email/thank_you.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ Thank You - Review Submitted
+
+
+
+
✓ Review Received - Thank You!
+
+
Dear {{ prof_name }},
+
+
Thank you for submitting your comprehensive review of the PhD thesis:
+
+ {{ thesis_title }}
+
+
+
Your expert feedback and insights are invaluable to the academic process and will significantly contribute to the quality and rigor of this research work.
+
+
+
+ Your review has been successfully submitted and recorded.
+
+
+
+
We deeply appreciate the time and effort you have dedicated to this evaluation. Your contribution helps maintain the high standards of academic excellence.
+
+
With sincere gratitude,
+ Thesis Committee
+ PDPM IIITDM Jabalpur
+
+
+
diff --git a/FusionIIIT/templates/email/thank_you.txt b/FusionIIIT/templates/email/thank_you.txt
new file mode 100644
index 000000000..2ae5e8087
--- /dev/null
+++ b/FusionIIIT/templates/email/thank_you.txt
@@ -0,0 +1,18 @@
+REVIEW RECEIVED - THANK YOU!
+============================
+
+Dear {{ prof_name }},
+
+Thank you for submitting your comprehensive review of the PhD thesis:
+
+"{{ thesis_title }}"
+
+Your expert feedback and insights are invaluable to the academic process and will significantly contribute to the quality and rigor of this research work.
+
+✓ Your review has been successfully submitted and recorded.
+
+We deeply appreciate the time and effort you have dedicated to this evaluation. Your contribution helps maintain the high standards of academic excellence.
+
+With sincere gratitude,
+Thesis Committee
+PDPM IIITDM Jabalpur
diff --git a/FusionIIIT/templates/placementModule/._placement.html b/FusionIIIT/templates/placementModule/._placement.html
deleted file mode 100644
index b414c702c..000000000
Binary files a/FusionIIIT/templates/placementModule/._placement.html and /dev/null differ
diff --git a/FusionIIIT/templates/placementModule/activity.html b/FusionIIIT/templates/placementModule/activity.html
deleted file mode 100644
index ef43e0d3d..000000000
--- a/FusionIIIT/templates/placementModule/activity.html
+++ /dev/null
@@ -1,537 +0,0 @@
-{% extends 'globals/base.html' %}
-{% load static %}
-
-
-{% block title %}
- Placement Schedule
-{% endblock %}
-
-
-{% block body %}
- {% block navBar %}
- {% include 'dashboard/navbar.html' %}
- {% endblock %}
-
- {% comment %}The grid starts here!{% endcomment %}
-
{% endblock %}
{% comment %}The Tab-Menu ends here!{% endcomment %}
diff --git a/FusionIIIT/test_settings.py b/FusionIIIT/test_settings.py
new file mode 100644
index 000000000..15d57089c
--- /dev/null
+++ b/FusionIIIT/test_settings.py
@@ -0,0 +1,47 @@
+"""
+Test settings for the placement_cell test suite (and any other app tests).
+
+Why this file exists
+--------------------
+The project's historical migrations do not apply cleanly on a fresh database
+(e.g. ``programme_curriculum.0026`` references ``course_registration`` before it
+exists). Django's test runner builds the test database by replaying every
+migration, so tests would fail during DB setup for reasons unrelated to the code
+under test.
+
+To keep the test suite reliable now and in the future, we disable migrations for
+the test database and let Django create the schema directly from the current
+model state. This is a standard, well-supported pattern and is also much faster.
+
+It does NOT touch the production settings (common/development/production.py).
+
+Run the placement suite (list the modules explicitly -- ``applications`` has no
+``__init__.py`` so unittest package discovery cannot introspect it)::
+
+ python manage.py test \
+ applications.placement_cell.tests.test_placement_api \
+ applications.placement_cell.tests.test_use_cases \
+ applications.placement_cell.tests.test_business_rules \
+ applications.placement_cell.tests.test_workflows \
+ applications.placement_cell.tests.test_module \
+ --settings=test_settings
+"""
+
+from Fusion.settings.development import * # noqa: F401,F403
+
+
+class DisableMigrations:
+ """Make every app create its schema from models instead of migrations."""
+
+ def __contains__(self, item):
+ return True
+
+ def __getitem__(self, item):
+ return None
+
+
+MIGRATION_MODULES = DisableMigrations()
+
+# Faster, deterministic tests.
+PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]
+DEBUG = False
diff --git a/requirements.txt b/requirements.txt
index 4b97f144f..21a3bfdec 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -74,3 +74,4 @@ xlwt==1.3.0
django-crontab==0.7.1
zipfile2==0.0.12
pandas==2.0.3
+PyYAML==5.4.1 # placement_cell spec-driven test suite