space switcher

This commit is contained in:
vabene1111 2022-05-31 17:48:43 +02:00
parent 151461508f
commit b3fcfdfc96
3 changed files with 26 additions and 1 deletions

View File

@ -304,6 +304,20 @@
<a class="dropdown-item" href="{% url 'admin:index' %}"><i <a class="dropdown-item" href="{% url 'admin:index' %}"><i
class="fas fa-user-shield fa-fw"></i> {% trans 'Admin' %}</a> class="fas fa-user-shield fa-fw"></i> {% trans 'Admin' %}</a>
{% endif %} {% endif %}
{% if request.user.is_authenticated and request.user.userspace_set.all|length > 1 %}
<div class="dropdown-divider"></div>
<h6 class="dropdown-header">{% trans 'Your Spaces' %}</h6>
{% for us in request.user.userspace_set.all %}
<a class="dropdown-item" href="{% url 'view_switch_space' us.space.id %}">
{% if us.active %}
<i class="far fa-dot-circle fa-fw"></i>
{% else %}
<i class="far fa-circle fa-fw"></i>
{% endif %}
{{ us.space.name }}</a>
{% endfor %}
{% endif %}
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item" href="{% url 'docs_markdown' %}"><i <a class="dropdown-item" href="{% url 'docs_markdown' %}"><i
class="fab fa-markdown fa-fw"></i> {% trans 'Markdown Guide' %}</a> class="fab fa-markdown fa-fw"></i> {% trans 'Markdown Guide' %}</a>
@ -339,7 +353,8 @@
{% if HOSTED and request.space.max_recipes == 10 %} {% if HOSTED and request.space.max_recipes == 10 %}
<div class="bg-warning" style=" width: 100%; text-align: center!important; color: #ffffff; padding: 8px"> <div class="bg-warning" style=" width: 100%; text-align: center!important; color: #ffffff; padding: 8px">
{% trans 'You are using the free version of Tandor' %} <a class="btn-success btn-sm" href="https://tandoor.dev/manage">{% trans 'Upgrade Now' %}</a> {% trans 'You are using the free version of Tandor' %} <a class="btn-success btn-sm"
href="https://tandoor.dev/manage">{% trans 'Upgrade Now' %}</a>
</div> </div>
{% endif %} {% endif %}

View File

@ -56,6 +56,7 @@ urlpatterns = [
name='change_space_member'), name='change_space_member'),
path('no-group', views.no_groups, name='view_no_group'), path('no-group', views.no_groups, name='view_no_group'),
path('no-space', views.no_space, name='view_no_space'), path('no-space', views.no_space, name='view_no_space'),
path('switch-space/<int:space_id>', views.switch_space, name='view_switch_space'),
path('no-perm', views.no_perm, name='view_no_perm'), path('no-perm', views.no_perm, name='view_no_perm'),
path('signup/<slug:token>', views.signup, name='view_signup'), # TODO deprecated with 0.16.2 remove at some point path('signup/<slug:token>', views.signup, name='view_signup'), # TODO deprecated with 0.16.2 remove at some point
path('invite/<slug:token>', views.invite_link, name='view_invite'), path('invite/<slug:token>', views.invite_link, name='view_invite'),

View File

@ -144,6 +144,15 @@ def no_space(request):
return render(request, 'no_space_info.html', {'create_form': create_form, 'join_form': join_form}) 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): def no_perm(request):
if not request.user.is_authenticated: if not request.user.is_authenticated:
messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!')) messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!'))