def group_action(request, group_name, member_pk): group = get_object_or_404(Group, name=group_name) if not group.properties.admins.filter(pk=request.user.pk): raise PermissionDenied() User = get_user_model() try: member = group.user_set.get(pk=member_pk) except User.DoesNotExist: raise Http404 group_proxy = GroupProxy(group) if 'kick' in request.POST: try: group_proxy.remove_member(member, check_sole_admin=True) messages.success(request, _('User was removed from group')) except GroupError as e: messages.errror(request, str(e)) elif 'grant_admin' in request.POST: group_proxy.grant_admin(member) messages.success(request, _('User was granted group admin.')) elif 'revoke_admin' in request.POST: try: group_proxy.revoke_admin(member) messages.success(request, _('Revoked group admin rights from user.')) except GroupError as e: messages.errror(request, str(e)) return redirect('groups_show', group.name)
def leave(request, group_name): group = get_object_or_404(Group, name=group_name) group_proxy = GroupProxy(group) try: group_proxy.remove_member(request.user, check_sole_admin=True) messages.success(request, _('You left the group.')) except GroupError as e: messages.error(request, str(e)) return redirect('groups_index')