LMS: Saving Course Activity
This commit is contained in:
parent
7d5e218155
commit
1a04f774d7
@ -46,11 +46,11 @@ class Student(Document):
|
|||||||
|
|
||||||
def get_course_enrollments(self):
|
def get_course_enrollments(self):
|
||||||
"""Returns a list of course enrollments linked with the current student"""
|
"""Returns a list of course enrollments linked with the current student"""
|
||||||
course_enrollments = frappe.get_list("Course Enrollment", filters={"student": self.name}, fields=['name'])
|
course_enrollments = frappe.get_list("Course Enrollment", filters={"student": self.name}, fields=['course', 'name'])
|
||||||
if not course_enrollments:
|
if not course_enrollments:
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
enrollments = [item['name'] for item in course_enrollments]
|
enrollments = {item['course']:item['name'] for item in course_enrollments}
|
||||||
return enrollments
|
return enrollments
|
||||||
|
|
||||||
def get_program_enrollments(self):
|
def get_program_enrollments(self):
|
||||||
|
|||||||
@ -17,66 +17,55 @@ const routes = [
|
|||||||
|
|
||||||
var store = {
|
var store = {
|
||||||
debug: true,
|
debug: true,
|
||||||
state: {
|
isLogin: false,
|
||||||
completedCourses: new Set(),
|
completedCourses: new Set(),
|
||||||
enrolledPrograms: new Set(),
|
enrolledPrograms: new Set(),
|
||||||
enrolledCourses: new Set(),
|
enrolledCourses: {},
|
||||||
currentEnrollment: '',
|
|
||||||
student: '',
|
|
||||||
isLogin: false
|
|
||||||
},
|
|
||||||
|
|
||||||
setCurrentEnrollment (enrollment) {
|
|
||||||
if (this.debug) console.log('setCourseEnrollment triggered with', enrollment)
|
|
||||||
this.state.currentEnrollment = enrollment
|
|
||||||
},
|
|
||||||
|
|
||||||
getCurrentEnrollment () {
|
|
||||||
if (this.debug) console.log('getCourseEnrollment triggered')
|
|
||||||
return this.state.currentEnrollment
|
|
||||||
},
|
|
||||||
|
|
||||||
addCompletedCourses (courseName){
|
addCompletedCourses (courseName){
|
||||||
if (this.debug) console.log('addCompletedCourses triggered with', courseName)
|
if (this.debug) console.log('addCompletedCourses triggered with', courseName)
|
||||||
this.state.completedCourses.add(courseName)
|
this.completedCourses.add(courseName)
|
||||||
},
|
},
|
||||||
|
|
||||||
checkCourseCompletion (courseName){
|
checkCourseCompletion (courseName){
|
||||||
return this.state.completedCourses.has(courseName)
|
return this.completedCourses.has(courseName)
|
||||||
},
|
},
|
||||||
|
|
||||||
checkProgramEnrollment (programName){
|
checkProgramEnrollment (programName){
|
||||||
return this.state.enrolledPrograms.has(programName)
|
return this.enrolledPrograms.has(programName)
|
||||||
|
},
|
||||||
|
|
||||||
|
checkCourseEnrollment (courseName){
|
||||||
|
course = new Set(Object.keys(enrolledCourses))
|
||||||
|
return course.has(courseName)
|
||||||
},
|
},
|
||||||
|
|
||||||
updateEnrolledPrograms (){
|
updateEnrolledPrograms (){
|
||||||
if (this.debug) console.log('Updating enrolledPrograms')
|
if (this.debug) console.log('Updating enrolledPrograms')
|
||||||
frappe.call("erpnext.www.academy.get_program_enrollments").then( r => {
|
frappe.call("erpnext.www.academy.get_program_enrollments").then( r => {
|
||||||
for(var ii=0; ii < r.message.length; ii++){
|
for(var ii=0; ii < r.message.length; ii++){
|
||||||
this.state.enrolledPrograms.add(r.message[ii])
|
this.enrolledPrograms.add(r.message[ii])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
if (this.debug) console.log('Updated State', this.state.enrolledPrograms)
|
if (this.debug) console.log('Updated State', this.enrolledPrograms)
|
||||||
},
|
},
|
||||||
|
|
||||||
updateEnrolledCourses (){
|
updateEnrolledCourses (){
|
||||||
if (this.debug) console.log('Updating enrolledCourses')
|
if (this.debug) console.log('Updating enrolledCourses')
|
||||||
frappe.call("erpnext.www.academy.get_course_enrollments").then( r => {
|
frappe.call("erpnext.www.academy.get_course_enrollments").then( r => {
|
||||||
for(var ii=0; ii < r.message.length; ii++){
|
this.enrolledCourses = r.message
|
||||||
this.state.enrolledCourses.add(r.message[ii])
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
if (this.debug) console.log('Updated State', this.state.enrolledCourses)
|
if (this.debug) console.log('Updated State', this.enrolledCourses)
|
||||||
},
|
},
|
||||||
|
|
||||||
updateCompletedCourses (){
|
updateCompletedCourses (){
|
||||||
if (this.debug) console.log('Updating States')
|
if (this.debug) console.log('Updating States')
|
||||||
frappe.call("erpnext.www.academy.get_completed_courses").then( r => {
|
frappe.call("erpnext.www.academy.get_completed_courses").then( r => {
|
||||||
for(var ii=0; ii < r.message.length; ii++){
|
for(var ii=0; ii < r.message.length; ii++){
|
||||||
this.state.completedCourses.add(r.message[ii])
|
this.completedCourses.add(r.message[ii])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
if (this.debug) console.log('Updated State', this.state.completedCourses)
|
if (this.debug) console.log('Updated State', this.completedCourses)
|
||||||
},
|
},
|
||||||
|
|
||||||
checkLogin (){
|
checkLogin (){
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="nav-buttons">
|
<div class="nav-buttons">
|
||||||
<button class='btn btn-outline-secondary' @click="$router.go(-1)">Back</button>
|
<button class='btn btn-outline-secondary' @click="$router.go(-1)">Back</button>
|
||||||
<button v-if="nextContent" class='btn btn-primary' @click="$router.push({ name: 'content', params: { course: $route.params.course, type:nextContentType, content:nextContent }})">Next</button>
|
<button v-if="nextContent" class='btn btn-primary' @click="goNext()">Next</button>
|
||||||
<button v-else class='btn btn-primary' @click="$router.push({ name: 'program', params: { code: $route.params.code}})">Finish Course</button>
|
<button v-else class='btn btn-primary' @click="$router.push({ name: 'program', params: { code: $route.params.code}})">Finish Course</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -9,7 +9,20 @@
|
|||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: ['nextContent', 'nextContentType'],
|
props: ['nextContent', 'nextContentType'],
|
||||||
name: 'ContentNavigation'
|
name: 'ContentNavigation',
|
||||||
|
methods: {
|
||||||
|
goNext() {
|
||||||
|
frappe.call({
|
||||||
|
method: "erpnext.www.academy.add_activity",
|
||||||
|
args: {
|
||||||
|
enrollment: this.$root.$data.enrolledCourses[this.$route.params.course],
|
||||||
|
content_type: this.$route.params.type,
|
||||||
|
content: this.$route.params.content
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.$router.push({ name: 'content', params: { course: this.$route.params.course, type:this.nextContentType, content:this.nextContent }})
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -170,4 +170,16 @@ def get_course_enrollments(email=frappe.session.user):
|
|||||||
student = frappe.get_doc("Student", get_student_id(email))
|
student = frappe.get_doc("Student", get_student_id(email))
|
||||||
return student.get_course_enrollments()
|
return student.get_course_enrollments()
|
||||||
except:
|
except:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def add_activity(enrollment, content_type, content):
|
||||||
|
activity = frappe.get_doc({
|
||||||
|
"doctype": "Course Activity",
|
||||||
|
"enrollment": enrollment,
|
||||||
|
"content_type": content_type,
|
||||||
|
"content": content,
|
||||||
|
"activity_date": frappe.utils.datetime.datetime.now()
|
||||||
|
})
|
||||||
|
activity.save()
|
||||||
|
frappe.db.commit()
|
||||||
Loading…
x
Reference in New Issue
Block a user