fix: Student Admission and Student Applicant fixes (#23515)
* fix: student admission list portal styling
* fix: added basic validations to Student Admission DocType
* fix: show program description and apply button for every program
* fix: don't show apply now button if admissions have not started
* fix: fetch admission details in student applicant web form
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
diff --git a/erpnext/education/doctype/student_admission/student_admission.json b/erpnext/education/doctype/student_admission/student_admission.json
index 1096888..75f2162 100644
--- a/erpnext/education/doctype/student_admission/student_admission.json
+++ b/erpnext/education/doctype/student_admission/student_admission.json
@@ -51,12 +51,14 @@
"fieldname": "admission_start_date",
"fieldtype": "Date",
"label": "Admission Start Date",
+ "mandatory_depends_on": "enable_admission_application",
"no_copy": 1
},
{
"fieldname": "admission_end_date",
"fieldtype": "Date",
"label": "Admission End Date",
+ "mandatory_depends_on": "enable_admission_application",
"no_copy": 1
},
{
@@ -83,6 +85,7 @@
},
{
"default": "0",
+ "depends_on": "published",
"fieldname": "enable_admission_application",
"fieldtype": "Check",
"label": "Enable Admission Application"
@@ -91,7 +94,7 @@
"has_web_view": 1,
"is_published_field": "published",
"links": [],
- "modified": "2020-06-15 20:18:38.591626",
+ "modified": "2020-09-18 00:14:54.615321",
"modified_by": "Administrator",
"module": "Education",
"name": "Student Admission",
diff --git a/erpnext/education/doctype/student_admission/student_admission.py b/erpnext/education/doctype/student_admission/student_admission.py
index 2781c9c..0febb96 100644
--- a/erpnext/education/doctype/student_admission/student_admission.py
+++ b/erpnext/education/doctype/student_admission/student_admission.py
@@ -19,6 +19,9 @@
if not self.route: #pylint: disable=E0203
self.route = "admissions/" + "-".join(self.title.split(" "))
+ if self.enable_admission_application and not self.program_details:
+ frappe.throw(_("Please add programs to enable admission application."))
+
def get_context(self, context):
context.no_cache = 1
context.show_sidebar = True
diff --git a/erpnext/education/doctype/student_admission/templates/student_admission.html b/erpnext/education/doctype/student_admission/templates/student_admission.html
index e5a9ead..7ff3906 100644
--- a/erpnext/education/doctype/student_admission/templates/student_admission.html
+++ b/erpnext/education/doctype/student_admission/templates/student_admission.html
@@ -43,31 +43,35 @@
<thead>
<tr class="active">
<th style="width: 90px">Program/Std.</th>
- <th style="width: 170px">Minumum Age</th>
- <th style="width: 170px">Maximum Age</th>
+ <th style="width: 180px">Description</th>
+ <th style="width: 100px">Minumum Age</th>
+ <th style="width: 100px">Maximum Age</th>
<th style="width: 100px">Application Fee</th>
+ {%- if doc.enable_admission_application and frappe.utils.getdate(doc.admission_start_date) <= today -%}
+ <th style="width: 120px"></th>
+ {% endif %}
</tr>
</thead>
<tbody>
{% for row in program_details %}
<tr>
<td>{{ row.program }}</td>
+ <td><div class="text-muted">{{ row.description if row.description else '' }}</div></td>
<td>{{ row.min_age }}</td>
<td>{{ row.max_age }}</td>
<td>{{ row.application_fee }}</td>
+ {%- if doc.enable_admission_application and frappe.utils.getdate(doc.admission_start_date) <= today -%}
+ <td>
+ <a class='btn btn-sm btn-primary' href='/student-applicant?new=1&student_admission={{doc.name}}&program={{row.program}}&academic_year={{academic_year}}'>
+ {{ _("Apply Now") }}
+ </a>
+ </td>
+ {% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
- {%- if doc.enable_admission_application -%}
- <br>
- <p>
- <a class='btn btn-primary'
- href='/student-applicant?new=1&student_admission={{doc.name}}'>
- {{ _("Apply Now") }}</a>
- </p>
- {% endif %}
{% endblock %}
diff --git a/erpnext/education/doctype/student_admission/templates/student_admission_row.html b/erpnext/education/doctype/student_admission/templates/student_admission_row.html
index e049773..cf22436 100644
--- a/erpnext/education/doctype/student_admission/templates/student_admission_row.html
+++ b/erpnext/education/doctype/student_admission/templates/student_admission_row.html
@@ -1,8 +1,8 @@
-<div class="web-list-item">
+<div class="web-list-item transaction-list-item">
{% set today = frappe.utils.getdate(frappe.utils.nowdate()) %}
- <a href = "{{ doc.route }}/">
+ <a href = "{{ doc.route }}/" class="no-underline">
<div class="row">
- <div class="col-sm-6 text-left small bold" style="margin-top: -3px;"">
+ <div class="col-sm-4 bold">
<span class="indicator
{% if frappe.utils.getdate(doc.admission_end_date) == today %}
red
@@ -15,6 +15,14 @@
{% endif %}
">{{ doc.title }}</span>
</div>
+ <div class="col-sm-2 small">
+ <span class="text-muted">
+ Academic Year
+ </span>
+ <div class="text-muted bold">
+ {{ doc.academic_year }}
+ </div>
+ </div>
<div class="col-sm-3 small">
<span class="text-muted">
Starts on
@@ -27,7 +35,7 @@
<span class="text-muted">
Ends on
</span>
- <div class="bold">
+ <div class=" text-muted bold">
{{ frappe.format_date(doc.admission_end_date) }}
</div>
</div>
diff --git a/erpnext/education/doctype/student_admission_program/student_admission_program.json b/erpnext/education/doctype/student_admission_program/student_admission_program.json
index e9f041e..d14b9a4 100644
--- a/erpnext/education/doctype/student_admission_program/student_admission_program.json
+++ b/erpnext/education/doctype/student_admission_program/student_admission_program.json
@@ -8,6 +8,7 @@
"program",
"min_age",
"max_age",
+ "description",
"column_break_4",
"application_fee",
"applicant_naming_series"
@@ -18,52 +19,47 @@
"fieldtype": "Link",
"in_list_view": 1,
"label": "Program",
- "options": "Program",
- "show_days": 1,
- "show_seconds": 1
+ "options": "Program"
},
{
"fieldname": "column_break_4",
- "fieldtype": "Column Break",
- "show_days": 1,
- "show_seconds": 1
+ "fieldtype": "Column Break"
},
{
"fieldname": "application_fee",
"fieldtype": "Currency",
"in_list_view": 1,
- "label": "Application Fee",
- "show_days": 1,
- "show_seconds": 1
+ "label": "Application Fee"
},
{
"fieldname": "applicant_naming_series",
"fieldtype": "Data",
"in_list_view": 1,
- "label": "Naming Series (for Student Applicant)",
- "show_days": 1,
- "show_seconds": 1
+ "label": "Naming Series (for Student Applicant)"
},
{
"fieldname": "min_age",
"fieldtype": "Int",
"in_list_view": 1,
- "label": "Minimum Age",
- "show_days": 1,
- "show_seconds": 1
+ "label": "Minimum Age"
},
{
"fieldname": "max_age",
"fieldtype": "Int",
"in_list_view": 1,
- "label": "Maximum Age",
- "show_days": 1,
- "show_seconds": 1
+ "label": "Maximum Age"
+ },
+ {
+ "fetch_from": "program.description",
+ "fetch_if_empty": 1,
+ "fieldname": "description",
+ "fieldtype": "Small Text",
+ "label": "Description"
}
],
"istable": 1,
"links": [],
- "modified": "2020-06-10 23:06:30.037404",
+ "modified": "2020-10-05 13:03:42.005985",
"modified_by": "Administrator",
"module": "Education",
"name": "Student Admission Program",
diff --git a/erpnext/education/doctype/student_applicant/student_applicant.json b/erpnext/education/doctype/student_applicant/student_applicant.json
index bca38fb..6df9b9a 100644
--- a/erpnext/education/doctype/student_applicant/student_applicant.json
+++ b/erpnext/education/doctype/student_applicant/student_applicant.json
@@ -168,6 +168,7 @@
"fieldname": "student_email_id",
"fieldtype": "Data",
"label": "Student Email Address",
+ "options": "Email",
"unique": 1
},
{
@@ -261,7 +262,7 @@
"image_field": "image",
"is_submittable": 1,
"links": [],
- "modified": "2020-09-07 19:31:30.063563",
+ "modified": "2020-10-05 13:59:45.631647",
"modified_by": "Administrator",
"module": "Education",
"name": "Student Applicant",
diff --git a/erpnext/education/web_form/student_applicant/student_applicant.json b/erpnext/education/web_form/student_applicant/student_applicant.json
index 2be5648..7b4eaa1 100644
--- a/erpnext/education/web_form/student_applicant/student_applicant.json
+++ b/erpnext/education/web_form/student_applicant/student_applicant.json
@@ -70,19 +70,7 @@
"show_in_filter": 0
},
{
- "allow_read_on_all_link_options": 0,
- "fieldname": "image",
- "fieldtype": "Data",
- "hidden": 0,
- "label": "Image",
- "max_length": 0,
- "max_value": 0,
- "read_only": 0,
- "reqd": 0,
- "show_in_filter": 0
- },
- {
- "allow_read_on_all_link_options": 0,
+ "allow_read_on_all_link_options": 1,
"fieldname": "program",
"fieldtype": "Link",
"hidden": 0,
@@ -95,7 +83,7 @@
"show_in_filter": 0
},
{
- "allow_read_on_all_link_options": 0,
+ "allow_read_on_all_link_options": 1,
"fieldname": "academic_year",
"fieldtype": "Link",
"hidden": 0,
@@ -108,6 +96,19 @@
"show_in_filter": 0
},
{
+ "allow_read_on_all_link_options": 1,
+ "fieldname": "academic_term",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "label": "Academic Term",
+ "max_length": 0,
+ "max_value": 0,
+ "options": "Academic Term",
+ "read_only": 0,
+ "reqd": 0,
+ "show_in_filter": 0
+ },
+ {
"allow_read_on_all_link_options": 0,
"fieldname": "date_of_birth",
"fieldtype": "Date",
@@ -120,6 +121,19 @@
"show_in_filter": 0
},
{
+ "allow_read_on_all_link_options": 1,
+ "fieldname": "gender",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "label": "Gender",
+ "max_length": 0,
+ "max_value": 0,
+ "options": "Gender",
+ "read_only": 0,
+ "reqd": 0,
+ "show_in_filter": 0
+ },
+ {
"allow_read_on_all_link_options": 0,
"fieldname": "blood_group",
"fieldtype": "Select",
@@ -141,7 +155,7 @@
"max_length": 0,
"max_value": 0,
"read_only": 0,
- "reqd": 0,
+ "reqd": 1,
"show_in_filter": 0
},
{
@@ -208,19 +222,6 @@
},
{
"allow_read_on_all_link_options": 0,
- "fieldname": "guardians",
- "fieldtype": "Table",
- "hidden": 0,
- "label": "Guardians",
- "max_length": 0,
- "max_value": 0,
- "options": "Student Guardian",
- "read_only": 0,
- "reqd": 0,
- "show_in_filter": 0
- },
- {
- "allow_read_on_all_link_options": 0,
"fieldname": "siblings",
"fieldtype": "Table",
"hidden": 0,