Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: evaluation end date #694

Merged
merged 3 commits into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions frappe-ui
Submodule frappe-ui added at 2898a0
8 changes: 7 additions & 1 deletion lms/lms/doctype/lms_batch/lms_batch.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"category",
"column_break_flwy",
"seat_count",
"evaluation_end_date",
"section_break_6",
"description",
"batch_details_raw",
Expand Down Expand Up @@ -279,11 +280,16 @@
"fieldname": "allow_future",
"fieldtype": "Check",
"label": "Allow accessing future dates"
},
{
"fieldname": "evaluation_end_date",
"fieldtype": "Date",
"label": "Evaluation End Date"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-11-17 10:41:00.340418",
"modified": "2023-11-29 12:06:58.776479",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Batch",
Expand Down
7 changes: 7 additions & 0 deletions lms/lms/doctype/lms_batch/lms_batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def validate(self):
self.validate_membership()
self.validate_timetable()
self.send_confirmation_mail()
self.validate_evaluation_end_date()

def validate_duplicate_students(self):
students = [row.student for row in self.students]
Expand Down Expand Up @@ -68,6 +69,10 @@ def send_confirmation_mail(self):
self.send_mail(student)
student.confirmation_email_sent = 1

def validate_evaluation_end_date(self):
if self.evaluation_end_date and self.evaluation_end_date < self.end_date:
frappe.throw(_("Evaluation end date cannot be less than the batch end date."))

def send_mail(self, student):
subject = _("Enrollment Confirmation for the Next Training Batch")
template = "batch_confirmation"
Expand Down Expand Up @@ -253,6 +258,7 @@ def create_batch(
currency=None,
name=None,
published=0,
evaluation_end_date=None,
):
frappe.only_for("Moderator")
if name:
Expand All @@ -278,6 +284,7 @@ def create_batch(
"amount": amount,
"currency": currency,
"published": published,
"evaluation_end_date": evaluation_end_date,
}
)
doc.save()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,13 @@
"fieldname": "batch_name",
"fieldtype": "Link",
"in_standard_filter": 1,
"label": "Batch Name",
"label": "Batch",
"options": "LMS Batch"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-08-23 14:50:37.618352",
"modified": "2023-11-29 15:00:30.617298",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Certificate Request",
Expand Down
23 changes: 20 additions & 3 deletions lms/lms/doctype/lms_certificate_request/lms_certificate_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
class LMSCertificateRequest(Document):
def validate(self):
self.validate_if_existing_requests()
self.validate_evaluation_date()

def validate_if_existing_requests(self):
existing_requests = frappe.get_all(
Expand All @@ -32,6 +33,20 @@ def validate_if_existing_requests(self):
)
)

def validate_evaluation_date(self):
if self.batch_name:
evaluation_end_date = frappe.db.get_value(
"LMS Batch", self.batch_name, "evaluation_end_date"
)

if evaluation_end_date:
if getdate(self.date) > getdate(evaluation_end_date):
frappe.throw(
_("You cannot schedule evaluations after {0}.").format(
format_date(evaluation_end_date, "medium")
)
)


def schedule_evals():
if frappe.db.get_single_value("LMS Settings", "send_calendar_invite_for_evaluations"):
Expand Down Expand Up @@ -104,7 +119,9 @@ def update_meeting_details(eval, event, calendar):


@frappe.whitelist()
def create_certificate_request(course, date, day, start_time, end_time, batch=None):
def create_certificate_request(
course, date, day, start_time, end_time, batch_name=None
):
is_member = frappe.db.exists(
{"doctype": "LMS Enrollment", "course": course, "member": frappe.session.user}
)
Expand All @@ -115,13 +132,13 @@ def create_certificate_request(course, date, day, start_time, end_time, batch=No
eval.update(
{
"course": course,
"evaluator": get_evaluator(course, batch),
"evaluator": get_evaluator(course, batch_name),
"member": frappe.session.user,
"date": date,
"day": day,
"start_time": start_time,
"end_time": end_time,
"batch": batch,
"batch_name": batch_name,
}
)
eval.save(ignore_permissions=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"idx": 0,
"is_standard": 1,
"message": "{% set title = frappe.db.get_value(\"LMS Course\", doc.course, \"title\") %}\n\n<p> {{ _(\"Hey {0}\").format(doc.member_name) }} </p>\n<p> {{ _('Your evaluation for the course {0} has been scheduled on {1} at {2}.').format(title, frappe.utils.format_date(doc.date, \"medium\"), frappe.utils.format_time(doc.start_time, \"short\")) }}</p>\n<p> {{ _(\"Please prepare well and be on time for the evaluations.\") }} </p>\n",
"modified": "2023-02-28 19:53:47.716135",
"message_type": "HTML",
"modified": "2023-11-29 17:34:54.514031",
"modified_by": "Administrator",
"module": "LMS",
"name": "Certificate Request Creation",
Expand All @@ -27,4 +28,4 @@
"send_system_notification": 0,
"send_to_all_assignees": 0,
"subject": "Your evaluation slot has been booked"
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% set title = frappe.db.get_value("LMS Course", doc.course, "title") %}

<p> {{ _("Hey {0}").format(doc.member_name) }} </p>
<p> {{ _('Your evaluation for the course {0} has been scheduled on {1} at {2}.').format(title, frappe.utils.format_date(doc.date, "medium"), frappe.utils.format_time(doc.start_time, "short")) }}</p>
<p> {{ _('Your evaluation for the course ${0} has been scheduled on ${1} at ${2}.').format(title, frappe.utils.format_date(doc.date, "medium"), frappe.utils.format_time(doc.start_time, "short")) }}</p>

<p> {{ _("Please prepare well and be on time for the evaluations.") }} </p>
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,19 @@
"event": "Days Before",
"idx": 0,
"is_standard": 1,
"message": "{% set title = frappe.db.get_value(\"LMS Course\", doc.course, \"title\") %}\n<p> {{ _('Your evaluation for the course ${0} has been scheduled on ${1} at ${2}.').format(title, frappe.utils.format_date(doc.date, \"medium\"), frappe.utils.format_time(doc.start_time, \"short\")) }}</p>\n<p> {{ _(\"Please prepare well and be on time for the evaluations.\") }} </p>\n",
"modified": "2022-06-03 11:51:02.681803",
"message": "{% set title = frappe.db.get_value(\"LMS Course\", doc.course, \"title\") %}\n\n<p> {{ _('Your evaluation for the course ${0} has been scheduled on ${1} at ${2}.').format(title, frappe.utils.format_date(doc.date, \"medium\"), frappe.utils.format_time(doc.start_time, \"short\")) }}</p>\n\n<p> {{ _(\"Please prepare well and be on time for the evaluations.\") }} </p>\n",
"message_type": "HTML",
"modified": "2023-11-29 17:26:53.355501",
"modified_by": "Administrator",
"module": "LMS",
"name": "Certificate Request Reminder",
"owner": "Administrator",
"recipients": [
{
"receiver_by_document_field": "member"
},
{
"receiver_by_document_field": "evaluator"
}
],
"send_system_notification": 0,
Expand Down

This file was deleted.

41 changes: 25 additions & 16 deletions lms/public/js/common_functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -267,15 +267,6 @@ const open_batch_dialog = () => {
fieldname: "published",
default: batch_info && batch_info.published,
},
{
fieldtype: "Column Break",
},
{
fieldtype: "Int",
label: __("Seat Count"),
fieldname: "seat_count",
default: batch_info && batch_info.seat_count,
},
{
fieldtype: "Section Break",
},
Expand All @@ -293,13 +284,6 @@ const open_batch_dialog = () => {
reqd: 1,
default: batch_info && batch_info.end_date,
},
{
fieldtype: "Select",
label: __("Medium"),
fieldname: "medium",
options: ["Online", "Offline"],
default: (batch_info && batch_info.medium) || "Online",
},
{
fieldtype: "Column Break",
},
Expand All @@ -317,6 +301,16 @@ const open_batch_dialog = () => {
default: batch_info && batch_info.end_time,
reqd: 1,
},
{
fieldtype: "Section Break",
},
{
fieldtype: "Select",
label: __("Medium"),
fieldname: "medium",
options: ["Online", "Offline"],
default: (batch_info && batch_info.medium) || "Online",
},
{
fieldtype: "Link",
label: __("Category"),
Expand All @@ -325,6 +319,21 @@ const open_batch_dialog = () => {
only_select: 1,
default: batch_info && batch_info.category,
},
{
fieldtype: "Column Break",
},
{
fieldtype: "Int",
label: __("Seat Count"),
fieldname: "seat_count",
default: batch_info && batch_info.seat_count,
},
{
fieldtype: "Date",
label: __("Evaluation End Date"),
fieldname: "evaluation_end_date",
default: batch_info && batch_info.evaluation_end_date,
},
{
fieldtype: "Section Break",
},
Expand Down
1 change: 1 addition & 0 deletions lms/www/batches/batch.html
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,7 @@
let courses = {{ course_list | json }};
const legends = {{ legends | json }};
const allow_future = {{ batch_info.allow_future }}
const evaluation_end_date = "{{ batch_info.evaluation_end_date if batch_info.evaluation_end_date else '' }}"
</script>

<link rel="stylesheet" href="https://uicdn.toast.com/calendar/latest/toastui-calendar.min.css" />
Expand Down
3 changes: 3 additions & 0 deletions lms/www/batches/batch.js
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,9 @@ const open_evaluation_form = (e) => {
min_date: new Date(
frappe.datetime.add_days(frappe.datetime.get_today(), 1)
),
max_date: evaluation_end_date
? new Date(evaluation_end_date)
: "",
change: () => {
if (this.eval_form.get_value("date")) get_slots();
},
Expand Down
1 change: 1 addition & 0 deletions lms/www/batches/batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ def get_context(context):
"batch_details",
"published",
"allow_future",
"evaluation_end_date",
],
as_dict=True,
)
Expand Down