diff --git a/lms/hooks.py b/lms/hooks.py index 99d428cf..67affeb8 100644 --- a/lms/hooks.py +++ b/lms/hooks.py @@ -214,7 +214,6 @@ profile_mandatory_fields = [ "bio", "linkedin", "education", - "work_experience", "skill", "preferred_functions", "preferred_industries", diff --git a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py index 3d674cf3..ebe39caf 100644 --- a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py +++ b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py @@ -4,9 +4,24 @@ import frappe from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc +from frappe import _ +from frappe.utils import getdate, format_date, format_time class LMSCertificateRequest(Document): - pass + + def validate(self): + self.validate_if_existing_requests() + + def validate_if_existing_requests(self): + existing_requests = frappe.get_all("LMS Certificate Request", { + "member": self.member, + "course": self.course + }, ["date", "start_time", "course"]) + + for req in existing_requests: + if req.date == getdate(self.date) and getdate() <= getdate(self.date): + course_title = frappe.db.get_value("LMS Course", req.course, "title") + frappe.throw(_(f"You already have an evaluation on {format_date(req.date, 'medium')} at {format_time(req.start_time, 'short')} for the course {course_title}.")) @frappe.whitelist() def create_certificate_request(course, date, day, start_time, end_time): diff --git a/lms/lms/notification/__init__.py b/lms/lms/notification/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lms/lms/notification/certificate_request_creation/__init__.py b/lms/lms/notification/certificate_request_creation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lms/lms/notification/certificate_request_creation/certificate_request_creation.html b/lms/lms/notification/certificate_request_creation/certificate_request_creation.html new file mode 100644 index 00000000..7a22c938 --- /dev/null +++ b/lms/lms/notification/certificate_request_creation/certificate_request_creation.html @@ -0,0 +1,5 @@ +{% set title = frappe.db.get_value("LMS Course", doc.course, "title") %} + +
{{ _("Hey {0}").format(doc.member_name) }}
+{{ _('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")) }}
+{{ _("Please prepare well and be on time for the evaluations.") }}
diff --git a/lms/lms/notification/certificate_request_creation/certificate_request_creation.json b/lms/lms/notification/certificate_request_creation/certificate_request_creation.json new file mode 100644 index 00000000..d32f77bb --- /dev/null +++ b/lms/lms/notification/certificate_request_creation/certificate_request_creation.json @@ -0,0 +1,27 @@ +{ + "attach_print": 0, + "channel": "Email", + "creation": "2022-06-03 11:02:34.579145", + "days_in_advance": 0, + "docstatus": 0, + "doctype": "Notification", + "document_type": "LMS Certificate Request", + "enabled": 1, + "event": "New", + "idx": 0, + "is_standard": 1, + "message": "{% set title = frappe.db.get_value(\"LMS Course\", doc.course, \"title\") %}\n{{ _('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\")) }}
\n{{ _(\"Please prepare well and be on time for the evaluations.\") }}
\n", + "modified": "2022-06-03 11:49:01.310656", + "modified_by": "Administrator", + "module": "LMS", + "name": "Certificate Request Creation", + "owner": "Administrator", + "recipients": [ + { + "receiver_by_document_field": "member" + } + ], + "send_system_notification": 0, + "send_to_all_assignees": 0, + "subject": "Your evaluation slot has been booked" +} \ No newline at end of file diff --git a/lms/lms/notification/certificate_request_creation/certificate_request_creation.md b/lms/lms/notification/certificate_request_creation/certificate_request_creation.md new file mode 100644 index 00000000..46f352a0 --- /dev/null +++ b/lms/lms/notification/certificate_request_creation/certificate_request_creation.md @@ -0,0 +1 @@ +{{ _("Please prepare well and be on time for the evaluations.") }}
\ No newline at end of file diff --git a/lms/lms/notification/certificate_request_creation/certificate_request_creation.py b/lms/lms/notification/certificate_request_creation/certificate_request_creation.py new file mode 100644 index 00000000..e1ada619 --- /dev/null +++ b/lms/lms/notification/certificate_request_creation/certificate_request_creation.py @@ -0,0 +1,5 @@ +import frappe + +def get_context(context): + # do your magic here + pass diff --git a/lms/lms/notification/certificate_request_reminder/__init__.py b/lms/lms/notification/certificate_request_reminder/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.html b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.html new file mode 100644 index 00000000..7a22c938 --- /dev/null +++ b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.html @@ -0,0 +1,5 @@ +{% set title = frappe.db.get_value("LMS Course", doc.course, "title") %} + +{{ _("Hey {0}").format(doc.member_name) }}
+{{ _('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")) }}
+{{ _("Please prepare well and be on time for the evaluations.") }}
diff --git a/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.json b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.json new file mode 100644 index 00000000..315cf445 --- /dev/null +++ b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.json @@ -0,0 +1,28 @@ +{ + "attach_print": 0, + "channel": "Email", + "creation": "2022-06-03 11:51:02.681803", + "date_changed": "date", + "days_in_advance": 1, + "docstatus": 0, + "doctype": "Notification", + "document_type": "LMS Certificate Request", + "enabled": 1, + "event": "Days Before", + "idx": 0, + "is_standard": 1, + "message": "{% set title = frappe.db.get_value(\"LMS Course\", doc.course, \"title\") %}\n{{ _('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\")) }}
\n{{ _(\"Please prepare well and be on time for the evaluations.\") }}
\n", + "modified": "2022-06-03 11:51:02.681803", + "modified_by": "Administrator", + "module": "LMS", + "name": "Certificate Request Reminder", + "owner": "Administrator", + "recipients": [ + { + "receiver_by_document_field": "member" + } + ], + "send_system_notification": 0, + "send_to_all_assignees": 0, + "subject": "Reminder for Certificate Evaluation" +} \ No newline at end of file diff --git a/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.md b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.md new file mode 100644 index 00000000..e8ff02cb --- /dev/null +++ b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.md @@ -0,0 +1,3 @@ +{% set title = frappe.db.get_value("LMS Course", doc.course, "title") %} +{{ _('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")) }}
+{{ _("Please prepare well and be on time for the evaluations.") }}
diff --git a/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.py b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.py new file mode 100644 index 00000000..e1ada619 --- /dev/null +++ b/lms/lms/notification/certificate_request_reminder/certificate_request_reminder.py @@ -0,0 +1,5 @@ +import frappe + +def get_context(context): + # do your magic here + pass diff --git a/lms/lms/web_form/chapter/chapter.js b/lms/lms/web_form/chapter/chapter.js index 6d710013..da98bb5e 100644 --- a/lms/lms/web_form/chapter/chapter.js +++ b/lms/lms/web_form/chapter/chapter.js @@ -1,6 +1,9 @@ frappe.ready(function() { frappe.web_form.after_save = () => { - frappe.msgprint(__("Chapter has been saved successfully. Go back to the course and add this chapter to the chapters table.")) + frappe.show_alert({ + message:__("Chapter has been saved successfully. Go back to the course and add this chapter to the chapters table."), + indicator:'green' + }, 3); setTimeout(() => { window.location.href = `/courses/${frappe.web_form.doc.course}`; }, 3000); diff --git a/lms/lms/web_form/lesson/lesson.js b/lms/lms/web_form/lesson/lesson.js index ad73a38c..82214a05 100644 --- a/lms/lms/web_form/lesson/lesson.js +++ b/lms/lms/web_form/lesson/lesson.js @@ -49,10 +49,13 @@ const show_upload_modal = () => { }; const show_success_message = () => { - frappe.msgprint(__(`Lesson has been saved successfully. Go back to the chapter and add this lesson to the lessons table.`)); + frappe.show_alert({ + message: __(`Lesson has been saved successfully. Go back to the chapter and add this lesson to the lessons table.`), + indicator:'green' + }, 3); setTimeout(() => { window.location.href = `/courses/${this.course}`; - }, 2000); + }, 3000); }; const add_file_upload_component = () => { diff --git a/lms/lms/web_form/profile/profile.json b/lms/lms/web_form/profile/profile.json index 70dcf10d..a0a78e8d 100644 --- a/lms/lms/web_form/profile/profile.json +++ b/lms/lms/web_form/profile/profile.json @@ -22,7 +22,7 @@ "is_standard": 1, "login_required": 1, "max_attachment_size": 0, - "modified": "2022-02-23 09:32:37.352930", + "modified": "2022-06-06 10:38:37.784113", "modified_by": "Administrator", "module": "LMS", "name": "profile", @@ -83,7 +83,7 @@ "max_length": 0, "max_value": 0, "read_only": 0, - "reqd": 0, + "reqd": 1, "show_in_filter": 0 }, { @@ -244,7 +244,7 @@ "max_value": 0, "options": "Work Experience", "read_only": 0, - "reqd": 1, + "reqd": 0, "show_in_filter": 0 }, { diff --git a/lms/lms/widgets/CourseOutline.html b/lms/lms/widgets/CourseOutline.html index 567b8010..0dd138d5 100644 --- a/lms/lms/widgets/CourseOutline.html +++ b/lms/lms/widgets/CourseOutline.html @@ -29,13 +29,12 @@ {% if membership or lesson.include_in_preview %} -