diff --git a/erpnext/www/lms.py b/erpnext/www/lms.py
index 6624c46..dc3b671 100644
--- a/erpnext/www/lms.py
+++ b/erpnext/www/lms.py
@@ -227,28 +227,28 @@
 	import math
 	program = frappe.get_doc("Program", program_name)
 	program_enrollment = utils.get_program_enrollment(program_name)
-	program_meta = {}
+	program_progress = {}
 	if not program_enrollment:
 		return None
 	else:
 		progress = []
 		for course in program.get_all_children():
-			meta = get_student_course_details(course.course, program_name)
+			course_progress = get_student_course_details(course.course, program_name)
 			is_complete = False
-			if meta['flag'] == "Completed":
+			if course_progress['flag'] == "Completed":
 				is_complete = True
 			progress.append({'course_name': course.course_name, 'name': course.course, 'is_complete': is_complete})
 
-		program_meta['progress'] = progress
-		program_meta['name'] = program_name
-		program_meta['program'] = program.program_name
+		program_progress['progress'] = progress
+		program_progress['name'] = program_name
+		program_progress['program'] = program.program_name
 
 		try:
-			program_meta['percentage'] = math.ceil((sum([item['is_complete'] for item in progress] * 100)/len(progress)))
+			program_progress['percentage'] = math.ceil((sum([item['is_complete'] for item in progress] * 100)/len(progress)))
 		except ZeroDivisionError:
-			program_meta['percentage'] = 0
+			program_progress['percentage'] = 0
 
-		return program_meta
+		return program_progress
 
 @frappe.whitelist()
 def get_joining_date():
@@ -262,7 +262,7 @@
 def get_quiz_progress(program_name):
 	program = frappe.get_doc("Program", program_name)
 	program_enrollment = utils.get_program_enrollment(program_name)
-	quiz_meta = frappe._dict()
+	quiz_progress = frappe._dict()
 	student = utils.get_current_student()
 	if not program_enrollment:
 		return None
@@ -270,23 +270,23 @@
 		progress_list = []
 		for course in program.get_all_children():
 			course_enrollment = utils.get_course_enrollment(course.course)
-			meta = course_enrollment.get_progress(student)
-			for progress_item in meta:
+			course_progress = course_enrollment.get_progress(student)
+			for progress_item in course_progress:
 				if progress_item['content_type'] == "Quiz":
 					progress_item['course'] = course.course_name
 					progress_list.append(progress_item)
 		if not progress_list:
 			return None
-		quiz_meta.quiz_attempt = progress_list
-		quiz_meta.name = program_name
-		quiz_meta.program = program.program_name
-		return quiz_meta
+		quiz_progress.quiz_attempt = progress_list
+		quiz_progress.name = program_name
+		quiz_progress.program = program.program_name
+		return quiz_progress
 
 
 @frappe.whitelist(allow_guest=True)
 def get_course_details(course_name):
 	try:
-		course = frappe.get_doc('Course', course_name)
+		course = sfrappe.get_doc('Course', course_name)
 		return course
 	except:
 		return None
