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>&nbsp;&nbsp; -->
-            <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