From 12567f6891ad591390cbd74c0e7b77a4a024a24e Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Fri, 16 Dec 2022 19:42:48 -0700 Subject: Identity admin/moderation --- activities/views/posts.py | 6 +++++- activities/views/timelines.py | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'activities') diff --git a/activities/views/posts.py b/activities/views/posts.py index 1b8676d..a3810e0 100644 --- a/activities/views/posts.py +++ b/activities/views/posts.py @@ -1,6 +1,6 @@ from django.core.exceptions import PermissionDenied from django.db import models -from django.http import JsonResponse +from django.http import Http404, JsonResponse from django.shortcuts import get_object_or_404, redirect, render from django.utils.decorators import method_decorator from django.views.decorators.vary import vary_on_headers @@ -10,6 +10,7 @@ from activities.models import Post, PostInteraction, PostStates from core.decorators import cache_page_by_ap_json from core.ld import canonicalise from users.decorators import identity_required +from users.models import Identity from users.shortcuts import by_handle_or_404 @@ -23,6 +24,8 @@ class Individual(TemplateView): def get(self, request, handle, post_id): self.identity = by_handle_or_404(self.request, handle, local=False) + if self.identity.blocked: + raise Http404("Blocked user") self.post_obj = get_object_or_404(self.identity.posts, pk=post_id) # If they're coming in looking for JSON, they want the actor if request.ap_json: @@ -66,6 +69,7 @@ class Individual(TemplateView): ), in_reply_to=self.post_obj.object_uri, ) + .exclude(author__restriction=Identity.Restriction.blocked) .distinct() .select_related("author__domain") .prefetch_related("emojis") diff --git a/activities/views/timelines.py b/activities/views/timelines.py index 84e490f..9e4bcfb 100644 --- a/activities/views/timelines.py +++ b/activities/views/timelines.py @@ -7,6 +7,7 @@ from django.views.generic import FormView, ListView from activities.models import Hashtag, Post, PostInteraction, TimelineEvent from core.decorators import cache_page from users.decorators import identity_required +from users.models import Identity from .compose import Compose @@ -75,6 +76,7 @@ class Tag(ListView): def get_queryset(self): return ( Post.objects.public() + .filter(author__restriction=Identity.Restriction.none) .tagged_with(self.hashtag) .select_related("author") .prefetch_related("attachments", "mentions") @@ -105,6 +107,7 @@ class Local(ListView): def get_queryset(self): return ( Post.objects.local_public() + .filter(author__restriction=Identity.Restriction.none) .select_related("author", "author__domain") .prefetch_related("attachments", "mentions", "emojis") .order_by("-created") @@ -133,6 +136,7 @@ class Federated(ListView): Post.objects.filter( visibility=Post.Visibilities.public, in_reply_to__isnull=True ) + .filter(author__restriction=Identity.Restriction.none) .select_related("author", "author__domain") .prefetch_related("attachments", "mentions", "emojis") .order_by("-created") -- cgit v1.2.3