LMS: Course Completion Status Working
diff --git a/erpnext/education/doctype/course_enrollment/course_enrollment.json b/erpnext/education/doctype/course_enrollment/course_enrollment.json
index 686f2c1..47bb973 100644
--- a/erpnext/education/doctype/course_enrollment/course_enrollment.json
+++ b/erpnext/education/doctype/course_enrollment/course_enrollment.json
@@ -144,6 +144,40 @@
    "set_only_once": 0, 
    "translatable": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_in_quick_entry": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "0", 
+   "fieldname": "completed", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Completed", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "translatable": 0, 
+   "unique": 0
   }
  ], 
  "has_web_view": 0, 
@@ -156,7 +190,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-10-19 17:46:46.595749", 
+ "modified": "2018-10-24 16:05:02.961543", 
  "modified_by": "Administrator", 
  "module": "Education", 
  "name": "Course Enrollment", 
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index c6ca6ef..f298362 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -99,6 +99,8 @@
 
 @frappe.whitelist()
 def add_activity(content_type, content, course, program):
+	if content_type == "Quiz":
+		pass
 	enrollment = get_course_enrollment(course, frappe.session.user)
 	if check_activity_exists(enrollment['name'], content_type, content):
 		pass
@@ -167,4 +169,18 @@
 		return frappe.get_all('Student', filters={'student_email_id': email}, fields=['name'])[0].name
 	except IndexError:
 		frappe.throw("Student with email {0} does not exist".format(email))
+		return None
+
+@frappe.whitelist()
+def mark_course_complete(course):
+	try:
+		enrollment_name = get_course_enrollment(course, frappe.session.user)
+		enrollment = frappe.get_doc("Course Enrollment", enrollment_name)
+		enrollment.completed = 1
+		enrollment.save()
+		pass
+	except:
+		import traceback
+		traceback.print_exc()
+		frappe.throw("The user is not enrolled for the course {course}".format(course=course))
 		return None
\ No newline at end of file
diff --git a/erpnext/www/lms/course.html b/erpnext/www/lms/course.html
index 11b134d..799480b 100644
--- a/erpnext/www/lms/course.html
+++ b/erpnext/www/lms/course.html
@@ -1,13 +1,8 @@
 {% extends "frappe_theme/templates/base.html" %}
 {% block title %}ERPNext Academy{% endblock %}
 {% from "templates/includes/media.html" import media %}
-{% block head_include %}
-<meta name="description" content="ERPNext Academy is a learnig platform to gain expertise in the world's top 100% open source ERP software." />
-<meta name="keywords" content="ERP Software, Cloud ERP, Open Source ERP, Accounting Software, Online ERP, Online Accounting, ERP for small business, Learn ERP, ERPNext Academy, Learn ERPNext, Learn Accounting" />
-{% endblock %}
 {% block content %}
 <div id="content-holder" data-type="{{ content_type }}" data-content="{{ content.name }}" data-course="{{ course_name }}" data-program="{{ program_name }}">
-
 {% include "www/lms/templates/includes/" + content_type.lower() + ".html" %}
 
 </div>
diff --git a/erpnext/www/lms/course.js b/erpnext/www/lms/course.js
index d24c024..b4eb8f7 100644
--- a/erpnext/www/lms/course.js
+++ b/erpnext/www/lms/course.js
@@ -35,3 +35,13 @@
         }
     })
 }
+
+function addFinalActivity() {
+    addActivity()
+    frappe.call({
+        method: "erpnext.education.utils.mark_course_complete",
+        args: {
+            "course": $('#content-holder').data('course'),
+        },
+    })
+}
diff --git a/erpnext/www/lms/index.html b/erpnext/www/lms/index.html
index 444bbde..c39ee6e 100644
--- a/erpnext/www/lms/index.html
+++ b/erpnext/www/lms/index.html
@@ -3,11 +3,6 @@
 
 {% from "templates/includes/media.html" import media %}
 
-{% block head_include %}
-<meta name="description" content="ERPNext Academy is a learnig platform to gain expertise in the world's top 100% open source ERP software." />
-<meta name="keywords" content="ERP Software, Cloud ERP, Open Source ERP, Accounting Software, Online ERP, Online Accounting, ERP for small business, Learn ERP, ERPNext Academy, Learn ERPNext, Learn Accounting" />
-{% endblock %}
-
 {% macro featured_card(program_name, description, hero_image, code) %}
 <div class='card-deck mt-5'>
 	<div class="card">
diff --git a/erpnext/www/lms/program.html b/erpnext/www/lms/program.html
index 00e13cb..bee0136 100644
--- a/erpnext/www/lms/program.html
+++ b/erpnext/www/lms/program.html
@@ -1,11 +1,6 @@
 {% extends "frappe_theme/templates/base.html" %}
 {% block title %}ERPNext Academy{% endblock %}
 
-{% block head_include %}
-<meta name="description" content="ERPNext Academy is a learnig platform to gain expertise in the world's top 100% open source ERP software." />
-<meta name="keywords" content="ERP Software, Cloud ERP, Open Source ERP, Accounting Software, Online ERP, Online Accounting, ERP for small business, Learn ERP, ERPNext Academy, Learn ERPNext, Learn Accounting" />
-{% endblock %}
-
 {% macro course_card(course) %}
 <div class="card mt-3" data-list="getting-started">
     <div class='card-body'>
@@ -22,7 +17,11 @@
                 </span>
             </div>
             <div class='text-center col-xs-4 col-sm-3 col-md-2'>
+                {% if not check_complete(course.name) %}
                 <a class='btn btn-primary btn-sm btn-block' href="/lms/course?program={{ program.program_code }}&course={{ course.name }}&type={{course.course_content[0].content_type}}&content={{ course.course_content[0].content }}">Start Course</a>
+                {% else %}
+                <a class='btn btn-success btn-sm btn-block' href="/lms/course?program={{ program.program_code }}&course={{ course.name }}&type={{course.course_content[0].content_type}}&content={{ course.course_content[0].content }}">Complete</a>
+                {% endif %}
             </div>
         </div>
     </div>
diff --git a/erpnext/www/lms/program.py b/erpnext/www/lms/program.py
index 10bdd6b..a8c9c0e 100644
--- a/erpnext/www/lms/program.py
+++ b/erpnext/www/lms/program.py
@@ -8,4 +8,14 @@
     course_list = program.get_course_list()
 
     context.program = program
-    context.course_list = course_list
\ No newline at end of file
+    context.course_list = course_list
+    context.check_complete = check_complete
+
+
+def check_complete(course_name):
+	try:
+		enrollment = utils.get_course_enrollment(course_name, frappe.session.user)
+		completed = frappe.get_value('Course Enrollment', enrollment['name'], "completed")
+		return bool(completed)
+	except:
+		return False
\ No newline at end of file
diff --git a/erpnext/www/lms/templates/includes/lms-nav.html b/erpnext/www/lms/templates/includes/lms-nav.html
index 64932f6..efd1b8b 100644
--- a/erpnext/www/lms/templates/includes/lms-nav.html
+++ b/erpnext/www/lms/templates/includes/lms-nav.html
@@ -2,5 +2,5 @@
 {% if next_content != None %}
 <a class='btn btn-primary' onclick="addActivity()" href="/lms/course?program={{ program_name }}&course={{ course_name }}&type={{ next_content_type }}&content={{ next_content }}">Next</a>
 {% else %}
-<a class='btn btn-primary' onclick="addActivity()" href="/lms/program?program={{ program_name }}">Finish Course</a>
+<a class='btn btn-primary' onclick="addFinalActivity()" href="/lms/program?program={{ program_name }}">Finish Course</a>
 {% endif %}
\ No newline at end of file