More Bug fixes UI and Permissions
diff --git a/erpnext/education/doctype/student/student.json b/erpnext/education/doctype/student/student.json
index 2e055bb..7205273 100644
--- a/erpnext/education/doctype/student/student.json
+++ b/erpnext/education/doctype/student/student.json
@@ -1188,7 +1188,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2018-11-07 22:11:03.824250",
+ "modified": "2018-11-08 12:26:01.047163",
"modified_by": "Administrator",
"module": "Education",
"name": "Student",
diff --git a/erpnext/education/doctype/student/student.py b/erpnext/education/doctype/student/student.py
index 69959ea..d23e0a0 100644
--- a/erpnext/education/doctype/student/student.py
+++ b/erpnext/education/doctype/student/student.py
@@ -55,7 +55,7 @@
def get_program_enrollments(self):
"""Returns a list of course enrollments linked with the current student"""
- program_enrollments = frappe.get_list("Program Enrollment", filters={"student": self.name}, fields=['program'])
+ program_enrollments = frappe.get_all("Program Enrollment", filters={"student": self.name}, fields=['program'])
if not program_enrollments:
return None
else:
@@ -79,7 +79,7 @@
"program": program_name,
"enrollment_date": frappe.utils.datetime.datetime.now()
})
- enrollment.save()
+ enrollment.save(ignore_permissions=True)
enrollment.submit()
frappe.db.commit()
return enrollment
@@ -92,7 +92,7 @@
"program_enrollment": program_enrollment,
"enrollment_date": enrollment_date
})
- enrollment.save()
+ enrollment.save(ignore_permissions=True)
frappe.db.commit()
def get_timeline_data(doctype, name):
diff --git a/erpnext/public/js/education/web-academy.js b/erpnext/public/js/education/web-academy.js
index e6b48ec..8088a50 100644
--- a/erpnext/public/js/education/web-academy.js
+++ b/erpnext/public/js/education/web-academy.js
@@ -48,8 +48,10 @@
email: frappe.session.user
}
}).then( r => {
- for(var ii=0; ii < r.message.length; ii++){
- this.enrolledPrograms.add(r.message[ii])
+ if(r.message){
+ for(var ii=0; ii < r.message.length; ii++){
+ this.enrolledPrograms.add(r.message[ii])
+ }
}
})
if (this.debug) console.log('Updated State', this.enrolledPrograms)
@@ -76,8 +78,10 @@
email: frappe.session.user
}
}).then( r => {
- for(var ii=0; ii < r.message.length; ii++){
- this.completedCourses.add(r.message[ii])
+ if(r.message){
+ for(var ii=0; ii < r.message.length; ii++){
+ this.completedCourses.add(r.message[ii])
+ }
}
})
if (this.debug) console.log('Updated State', this.completedCourses)
diff --git a/erpnext/public/js/education/web-academy/components/AcademyProgramCard.vue b/erpnext/public/js/education/web-academy/components/AcademyProgramCard.vue
index 6ddf152..605dec2 100644
--- a/erpnext/public/js/education/web-academy/components/AcademyProgramCard.vue
+++ b/erpnext/public/js/education/web-academy/components/AcademyProgramCard.vue
@@ -10,8 +10,7 @@
</div>
<div class='card-footer text-right'>
<!-- <a class='video-btn btn btn-secondary btn-sm' data-toggle="modal" data-src=" insert jinja stuff here " data-target="#myModal">Watch Intro</a> -->
- <a v-if="this.$root.$data.checkProgramEnrollment(program.name)" class='btn btn-secondary btn-sm' @click="$router.push('/Program/' + program.name)">Start Course</a>
- <a v-else-if="this.$root.$data.isLogin" class='btn btn-secondary btn-sm' @click="enroll()">Enroll Now</a>
+ <a v-if="this.$root.$data.isLogin" class='btn btn-secondary btn-sm' @click="primaryAction()">{{ buttonName }}</a>
<a v-else class='btn btn-secondary btn-sm' href="/login#signup">Sign Up</a>
</div>
</div>
@@ -37,6 +36,16 @@
})
},
methods: {
+ primaryAction(){
+ if(this.$root.$data.isLogin){
+ if(this.$root.$data.checkProgramEnrollment(program_code)){
+ this.$router.push('/Program/' + program.name)
+ }
+ else {
+ this.enroll()
+ }
+ }
+ }
enroll() {
frappe.call({
method: "erpnext.www.academy.enroll_in_program",
@@ -45,6 +54,20 @@
student_email_id: frappe.session.user
}
})
+ this.$root.$data.enrolledPrograms.add(this.program_code)
+ this.$root.$data.updateEnrolledPrograms()
+ }
+ }
+ computed: {
+ buttonName() {
+ if(this.$root.$data.isLogin){
+ if(this.$root.$data.checkProgramEnrollment(program_code)){
+ return "Start Course"
+ }
+ else {
+ return "Enroll"
+ }
+ }
}
}
};
diff --git a/erpnext/www/academy.py b/erpnext/www/academy.py
index 4aec614..94a0a71 100644
--- a/erpnext/www/academy.py
+++ b/erpnext/www/academy.py
@@ -122,9 +122,12 @@
def get_continue_data(program_name):
program = frappe.get_doc("Program", program_name)
courses = program.get_all_children()
- continue_data = get_starting_content(courses[0].course)
- continue_data['course'] = courses[0].course
- return continue_data
+ try:
+ continue_data = get_starting_content(courses[0].course)
+ continue_data['course'] = courses[0].course
+ return continue_data
+ except:
+ return None
def create_student(student_name=frappe.session.user):
student = frappe.get_doc({
@@ -132,7 +135,7 @@
"first_name": student_name,
"student_email_id": student_name,
})
- student.save()
+ student.save(ignore_permissions=True)
frappe.db.commit()
return student_name
@@ -157,7 +160,8 @@
:param user: a user email address
"""
try:
- return frappe.get_all('Student', filters={'student_email_id': email}, fields=['name'])[0].name
+ student_id = frappe.db.get_all("Student", {"student_email_id": email}, ["name"])[0].name
+ return student_id
except IndexError:
return None