Skip to content

Commit 4fe6f91

Browse files
committed
Set annos as hidden in Elasticsearch based in moderation status
1 parent a1fa3de commit 4fe6f91

File tree

2 files changed

+16
-28
lines changed

2 files changed

+16
-28
lines changed

h/presenters/annotation_searchindex.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,30 +32,18 @@ def asdict(self):
3232
"target": self.annotation.target,
3333
"document": docpresenter.asdict(),
3434
"thread_ids": self.annotation.thread_ids,
35+
"hidden": self.annotation.is_hidden,
3536
}
3637

3738
result["target"][0]["scope"] = [self.annotation.target_uri_normalized]
3839

3940
if self.annotation.references:
4041
result["references"] = self.annotation.references
4142

42-
self._add_hidden(result)
4343
self._add_nipsa(result, self.annotation.userid)
4444

4545
return result
4646

47-
def _add_hidden(self, result):
48-
# Mark an annotation as hidden if it and all of it's children have been
49-
# moderated and hidden.
50-
parents_and_replies = [self.annotation.id] + self.annotation.thread_ids # noqa: RUF005
51-
52-
ann_mod_svc = self.request.find_service(name="annotation_moderation")
53-
is_hidden = len(ann_mod_svc.all_hidden(parents_and_replies)) == len(
54-
parents_and_replies
55-
)
56-
57-
result["hidden"] = is_hidden
58-
5947
def _add_nipsa(self, result, user_id):
6048
nipsa_service = self.request.find_service(name="nipsa")
6149
if nipsa_service.is_flagged(user_id):

tests/unit/h/presenters/annotation_searchindex_test.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
from h_matchers import Any
33

4+
from h.models import ModerationStatus
45
from h.presenters.annotation_searchindex import AnnotationSearchIndexPresenter
56
from h.util.datetime import utc_iso8601
67

@@ -43,33 +44,32 @@ def test_asdict(self, DocumentSearchIndexPresenter, pyramid_request, factories):
4344
"hidden": False,
4445
}
4546

46-
@pytest.mark.parametrize("is_moderated", [True, False])
47-
@pytest.mark.parametrize("replies_moderated", [True, False])
47+
@pytest.mark.parametrize(
48+
"moderation_status,should_be_hidden",
49+
[
50+
(None, False),
51+
(ModerationStatus.APPROVED, False),
52+
(ModerationStatus.PENDING, True),
53+
(ModerationStatus.DENIED, True),
54+
(ModerationStatus.SPAM, True),
55+
],
56+
)
4857
def test_it_marks_annotation_hidden_correctly(
4958
self,
5059
pyramid_request,
51-
moderation_service,
52-
is_moderated,
53-
replies_moderated,
60+
moderation_status,
61+
should_be_hidden,
5462
factories,
5563
):
5664
annotation = factories.Annotation()
57-
replies = factories.Annotation.create_batch(2, references=[annotation.id])
58-
59-
# Configure moderation return value
60-
moderated_ids = []
61-
if is_moderated:
62-
moderated_ids.append(annotation.id)
63-
if replies_moderated:
64-
moderated_ids.extend([reply.id for reply in replies])
65-
moderation_service.all_hidden.return_value = moderated_ids
65+
annotation.moderation_status = moderation_status
6666

6767
annotation_dict = AnnotationSearchIndexPresenter(
6868
annotation, pyramid_request
6969
).asdict()
7070

7171
# We are hidden if both we, and all of our replies are moderated
72-
assert annotation_dict["hidden"] == bool(is_moderated and replies_moderated)
72+
assert annotation_dict["hidden"] == should_be_hidden
7373

7474
@pytest.mark.parametrize("is_nipsaed", [True, False])
7575
def test_it_marks_annotation_nipsad_correctly(

0 commit comments

Comments
 (0)