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):
|
||||
"""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:
|
||||
return None
|
||||
else:
|
||||
enrollments = [item['name'] for item in course_enrollments]
|
||||
enrollments = {item['course']:item['name'] for item in course_enrollments}
|
||||
return enrollments
|
||||
|
||||
def get_program_enrollments(self):
|
||||
|
@ -17,66 +17,55 @@ const routes = [
|
||||
|
||||
var store = {
|
||||
debug: true,
|
||||
state: {
|
||||
completedCourses: new Set(),
|
||||
enrolledPrograms: new Set(),
|
||||
enrolledCourses: new Set(),
|
||||
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
|
||||
},
|
||||
isLogin: false,
|
||||
completedCourses: new Set(),
|
||||
enrolledPrograms: new Set(),
|
||||
enrolledCourses: {},
|
||||
|
||||
addCompletedCourses (courseName){
|
||||
if (this.debug) console.log('addCompletedCourses triggered with', courseName)
|
||||
this.state.completedCourses.add(courseName)
|
||||
this.completedCourses.add(courseName)
|
||||
},
|
||||
|
||||
checkCourseCompletion (courseName){
|
||||
return this.state.completedCourses.has(courseName)
|
||||
return this.completedCourses.has(courseName)
|
||||
},
|
||||
|
||||
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 (){
|
||||
if (this.debug) console.log('Updating enrolledPrograms')
|
||||
frappe.call("erpnext.www.academy.get_program_enrollments").then( r => {
|
||||
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 (){
|
||||
if (this.debug) console.log('Updating enrolledCourses')
|
||||
frappe.call("erpnext.www.academy.get_course_enrollments").then( r => {
|
||||
for(var ii=0; ii < r.message.length; ii++){
|
||||
this.state.enrolledCourses.add(r.message[ii])
|
||||
}
|
||||
this.enrolledCourses = r.message
|
||||
})
|
||||
if (this.debug) console.log('Updated State', this.state.enrolledCourses)
|
||||
if (this.debug) console.log('Updated State', this.enrolledCourses)
|
||||
},
|
||||
|
||||
updateCompletedCourses (){
|
||||
if (this.debug) console.log('Updating States')
|
||||
frappe.call("erpnext.www.academy.get_completed_courses").then( r => {
|
||||
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 (){
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="nav-buttons">
|
||||
<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>
|
||||
</div>
|
||||
</template>
|
||||
@ -9,7 +9,20 @@
|
||||
<script>
|
||||
export default {
|
||||
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>
|
||||
|
||||
|
@ -171,3 +171,15 @@ def get_course_enrollments(email=frappe.session.user):
|
||||
return student.get_course_enrollments()
|
||||
except:
|
||||
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