def view_funeral():
	security.is_logged_on()
	data=[['id','name','healthcare_id','family_members','next_of_kin','approved']]+model.get_all_funeral()
	page_heading='Funeral'
	username = model.get_username(security.current_user())[1]
	user_id = model.get_role(username)[0]
	if model.get_role(username)[1] == 4:
		return fEngine.load_and_render("table",page_heading=page_heading,data_rows=generate_table(data))
	else:
		return fEngine.load_and_render("invalid", reason = "Your account does not have access.")
def view_births():
	security.is_logged_on()
	data=[['id','b_time','place','father','mother','approved','name','healthcare_id']]+model.get_all_births()
	page_heading='Births'
	username = model.get_username(security.current_user())[1]
	user_id = model.get_role(username)[0]
	if model.get_role(username)[1] == 4:
		return fEngine.load_and_render("table",page_heading=page_heading,data_rows=generate_table(data))
	else:
		return fEngine.load_and_render("invalid", reason = "Your account does not have access.")
def view_divorce():
	security.is_logged_on()
	data=[['id','d_time','place','husband','wife','approved']]+model.get_all_divorce()
	page_heading='Divorce'
	username = model.get_username(security.current_user())[1]
	user_id = model.get_role(username)[0]
	if model.get_role(username)[1] == 4:
		return fEngine.load_and_render("table",page_heading=page_heading,data_rows=generate_table(data))
	else:
		return fEngine.load_and_render("invalid", reason = "Your account does not have access.")
def funeral_details():
	security.is_logged_on()
	name = request.forms.get('funeralName')
	healthcare_id = request.forms.get('healthcareID')
	family_members = request.forms.get('familyMembers')
	next_of_kin = request.forms.get('nextOfKin')

	formPass = security.handle_funeral_form(name, healthcare_id, family_members, next_of_kin)
	if formPass == True:
		return fEngine.load_and_render("valid",reason="Application successfully filed in for review!")
	else:
		return fEngine.load_and_render("invalid",reason="Invalid application.")
def divorce_details():
	security.is_logged_on()
	time = request.forms.get('divorceTime')
	place = request.forms.get('divorcePlace')
	husband = request.forms.get('divorceHusband')
	wife = request.forms.get('divorceWife')

	formPass = security.handle_divorce_form(time, place, husband, wife)
	if formPass == True:
		return fEngine.load_and_render("valid",reason="Application successfully filed in for review!")
	else:
		return fEngine.load_and_render("invalid",reason="Invalid application.")
def wedding_details():
	security.is_logged_on()
	time = request.forms.get('weddingTime')
	place = request.forms.get('weddingPlace')
	groom = request.forms.get('weddingGroom')
	bride = request.forms.get('weddingBride')

	formPass = security.handle_wedding_form(time, place, groom, bride)
	if formPass == True:
		return fEngine.load_and_render("valid",reason="Application successfully filed in for review!")
	else:
		return fEngine.load_and_render("invalid",reason="Invalid application.")
def birth_details():
	security.is_logged_on()
	name = request.forms.get('birthName')
	healthcare_id = request.forms.get('healthcareID')
	time = request.forms.get('birthTime')
	place = request.forms.get('birthPlace')
	father = request.forms.get('birthFather')
	mother = request.forms.get('birthMother')

	formPass = security.handle_birth_form(name, healthcare_id, time, place, father, mother)
	if formPass == True:
		return fEngine.load_and_render("valid",reason="Application successfully filed in for review!")
	else:
		return fEngine.load_and_render("invalid",reason="Invalid application.")
def death_details():
	security.is_logged_on()
	name = request.forms.get('deathName')
	healthcare_id = request.forms.get('healthcareID')
	time = request.forms.get('deathTime')
	cause = request.forms.get('deathCause')
	autopsy = request.forms.get('deathAustopsy')
	if autopsy == "Yes":
		pass
	else:
		autopsy = "No"

	formPass = security.handle_death_form(name, healthcare_id, d_time, cause, autopsy)
	if formPass == True:
		return fEngine.load_and_render("valid",reason="Application successfully filed in for review!")
	else:
		return fEngine.load_and_render("invalid",reason="Invalid application.")
def do_adminEdit():
	security.is_logged_on()

	username = request.forms.get('username')
	currentUserName = model.get_username(security.current_user())[1]
	reset = request.forms.get('reset')

	if username:
		userid = model.get_role(username)[0]


	#change user's name
		# check current user's privillege
	if model.get_role(currentUserName)[1] == 4:
			#reset database

		if reset:
			if reset == 'Y':
				model.reset_table()
				return fEngine.load_and_render("valid", reason="changes committed!")
			else:
				return fEngine.load_and_render("invalid", reason="invalid")

		usernameNew = request.forms.get('usernameNew')
		passwordNew = request.forms.get('passwordNew')
		roleNew = request.forms.get('role')
		if usernameNew:
			if model.username_exists(usernameNew):
				return fEngine.load_and_render("invalid", reason="invalid name")
			else:
				model.sql('''UPDATE USER
				SET username = ?
				WHERE id = ?
				''', usernameNew, userid
				)
				model.commit()

			#change password
		if passwordNew:
				userName1 = ''
				if usernameNew:
					valid_pwd, reason = security.secure_password(passwordNew, usernameNew)
					userName1 = usernameNew
				else:
					valid_pwd, reason = security.secure_password(passwordNew, username)
					userName1 = username

				if valid_pwd:
					salt = model.get_salt(userName1)[1]
					hashPass= security.password_hash(passwordNew,salt)
					model.sql('''UPDATE USER
								SET password = ?
								WHERE id = ?
							''', hashPass, userid
							)
					model.commit()
				else:
					return fEngine.load_and_render("invalid", reason="invalid")

			#change the role
		if roleNew:
				model.sql('''UPDATE USER
				SET role = ?
				WHERE id = ?
				''', roleNew, userid
				)
				model.commit()
		return fEngine.load_and_render("valid", reason="changes committed!")

	else:
		return fEngine.load_and_render("invalid", reason="you are not the admin")
def do_edituser():
	security.is_logged_on()

	newUsername = request.forms.get('username')
	password = request.forms.get('password')
	password2 = request.forms.get('password2')
	role = request.forms.get('role')
	curpassword = request.forms.get('curpassword')

	# Check if required current password is provided
	if not curpassword:
		return fEngine.load_and_render("invalid", reason = "Please input your current password")
	
	# Retrieve username of current user
	username = model.get_username(security.current_user())[1]
	# use salt and password to get hashed password
	hashed = security.password_hash(curpassword, model.get_salt(username)[1])

	# check database to see if user has input a valid password
	valid = model.check_password(username,hashed)

	# Check current password is matches
	if valid:
		password_filled = False
		# If password field is filled
		if password:
			# If password matches the confirmation password
			if password == pdoassword2:
				password_filled = True
				valid_pwd, reason = security.secure_password(password,username)
				if not valid_pwd:
					return fEngine.load_and_render("invalid", reason=reason)
			else:
				return fEngine.load_and_render("invalid", reason="New passwords do not match")
				# Hashing and storing new pass

	# If username field is filled
		if newUsername:
			#check if username already exists
			if model.username_exists(newUsername):
				return fEngine.load_and_render("invalid", reason="Username is already taken")
			else:
				# Update username
				model.sql('''UPDATE USER
				SET username = ?
				WHERE id = ?
				''', newUsername, security.current_user()
				)
				model.commit()

		if password_filled:
			# Check if new password is valid
			valid_pwd, reason = security.secure_password(password,username)
			if valid_pwd:
				# Salt and hash password
				salt = model.get_salt(username)[1]
				hashPass = security.password_hash(password, salt)
				# Update password
				model.sql('''UPDATE USER
				SET password = ?
				WHERE id = ?
				''', hashPass, security.current_user()
				)
				model.commit()

		# Updates role if one has been selected
		if role != "None":
			model.sql('''UPDATE USER
			SET role = ?
			WHERE id = ?
			''', role, security.current_user()
			)
			model.commit()

		return fEngine.load_and_render("valid",reason="Info updated!")

	else:
		return fEngine.load_and_render("invalid", reason="Current password does not match")
def funeral():
	security.is_logged_on()
	return fEngine.load_and_render("funeralDir")
def marriage():
	security.is_logged_on()
	return fEngine.load_and_render("marriageOfficiator")
def birthAndDeath():
	security.is_logged_on()
	return fEngine.load_and_render("medicalPrac")
def admin():
	security.is_logged_on()
	return fEngine.load_and_render("admin")
def edituser():
	security.is_logged_on()
	return fEngine.load_and_render("edituser")
def index():
	security.is_logged_on()
	return fEngine.load_and_render("index")