diff --git a/cookbook/templates/base.html b/cookbook/templates/base.html
index f5fc196d..67a6f8c4 100644
--- a/cookbook/templates/base.html
+++ b/cookbook/templates/base.html
@@ -304,6 +304,20 @@
{% trans 'Admin' %}
{% endif %}
+ {% if request.user.is_authenticated and request.user.userspace_set.all|length > 1 %}
+
+
+ {% for us in request.user.userspace_set.all %}
+
+ {% if us.active %}
+
+ {% else %}
+
+ {% endif %}
+ {{ us.space.name }}
+ {% endfor %}
+
+ {% endif %}
{% trans 'Markdown Guide' %}
@@ -339,7 +353,8 @@
{% if HOSTED and request.space.max_recipes == 10 %}
{% endif %}
diff --git a/cookbook/urls.py b/cookbook/urls.py
index b82737a6..546e985a 100644
--- a/cookbook/urls.py
+++ b/cookbook/urls.py
@@ -56,6 +56,7 @@ urlpatterns = [
name='change_space_member'),
path('no-group', views.no_groups, name='view_no_group'),
path('no-space', views.no_space, name='view_no_space'),
+ path('switch-space/', views.switch_space, name='view_switch_space'),
path('no-perm', views.no_perm, name='view_no_perm'),
path('signup/', views.signup, name='view_signup'), # TODO deprecated with 0.16.2 remove at some point
path('invite/', views.invite_link, name='view_invite'),
diff --git a/cookbook/views/views.py b/cookbook/views/views.py
index e27dcae0..8407c1e3 100644
--- a/cookbook/views/views.py
+++ b/cookbook/views/views.py
@@ -144,6 +144,15 @@ def no_space(request):
return render(request, 'no_space_info.html', {'create_form': create_form, 'join_form': join_form})
+@login_required
+def switch_space(request, space_id):
+ user_space = get_object_or_404(UserSpace, space=space_id, user=request.user)
+ UserSpace.objects.filter(user=request.user).update(active=False) # make sure to deactivate all spaces for a user
+ user_space.active = True
+ user_space.save()
+ return HttpResponseRedirect(reverse('index'))
+
+
def no_perm(request):
if not request.user.is_authenticated:
messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!'))