LMS: Saving Course Activity

This commit is contained in:
scmmishra 2018-11-03 20:43:59 +05:30 committed by Aditya Hase
parent 7d5e218155
commit 1a04f774d7
4 changed files with 48 additions and 34 deletions

View File

@ -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):

View File

@ -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 (){

View File

@ -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>

View File

@ -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()