diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index a88f66b..641664c 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -135,7 +135,7 @@
 
 def check_quiz_completion(quiz, enrollment_name):
 	attempts = frappe.get_all("Quiz Activity", filters={'enrollment': enrollment_name, 'quiz': quiz.name}, fields=["name", "activity_date", "score", "status"])
-	status = bool(len(attempts) == quiz.max_attempts)
+	status = False if quiz.max_attempts == 0 else bool(len(attempts) == quiz.max_attempts)
 	score = None
 	result = None
 	if attempts:
diff --git a/erpnext/public/js/education/lms/components/Quiz.vue b/erpnext/public/js/education/lms/components/Quiz.vue
index c0d6537..0a6199a 100644
--- a/erpnext/public/js/education/lms/components/Quiz.vue
+++ b/erpnext/public/js/education/lms/components/Quiz.vue
@@ -10,21 +10,21 @@
             <hr>
             <div id="quiz" :name="content">
                 <div id="quiz-body">
-					<component v-for="question in quizData" :key="question.name" v-bind:is="question.type" :question="question" @updateResponse="updateResponse"></component>
+					<component v-for="question in quizData" :key="question.name" v-bind:is="question.type" :question="question" @updateResponse="updateResponse" :isDisabled="isDisabled"></component>
                 </div>
                 <div class="mt-3">
                     <div>
-                        <div v-if="submitted" id="post-quiz-actions" class="row">
+                        <div v-if="isDisabled || submitted" id="post-quiz-actions" class="row">
                             <div class="col-md-8 text-left">
-                                <h3>Your Score: <span id="result">{{ score }}</span></h3>
+                                <span v-html="message"></span>
                             </div>
                             <div class="col-md-4 text-right">
-                            	<slot></slot>
+                                <slot></slot>
                             </div>
                         </div>
                         <div v-else id="quiz-actions" class="text-right">
-                            <button class='btn btn-outline-secondary' type="reset">Reset</button>
-                            <button class='btn btn-primary' @click="submitQuiz" type="button">Submit</button>
+                            <button class='btn btn-outline-secondary' type="reset" :disabled="isDisabled">Reset</button>
+                            <button class='btn btn-primary' @click="submitQuiz" type="button" :disabled="isDisabled">Submit</button>
                         </div>
                     </div>
                 </div>
@@ -50,12 +50,16 @@
     		quizData: '',
     		quizResponse: {},
             score: '',
-            submitted: false
+            submitted: false,
+            isDisabled: false,
+            quizStatus: {},
     	}
     },
     mounted() {
     	this.getQuizWithoutAnswers().then(data => {
-    			this.quizData = data
+    		this.quizData = data.quizData
+            this.quizStatus = data.status
+            this.isDisabled = data.status.is_complete
     	});
     },
     components: {
@@ -67,6 +71,7 @@
             return lms.call("get_quiz_without_answers",
                 {
                     quiz_name: this.content,
+                    course_name: this.$route.params.course_name
                 }
     	    )
         },
@@ -81,8 +86,8 @@
                     course: this.$route.params.course_name
 				}
             ).then(data => {
-                this.score = data,
-                this.submitted = true,
+                this.score = data
+                this.submitted = true
                 this.quizResponse = null
 			});
 		}
@@ -96,6 +101,16 @@
             return 'QuizSingleChoice'
         }
       },
+      message: function() {
+        if(this.submitted) {
+            return '<h3>Your Score: <span id="result">'+ this.score +'</span></h3>'
+        }
+        let message = '<h4>You have exhausted all attempts for this quiz.</h4>'
+        if(this.quizStatus.result == 'Pass') {
+            message = "<h4>You have successfully completed this quiz.</h4>Score: " + this.quizStatus.score
+        }
+        return message
+      }
     },
 };
 </script>
diff --git a/erpnext/public/js/education/lms/components/Quiz/QuizMultipleChoice.vue b/erpnext/public/js/education/lms/components/Quiz/QuizMultipleChoice.vue
index 10c35f5..338b1ac 100644
--- a/erpnext/public/js/education/lms/components/Quiz/QuizMultipleChoice.vue
+++ b/erpnext/public/js/education/lms/components/Quiz/QuizMultipleChoice.vue
@@ -3,7 +3,7 @@
     <h5>{{ question.question }}</h5>
     <div class="options ml-2">
         <div v-for="option in question.options" :key="option.name" class="form-check pb-1">
-            <input v-model="checked" class="form-check-input" type="checkbox" :name="question.name" :id="option.name" :value="option.name" @change="emitResponse(question.name, option.name)">
+            <input v-model="checked" class="form-check-input" type="checkbox" :name="question.name" :id="option.name" :value="option.name" @change="emitResponse(question.name, option.name)" :disabled="isDisabled">
             <label class="form-check-label" :for="option.name">
                 {{ option.option }}
             </label>
@@ -14,7 +14,7 @@
 
 <script>
 export default {
-	props: ['question'],
+	props: ['question', 'isDisabled'],
 	name: 'QuizSingleChoice',
     data() {
         return {
diff --git a/erpnext/public/js/education/lms/components/Quiz/QuizSingleChoice.vue b/erpnext/public/js/education/lms/components/Quiz/QuizSingleChoice.vue
index 560f3f0..235cbce 100644
--- a/erpnext/public/js/education/lms/components/Quiz/QuizSingleChoice.vue
+++ b/erpnext/public/js/education/lms/components/Quiz/QuizSingleChoice.vue
@@ -3,7 +3,7 @@
     <h5>{{ question.question }}</h5>
     <div class="options ml-2">
         <div v-for="option in question.options" :key="option.name" class="form-check pb-1">
-            <input class="form-check-input" type="radio" :name="question.name" :id="option.name" :value="option.name" @change="emitResponse(question.name, option.name)">
+            <input class="form-check-input" type="radio" :name="question.name" :id="option.name" :value="option.name" @change="emitResponse(question.name, option.name)" :disabled="isDisabled">
             <label class="form-check-label" :for="option.name">
                 {{ option.option }}
             </label>
@@ -14,7 +14,7 @@
 
 <script>
 export default {
-	props: ['question'],
+	props: ['question', 'isDisabled'],
 	name: 'QuizSingleChoice',
 	methods: {
 		emitResponse(q, o) {
diff --git a/erpnext/www/lms.py b/erpnext/www/lms.py
index 6c3c4c2..9ccafa9 100644
--- a/erpnext/www/lms.py
+++ b/erpnext/www/lms.py
@@ -93,15 +93,20 @@
 		return None
 
 @frappe.whitelist()
-def get_quiz_without_answers(quiz_name):
+def get_quiz_without_answers(quiz_name, course_name):
 	try:
-		quiz = frappe.get_doc("Quiz", quiz_name).get_questions()
-		quiz_output = [{'name':question.name, 'question':question.question, 'type': question.type, 'options':[{'name': option.name, 'option':option.option} for option in question.options]} for question in quiz]
-		return quiz_output
+		quiz = frappe.get_doc("Quiz", quiz_name)
+		questions = quiz.get_questions()
 	except:
 		frappe.throw("Quiz {0} does not exist".format(quiz_name))
 		return None
 
+	enrollment = utils.get_course_enrollment(course_name).name
+	quiz_status = {}
+	quiz_status['is_complete'], quiz_status['score'], quiz_status['result']  = utils.check_quiz_completion(quiz, enrollment)
+	quiz_output = [{'name':question.name, 'question':question.question, 'type': question.type, 'options':[{'name': option.name, 'option':option.option} for option in question.options]} for question in questions]
+	return { 'quizData': quiz_output, 'status': quiz_status}
+
 @frappe.whitelist()
 def evaluate_quiz(course, quiz_response, quiz_name):
 	"""LMS Function: Evaluates a simple multiple choice quiz.
