From 7f2821f639f5bfaec2cfb72fcf8fa5a65e0f70e8 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Thu, 30 May 2024 12:16:01 +0530 Subject: [PATCH] fix: evaluation related issues --- .../src/components/Modals/EvaluationModal.vue | 2 +- frontend/src/pages/ProfileEvaluator.vue | 4 +-- .../course_evaluator/course_evaluator.py | 4 +-- .../lms_certificate_request.py | 30 ++++++++++++++++--- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/Modals/EvaluationModal.vue b/frontend/src/components/Modals/EvaluationModal.vue index 1921ecae..825e38ed 100644 --- a/frontend/src/components/Modals/EvaluationModal.vue +++ b/frontend/src/components/Modals/EvaluationModal.vue @@ -116,7 +116,7 @@ function submitEvaluation(close) { if (!evaluation.start_time) { return 'Please select a slot.' } - if (dayjs(evaluation.date).isSameOrBefore(dayjs(), 'day')) { + if (dayjs(evaluation.date).isBefore(dayjs(), 'day')) { return 'Please select a future date.' } if (dayjs(evaluation.date).isAfter(dayjs(props.endDate), 'day')) { diff --git a/frontend/src/pages/ProfileEvaluator.vue b/frontend/src/pages/ProfileEvaluator.vue index 45172128..d897512e 100644 --- a/frontend/src/pages/ProfileEvaluator.vue +++ b/frontend/src/pages/ProfileEvaluator.vue @@ -84,7 +84,7 @@ type="date" :label="__('From')" v-model="from" - @change.stop=" + @blur=" () => { updateUnavailability.submit({ field: 'unavailable_from', @@ -97,7 +97,7 @@ type="date" :label="__('To')" v-model="to" - @change.stop=" + @blur=" () => { updateUnavailability.submit({ field: 'unavailable_to', diff --git a/lms/lms/doctype/course_evaluator/course_evaluator.py b/lms/lms/doctype/course_evaluator/course_evaluator.py index ad89086d..93be1b08 100644 --- a/lms/lms/doctype/course_evaluator/course_evaluator.py +++ b/lms/lms/doctype/course_evaluator/course_evaluator.py @@ -6,7 +6,7 @@ from frappe import _ from frappe.model.document import Document from lms.lms.utils import get_evaluator from datetime import datetime -from frappe.utils import get_time +from frappe.utils import get_time, getdate class CourseEvaluator(Document): @@ -18,7 +18,7 @@ class CourseEvaluator(Document): if ( self.unavailable_from and self.unavailable_to - and self.unavailable_from >= self.unavailable_to + and getdate(self.unavailable_from) >= getdate(self.unavailable_to) ): frappe.throw(_("Unavailable From Date cannot be greater than Unavailable To Date")) 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 426d872a..2484ba24 100644 --- a/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py +++ b/lms/lms/doctype/lms_certificate_request/lms_certificate_request.py @@ -5,7 +5,15 @@ import frappe from frappe import _ from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc -from frappe.utils import format_date, format_time, getdate, add_to_date, get_datetime +from frappe.utils import ( + format_date, + format_time, + getdate, + add_to_date, + get_datetime, + nowtime, + get_time, +) from lms.lms.utils import get_evaluator @@ -54,13 +62,23 @@ class LMSCertificateRequest(Document): def validate_if_existing_requests(self): existing_requests = frappe.get_all( "LMS Certificate Request", - {"member": self.member, "course": self.course, "name": ["!=", self.name]}, + { + "member": self.member, + "course": self.course, + "name": ["!=", self.name], + }, ["date", "start_time", "course"], ) for req in existing_requests: - - if req.date == getdate(self.date) or getdate() <= getdate(req.date): + if ( + req.date == getdate(self.date) + or getdate() < getdate(req.date) + or ( + getdate() == getdate(req.date) + and getdate(self.start_time) < getdate(req.start_time) + ) + ): course_title = frappe.db.get_value("LMS Course", req.course, "title") frappe.throw( _("You already have an evaluation on {0} at {1} for the course {2}.").format( @@ -69,6 +87,10 @@ class LMSCertificateRequest(Document): course_title, ) ) + if getdate() == getdate(self.date) and get_time(self.start_time) < get_time( + nowtime() + ): + frappe.throw(_("You cannot schedule evaluations for past slots.")) def validate_evaluation_end_date(self): if self.batch_name: