1
0
Fork 0

Fixes perms checks for groups

This commit is contained in:
Mouse Reeve 2022-08-05 09:12:48 -07:00
parent 0ee7054640
commit 2894aa37a2
2 changed files with 32 additions and 8 deletions

View file

@ -1,7 +1,7 @@
"""group views"""
from django.apps import apps
from django.contrib.auth.decorators import login_required
from django.db import IntegrityError
from django.db import IntegrityError, transaction
from django.core.paginator import Paginator
from django.http import HttpResponseBadRequest
from django.shortcuts import get_object_or_404, redirect
@ -112,9 +112,13 @@ class UserGroups(View):
form = forms.GroupForm(request.POST)
if not form.is_valid():
return redirect(request.user.local_path + "/groups")
group = form.save()
# add the creator as a group member
models.GroupMember.objects.create(group=group, user=request.user)
group = form.save(commit=False)
group.raise_not_editable(request.user)
with transaction.atomic():
group.save()
# add the creator as a group member
models.GroupMember.objects.create(group=group, user=request.user)
return redirect("group", group.id)
@ -128,6 +132,7 @@ class FindUsers(View):
"""basic profile info"""
user_query = request.GET.get("user_query")
group = get_object_or_404(models.Group, id=group_id)
group.raise_not_editable(request.user)
lists = (
models.List.privacy_filter(request.user)
.filter(group=group)
@ -183,10 +188,11 @@ def delete_group(request, group_id):
# only the owner can delete a group
group.raise_not_deletable(request.user)
# deal with any group lists
models.List.objects.filter(group=group).update(curation="closed", group=None)
with transaction.atomic():
# deal with any group lists
models.List.objects.filter(group=group).update(curation="closed", group=None)
group.delete()
group.delete()
return redirect(request.user.local_path + "/groups")