diff --git a/cookbook/templates/space.html b/cookbook/templates/space.html
index f37d3fdc3..8174a16db 100644
--- a/cookbook/templates/space.html
+++ b/cookbook/templates/space.html
@@ -7,6 +7,8 @@
{% block extra_head %}
{{ form.media }}
+
+ {% include 'include/vue_base.html' %}
{% endblock %}
{% block content %}
@@ -70,24 +72,72 @@
{% if space_users %}
+
+
+ | {% trans 'User' %} |
+ {% trans 'Groups' %} |
+ {% trans 'Edit' %} |
+
+
{% for u in space_users %}
|
{{ u.user.username }}
|
- {% trans 'Remove' %}
+ {{ u.user.groups.all |join:", " }}
+ |
+
+
+
+
|
{% endfor %}
-
{% else %}
{% trans 'There are no members in your space yet!' %}
{% endif %}
+{% endblock %}
+{% block script %}
+
+
{% endblock %}
\ No newline at end of file
diff --git a/cookbook/urls.py b/cookbook/urls.py
index cc2bff178..9ff9ae98b 100644
--- a/cookbook/urls.py
+++ b/cookbook/urls.py
@@ -42,6 +42,7 @@ urlpatterns = [
path('', views.index, name='index'),
path('setup/', views.setup, name='view_setup'),
path('space/', views.space, name='view_space'),
+ path('space/member///', views.space_change_member, 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('no-perm', views.no_perm, name='view_no_perm'),
diff --git a/cookbook/views/views.py b/cookbook/views/views.py
index d6bcbe223..a00acfda1 100644
--- a/cookbook/views/views.py
+++ b/cookbook/views/views.py
@@ -431,6 +431,7 @@ def signup(request, token):
link.used_by = request.user
link.save()
+ request.user.groups.clear()
request.user.groups.add(link.group)
request.user.userpreference.space = link.space
@@ -461,6 +462,8 @@ def signup(request, token):
link.used_by = user
link.save()
+
+ request.user.groups.clear()
user.groups.add(link.group)
user.userpreference.space = link.space
@@ -501,6 +504,34 @@ def space(request):
return render(request, 'space.html', {'space_users': space_users, 'counts': counts})
+# TODO super hacky and quick solution, safe but needs rework
+# TODO move group settings to space to prevent permissions from one space to move to another
+@group_required('admin')
+def space_change_member(request, user_id, space_id, group):
+ m_space = get_object_or_404(Space, pk=space_id)
+ m_user = get_object_or_404(User, pk=user_id)
+ if request.user == m_space.created_by and m_user != m_space.created_by:
+ if m_user.userpreference.space == m_space:
+ if group == 'admin':
+ m_user.groups.clear()
+ m_user.groups.add(Group.objects.get(name='admin'))
+ return HttpResponseRedirect(reverse('view_space'))
+ if group == 'user':
+ m_user.groups.clear()
+ m_user.groups.add(Group.objects.get(name='user'))
+ return HttpResponseRedirect(reverse('view_space'))
+ if group == 'guest':
+ m_user.groups.clear()
+ m_user.groups.add(Group.objects.get(name='guest'))
+ return HttpResponseRedirect(reverse('view_space'))
+ if group == 'remove':
+ m_user.groups.clear()
+ m_user.userpreference.space = None
+ m_user.userpreference.save()
+ return HttpResponseRedirect(reverse('view_space'))
+ return HttpResponseRedirect(reverse('view_space'))
+
+
def markdown_info(request):
return render(request, 'markdown_info.html', {})