from __future__ import unicode_literals

import frappe

import erpnext.education.utils as utils

no_cache = 1

def get_context(context):
	try:
		course = frappe.form_dict['course']
		program = frappe.form_dict['program']
		topic = frappe.form_dict['topic']
	except KeyError:
		frappe.local.flags.redirect_location = '/lms'
		raise frappe.Redirect

	context.program = program
	context.course = course
	context.topic = frappe.get_doc("Topic", topic)
	context.contents = get_contents(context.topic, course, program)
	context.has_access =  utils.allowed_program_access(program)

def get_contents(topic, course, program):
	student = utils.get_current_student()
	if student:
		course_enrollment = utils.get_or_create_course_enrollment(course, program)
	contents = topic.get_contents()
	progress = []
	if contents:
		for content in contents:
			if content.doctype in ('Article', 'Video'):
				if student:
					status = utils.check_content_completion(content.name, content.doctype, course_enrollment.name)
				else:
					status = True
				progress.append({'content': content, 'content_type': content.doctype, 'completed': status})
			elif content.doctype == 'Quiz':
				if student:
					status, score, result, time_taken = utils.check_quiz_completion(content, course_enrollment.name)
				else:
					status = False
					score = None
					result = None
				progress.append({'content': content, 'content_type': content.doctype, 'completed': status, 'score': score, 'result': result})

	return progress
