From 14e669435f04a720a6185640230eaff589bb6c4b Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Mon, 2 Feb 2026 13:14:16 +0530 Subject: [PATCH] fix: permissions cleanup --- .../src/components/UpcomingEvaluations.vue | 27 +++- frontend/src/pages/Assignments.vue | 3 - frontend/src/pages/Home/Home.vue | 11 +- frontend/src/pages/Home/StudentHome.vue | 144 +++++++++--------- lms/lms/api.py | 2 +- .../doctype/lms_assignment/lms_assignment.py | 15 -- .../lms_assignment_submission.py | 76 --------- .../lms_course_interest.py | 12 -- .../lms_course_review/lms_course_review.py | 13 -- lms/lms/doctype/lms_question/lms_question.py | 15 -- lms/lms/doctype/lms_quiz/lms_quiz.py | 14 -- lms/lms/doctype/lms_quiz/test_lms_quiz.py | 4 +- lms/lms/utils.py | 41 +---- 13 files changed, 105 insertions(+), 272 deletions(-) diff --git a/frontend/src/components/UpcomingEvaluations.vue b/frontend/src/components/UpcomingEvaluations.vue index dc93519d..295f8078 100644 --- a/frontend/src/components/UpcomingEvaluations.vue +++ b/frontend/src/components/UpcomingEvaluations.vue @@ -137,11 +137,12 @@ import { } from 'lucide-vue-next' import { inject, ref, getCurrentInstance, computed } from 'vue' import { formatTime } from '@/utils' -import { Button, createResource, call } from 'frappe-ui' +import { Button, createResource, createListResource, call } from 'frappe-ui' import EvaluationModal from '@/components/Modals/EvaluationModal.vue' import { Menu, MenuButton, MenuItems, MenuItem } from '@headlessui/vue' const dayjs = inject('$dayjs') +const user = inject('$user') const showEvalModal = ref(false) const app = getCurrentInstance() const { $dialog } = app.appContext.config.globalProperties @@ -165,12 +166,26 @@ const props = defineProps({ }, }) -const upcoming_evals = createResource({ - url: 'lms.lms.utils.get_upcoming_evals', - params: { - courses: props.courses.map((course) => course.course), - batch: props.batch, +const upcoming_evals = createListResource({ + doctype: 'LMS Certificate Request', + filters: { + course: props.courses?.length + ? ['in', props.courses.map((course) => course.course)] + : undefined, + batch_name: props.batch || undefined, + status: 'Upcoming', + member: user?.data?.name, + date: ['>=', dayjs().format('YYYY-MM-DD')], }, + fields: [ + 'name', + 'date', + 'start_time', + 'evaluator_name', + 'course_title', + 'google_meet_link', + ], + orderBy: 'date', auto: true, }) diff --git a/frontend/src/pages/Assignments.vue b/frontend/src/pages/Assignments.vue index 97f98a9e..d09ef9af 100644 --- a/frontend/src/pages/Assignments.vue +++ b/frontend/src/pages/Assignments.vue @@ -140,9 +140,6 @@ const assignmentFilter = computed(() => { if (typeFilter.value) { filters.type = typeFilter.value } - if (!user.data?.is_moderator) { - filters.owner = user.data?.email - } return filters }) diff --git a/frontend/src/pages/Home/Home.vue b/frontend/src/pages/Home/Home.vue index e4dcd25d..8bbe7e41 100644 --- a/frontend/src/pages/Home/Home.vue +++ b/frontend/src/pages/Home/Home.vue @@ -60,8 +60,15 @@ const currentTab = ref<'student' | 'instructor'>('instructor') const showStreakModal = ref(false) onMounted(() => { - call('lms.lms.utils.get_upcoming_evals').then((data: any) => { - evalCount.value = data.length + call('frappe.client.get_count', { + doctype: 'LMS Certificate Request', + filters: { + member: user?.data?.name, + status: 'Upcoming', + date: ['>=', inject('$dayjs')().format('YYYY-MM-DD')], + }, + }).then((data: any) => { + evalCount.value = data }) }) diff --git a/frontend/src/pages/Home/StudentHome.vue b/frontend/src/pages/Home/StudentHome.vue index baab0447..40f66849 100644 --- a/frontend/src/pages/Home/StudentHome.vue +++ b/frontend/src/pages/Home/StudentHome.vue @@ -1,5 +1,77 @@