UI fixes for course card
diff --git a/erpnext/public/js/education/lms/components/CourseCard.vue b/erpnext/public/js/education/lms/components/CourseCard.vue
index 31ca773..921ad9f 100644
--- a/erpnext/public/js/education/lms/components/CourseCard.vue
+++ b/erpnext/public/js/education/lms/components/CourseCard.vue
@@ -33,8 +33,16 @@
 import AButton from './Button.vue';
 
 export default {
-    props: ['course', 'courseMeta', 'program_name'],
+    props: ['course', 'program_name'],
     name: "CourseCard",
+    data() {
+        return {
+            courseMeta: {}
+        }
+    },
+    mounted() {
+        this.getCourseMeta().then(data => this.courseMeta = data)
+    },
     components: {
         AButton
     },
@@ -68,7 +76,12 @@
             if(content_type == 'Video') return 'fa fa-play'
             if(content_type == 'Article') return 'fa fa-file-text-o'
             if(content_type == 'Quiz') return 'fa fa-question-circle-o'
-        }
+        },
+        getCourseMeta() {
+			return lms.call('get_course_meta', {
+					course_name: this.course.name
+				})
+		}
     }
 };
 </script>
diff --git a/erpnext/public/js/education/lms/pages/ProgramPage.vue b/erpnext/public/js/education/lms/pages/ProgramPage.vue
index 1c90f73..65bb9a6 100644
--- a/erpnext/public/js/education/lms/pages/ProgramPage.vue
+++ b/erpnext/public/js/education/lms/pages/ProgramPage.vue
@@ -3,7 +3,7 @@
 	<TopSection v-bind:title="program.program_name" v-bind:description="program.description">
     </TopSection>
 	<CardList :title="'Courses'" :description="''">
-        <CourseCard slot="card-list-slot" v-for="course in course_data" :course="course.course" :program_name="program_name" :courseMeta="course.meta" :key="course.course.name + course.meta.flag"/>
+        <CourseCard slot="card-list-slot" v-for="course in courseData" :course="course" :program_name="program_name" :key="course.name"/>
     </CardList>
 </div>
 </template>
@@ -24,7 +24,7 @@
 	data() {
 		return {
 			program: {},
-			course_data: []
+			courseData: [],
 		}
 	},
     beforeMount() {
@@ -32,11 +32,10 @@
     },
 	mounted() {
 		this.getProgramDetails().then(data => this.program = data);
-		this.getCourses().then(data => this.course_data = data);
-		
+		this.getCourses().then(data => this.courseData = data);
 		// lms.on(`course-completed`, (course_name) => {
-		// 	const course = this.course_data.findIndex(c => c.name === course_name);
-		// 	this.course_data[course].completed = true;
+		// 	const course = this.courseData.findIndex(c => c.name === course_name);
+		// 	this.courseData[course].completed = true;
 		// });
 	},
 	methods: {
diff --git a/erpnext/www/lms.py b/erpnext/www/lms.py
index 01fb323..10d2948 100644
--- a/erpnext/www/lms.py
+++ b/erpnext/www/lms.py
@@ -64,8 +64,7 @@
 def get_courses(program_name):
 	program = frappe.get_doc('Program', program_name)
 	courses = program.get_course_list()
-	course_data = [{'meta':get_course_meta(utils.get_course_enrollment(item.name)), 'course':item} for item in courses]
-	return course_data
+	return courses
 
 @frappe.whitelist()
 def get_next_content(content, content_type, course):
@@ -171,7 +170,7 @@
 	course = frappe.get_doc('Course', course_enrollment.course)
 	contents = course.get_contents()
 	progress = []
-	for index, content in enumerate(contents):
+	for content in contents:
 		if content.doctype in ('Article', 'Video'):
 			status = check_content_completion(content.name, content.doctype, course_enrollment.name)
 			progress.append({'content': content.name, 'content_type': content.doctype, 'is_complete': status})
@@ -192,16 +191,18 @@
 	status = bool(len(attempts) == quiz.max_attempts)
 	score = None
 	result = None
-	if attempts and quiz.grading_basis == 'Last Highest Score':
-		attempts = sorted(attempts, key = lambda i: int(i.score), reverse=True)
-	score = attempts[0]['score']
-	result = attempts[0]['status']
-	if result == 'Pass':
-		status = True
+	if attempts:
+		if quiz.grading_basis == 'Last Highest Score':
+			attempts = sorted(attempts, key = lambda i: int(i.score), reverse=True)
+		score = attempts[0]['score']
+		result = attempts[0]['status']
+		if result == 'Pass':
+			status = True
 	return status, score, result
-
-
-def get_course_meta(course_enrollment):
+	
+@frappe.whitelist()
+def get_course_meta(course_name):
+	course_enrollment = utils.get_course_enrollment(course_name)
 	# course_enrollment = frappe.get_doc("Course Enrollment", course_enrollment_name)
 	progress = get_course_progress(course_enrollment)
 	count = sum([act['is_complete'] for act in progress])