From d688d5cdd9d25cc4a633775b4f0a0f45f81dc812 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Fri, 29 Nov 2024 15:53:50 +0530 Subject: [PATCH] fix: program title rename and program overlay --- frontend/src/pages/ProgramForm.vue | 28 ++++++------------- frontend/src/pages/Programs.vue | 32 +++++++++++++++++----- lms/lms/doctype/lms_program/lms_program.py | 6 +--- lms/lms/utils.py | 14 ++++++++-- 4 files changed, 47 insertions(+), 33 deletions(-) diff --git a/frontend/src/pages/ProgramForm.vue b/frontend/src/pages/ProgramForm.vue index b9a74790..8c28da22 100644 --- a/frontend/src/pages/ProgramForm.vue +++ b/frontend/src/pages/ProgramForm.vue @@ -176,6 +176,7 @@ import { Breadcrumbs, Button, + call, createDocumentResource, Dialog, FormControl, @@ -305,25 +306,14 @@ const updateOrder = (e) => { } const saveProgram = () => { - program.setValue.submit( - { - title: program.doc.title, - program_courses: program.doc.program_courses, - program_members: program.doc.program_members, - }, - { - onSuccess(data) { - router.push({ - name: 'ProgramsForm', - params: { programName: data.name }, - }) - showToast(__('Success'), __('Program saved successfully'), 'check') - }, - onError(err) { - showToast('Error', err.messages?.[0] || err, 'x') - }, - } - ) + call('frappe.model.rename_doc.update_document_title', { + doctype: 'LMS Program', + docname: program.doc.name, + name: program.doc.title, + }).then((data) => { + console.log(data) + router.push({ name: 'ProgramForm', params: { programName: data } }) + }) } const courseColumns = computed(() => { diff --git a/frontend/src/pages/Programs.vue b/frontend/src/pages/Programs.vue index 1e963abc..ef5137bd 100644 --- a/frontend/src/pages/Programs.vue +++ b/frontend/src/pages/Programs.vue @@ -61,12 +61,23 @@ v-if="program.courses?.length" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 mt-5" > - +
+ +
+
+ +
+
{{ __('No courses in this program') }} @@ -119,7 +130,7 @@ import { FormControl, } from 'frappe-ui' import { computed, inject, onMounted, ref } from 'vue' -import { BookOpen, Edit, Plus } from 'lucide-vue-next' +import { BookOpen, Edit, Plus, LockKeyhole } from 'lucide-vue-next' import CourseCard from '@/components/CourseCard.vue' import { useRouter } from 'vue-router' import { showToast, singularize } from '@/utils' @@ -189,6 +200,13 @@ const enrollMember = (program, course) => { }) } +const lockCourse = (course) => { + if (user.data?.is_moderator || user.data?.is_instructor) return false + if (course.membership) return false + if (course.eligible) return false + return true +} + const breadbrumbs = computed(() => [ { label: 'Programs', diff --git a/lms/lms/doctype/lms_program/lms_program.py b/lms/lms/doctype/lms_program/lms_program.py index 40a471a0..621ab61c 100644 --- a/lms/lms/doctype/lms_program/lms_program.py +++ b/lms/lms/doctype/lms_program/lms_program.py @@ -4,13 +4,13 @@ import frappe from frappe import _ from frappe.model.document import Document +from frappe.model.rename_doc import update_document_title class LMSProgram(Document): def validate(self): self.validate_program_courses() self.validate_program_members() - self.validate_title() def validate_program_courses(self): courses = [row.course for row in self.program_courses] @@ -31,7 +31,3 @@ class LMSProgram(Document): frappe.bold(next(iter(duplicates))) ) ) - - def validate_title(self): - if self.has_value_changed("title"): - frappe.rename_doc(self.doctype, self.name, self.title) diff --git a/lms/lms/utils.py b/lms/lms/utils.py index 68decd51..933d626d 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -1771,8 +1771,18 @@ def get_programs(): "LMS Program Course", {"parent": program.name}, ["course"], order_by="idx" ) program.courses = [] - for course in program_courses: - program.courses.append(get_course_details(course.course)) + previous_progress = 0 + for i, course in enumerate(program_courses): + details = get_course_details(course.course) + if i == 0: + details.eligible = True + elif previous_progress == 100: + details.eligible = True + else: + details.eligible = False + + previous_progress = details.membership.progress if details.membership else 0 + program.courses.append(details) program.members = frappe.db.count("LMS Program Member", {"parent": program.name})