diff --git a/pedagogy/models.py b/pedagogy/models.py index 84f6bab4..cb3a9bd9 100644 --- a/pedagogy/models.py +++ b/pedagogy/models.py @@ -26,6 +26,7 @@ from django.conf import settings from django.core import validators from django.db import models from django.db.models import Exists, OuterRef +from django.db.models.query_utils import Q from django.urls import reverse from django.utils import timezone from django.utils.functional import cached_property @@ -159,7 +160,15 @@ class UECommentQuerySet(models.QuerySet): # so he can view non-moderated comments return self if user.has_perm("pedagogy.view_uecomment"): - return self.filter(reports=None) + return self.filter( + Q(reports=None) + | Q(author=user) + | Q( + reports__in=UECommentReport.objects.filter( + comment=OuterRef("pk"), reporter__in=[user] + ).all() + ) + ).distinct() return self.filter(author=user) def annotate_is_reported(self) -> Self: @@ -261,7 +270,7 @@ class UEResult(models.Model): class UECommentReport(models.Model): - """Report an inapropriate comment.""" + """Report an inappropriate comment.""" comment = models.ForeignKey( UEComment,