From ec3f79c1012c642458af8f903e523f569bc5794e Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 13 Mar 2017 18:01:08 +0100
Subject: [PATCH] after login redirection is handled properly

---
 smash/web/templates/login.html |  3 +++
 smash/web/views.py             | 12 ++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/smash/web/templates/login.html b/smash/web/templates/login.html
index 1cdc90f5..86b7238f 100644
--- a/smash/web/templates/login.html
+++ b/smash/web/templates/login.html
@@ -75,6 +75,9 @@
 
     <form action="{% url 'web.views.login' %}" method="post">
 	  {% csrf_token %}
+    {% if next %}
+      <input type="hidden" name="next" value="{{ next }}" />
+    {% endif %}
 
       <div class="form-group has-feedback">
         <input type="text" name="username" class="form-control" placeholder="Login">
diff --git a/smash/web/views.py b/smash/web/views.py
index 61708d97..b27071d9 100644
--- a/smash/web/views.py
+++ b/smash/web/views.py
@@ -54,13 +54,18 @@ def login(request):
 	if request.GET and request.GET.get('error'):
 		context['state'] = request.GET.get('error')
 
+	if request.method == "GET" and request.GET:
+		context['next'] = request.GET.get('next')
+
 	if request.method == "POST" and request.POST:
 		state, message = do_login(request)
 		if state == True:
-			return redirect(appointments)
+			if request.POST.get('next'):
+				return redirect(request.POST.get('next'))
+			else:
+				return redirect(appointments)
 		else:
 			return redirect('/login?error=' + message)
-
 	return render(request, "login.html", context)
 
 class NotificationCount(object):
@@ -84,6 +89,9 @@ def get_filter_locations(user):
 			worker = workers[0]
 	elif isinstance(user, Worker):
 		worker = user
+	elif isinstance(user, AnonymousUser):
+		# anonymous user shouldn't see anything
+		return Location.objects.filter(id=-1)
 	elif user!=None:
 		raise TypeError("Unknown class type: "+user.__class__.__name__)
 
-- 
GitLab