From c32e1533790886aed04669043bd235c5c8a6fe5c Mon Sep 17 00:00:00 2001
From: Jacek Lebioda <jacek.lebioda.001@student.uni.lu>
Date: Thu, 12 Jan 2017 19:49:22 +0100
Subject: [PATCH] Saturated views with logged user information

---
 smash/web/views.py | 85 +++++++++++++++++++++++++---------------------
 1 file changed, 46 insertions(+), 39 deletions(-)

diff --git a/smash/web/views.py b/smash/web/views.py
index 0285bffd..9e5ae6b1 100644
--- a/smash/web/views.py
+++ b/smash/web/views.py
@@ -23,40 +23,48 @@ def login(request):
 		context['state'] = request.GET.get('error')
 
 	if request.method == "POST" and request.POST:
-		state = do_login(request)
-		if state[0] == True:
+		state, message = do_login(request)
+		if state == True:
 			return redirect(assignments)
 		else:
-			return redirect('/login?error=' + state[1])
+			return redirect('/login?error=' + message)
 
 	return render(request, "login.html", context)
 
 
-def logout(request):
-	state = do_logout(request)
-	return redirect('/login?error=' + state[1])
+"""
+Saturates response with information about logged user
+"""
+def wrap_response(request, template, params):
+	person, role = Worker.get_details(request.user)
 
+	final_params = params.copy()
+	final_params.update({
+		'person' : person,
+		'role': role
+	})
 
-def assignments(request):
-	template = loader.get_template("assignments/index.html")
-	details = Worker.get_details(request.user)
+	template = loader.get_template(template)
 
-	# TODO: Make a details decorator 
+	return HttpResponse(template.render(final_params), request)
 
-	return HttpResponse(template.render({
-		'person' : details[0],
-		'role': details[1]
-	}), request)
+
+def logout(request):
+	state, message = do_logout(request)
+	return redirect('/login?error=' + message)
+
+
+def assignments(request):
+	return wrap_response(request, 'assignments/index.html', {})
 
 
 def subjects(request):
 	subjects_list = Subject.objects.order_by('-lastName')
-	template = loader.get_template("subjects/index.html")
 	context = {
 		'subjects_list': subjects_list
 	}
 
-	return HttpResponse(template.render(context,request))
+	return wrap_response(request, 'subjects/index.html', context)
 
 
 def subjectadd(request):
@@ -68,14 +76,14 @@ def subjectadd(request):
 			return redirect(subjects)
     else:
 		formset = subjectFormSet(queryset=Subject.objects.none())
-    return render(request, 'subjects/add.html', {'formset': formset})
+
+    return wrap_response(request, 'subjects/add.html', {'formset': formset})
 
 
 def subjectdet(request, ids):
 	form = SubjectDetailForm(instance=Subject.objects.get(id=ids))
-	
-		
-	return render(request, 'subjects/details.html', {'form': form})
+
+	return wrap_response(request, 'subjects/details.html', {'form': form})
 
 
 def subjectedit(request, ids):
@@ -86,7 +94,7 @@ def subjectedit(request, ids):
 			return redirect(subjects)
 	else:
 		form = SubjectEditForm(instance=Subject.objects.get(id=ids))
-	return render(request, 'subjects/edit.html', {'form': form})
+	return wrap_response(request, 'subjects/edit.html', {'form': form})
 
 
 def subjectdelete(request, ids):
@@ -95,17 +103,17 @@ def subjectdelete(request, ids):
 		return redirect(subjects)
     else:
 		form = SubjectEditForm(instance=Subject.objects.get(id=ids))
-    return render(request, 'subjects/delete.html', {'form': form})
+    return wrap_response(request, 'subjects/delete.html', {'form': form})
 
 
 def doctors(request):
 	doctors_list = Worker.objects.order_by('-lastName')
-	template = loader.get_template("doctors/index.html")
 	context = {
 		'doctors_list': doctors_list
 	}
 
-	return HttpResponse(template.render(context,request))
+	return wrap_response(request, "doctors/index.html", context)
+
 
 def doctoradd(request):
     WorkerFormSet = modelformset_factory(Worker , fields='__all__')
@@ -116,10 +124,10 @@ def doctoradd(request):
 			return redirect(doctors)
     else:
 		formset = WorkerFormSet(queryset=Worker.objects.none())
-    return render(request, 'doctors/add.html', {'formset': formset})
+    return wrap_response(request, 'doctors/add.html', {'formset': formset})
+
 
 def doctoredit(request, ids):
-	WorkerFormSet = modelformset_factory(Worker , fields='__all__')
 	if request.method == 'POST':
 		formset = WorkerEditForm(request.POST, request.FILES, instance=Worker.objects.get(id=ids))
 		if formset.is_valid():
@@ -127,12 +135,14 @@ def doctoredit(request, ids):
 			return redirect(doctors)
 	else:
 		formset = WorkerEditForm(instance=Worker.objects.get(id=ids))
-	return render(request, 'doctors/edit.html', {'formset': formset})
+	return wrap_response(request, 'doctors/edit.html', {'formset': formset})
+
 
 def doctordetails(request, ids):
-	WorkerFormSet = modelformset_factory(Worker , fields='__all__')
 	formset = WorkerDetailForm(instance=Worker.objects.get(id=ids))
-	return render(request, 'doctors/details.html', {'formset': formset})
+
+	return wrap_response(request, 'doctors/details.html', {'formset': formset})
+
 
 def doctoravail(request, ids):
 	avall = Avaibility.objects.filter(person = ids)
@@ -144,7 +154,6 @@ def doctoravail(request, ids):
 	avfri = avall.filter(dayNo=5)
 	avsat = avall.filter(dayNo=6)
 
-	template = loader.get_template("doctors/availdex.html")
 	context = {
 		'avmon': avmon,
 		'avtue': avtue,
@@ -155,28 +164,26 @@ def doctoravail(request, ids):
 		'ids': ids
 	}
 
-	return HttpResponse(template.render(context,request))
+	return wrap_response(request, "doctors/availdex.html", context)
+
 
 def availdelete(request, id):
 	return redirect(doctors)
 
+
 def equipment_def(request):
 	equipment_list = Item.objects.order_by('-name')
-	template = loader.get_template("eqdef/index.html")
 	context = {
 		'equipment_list': equipment_list
 	}
 
-	return HttpResponse(template.render(context,request))
+	return wrap_response(request, "eqdef/index.html", context)
 
 
 def equipment_and_rooms(request):
-	template = loader.get_template("equipment_and_rooms/index.html")
-	return HttpResponse(template.render({
-	}), request)
+	return wrap_response(request, "equipment_and_rooms/index.html", {})
 
 
 def mail_templates(request):
-	template = loader.get_template("mail_templates/index.html")
-	return HttpResponse(template.render({
-	}), request)
+	return wrap_response(request, "mail_templates/index.html", {})
+	
-- 
GitLab