Coverage for api/constants/moderation.py: 35%
35 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 06:14 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 06:14 +0000
1from django.db import models
4class DecisionAction(models.TextChoices):
5 """
6 This enumeration represents the actions that can be taken by a moderator as
7 a part of a moderation decision.
8 """
10 MARKED_SENSITIVE = "marked_sensitive", "Marked sensitive"
12 DEINDEXED_COPYRIGHT = "deindexed_copyright", "Deindexed (copyright)"
13 DEINDEXED_SENSITIVE = "deindexed_sensitive", "Deindexed (sensitive)"
15 REJECTED_REPORTS = "rejected_reports", "Rejected"
16 DEDUPLICATED_REPORTS = "deduplicated_reports", "De-duplicated"
18 REVERSED_MARK_SENSITIVE = "reversed_mark_sensitive", "Reversed mark sensitive"
19 REVERSED_DEINDEX = "reversed_deindex", "Reversed deindex"
21 @property
22 def is_forward(self):
23 return self in {
24 self.MARKED_SENSITIVE,
25 self.DEINDEXED_COPYRIGHT,
26 self.DEINDEXED_SENSITIVE,
27 }
29 @property
30 def is_reverse(self):
31 return self in {self.REVERSED_DEINDEX, self.REVERSED_MARK_SENSITIVE}
33 @property
34 def is_deindex(self):
35 return self in {self.DEINDEXED_COPYRIGHT, self.DEINDEXED_SENSITIVE}
37 @property
38 def verb(self) -> str:
39 """
40 Return the verb form of the action for use in sentences.
42 :param object: the object of the sentence
43 :return: the grammatically coherent verb phrase of the action
44 """
46 match self:
47 case self.MARKED_SENSITIVE:
48 return "marked as sensitive"
49 case self.DEINDEXED_COPYRIGHT:
50 return "deindexed (copyright)"
51 case self.DEINDEXED_SENSITIVE:
52 return "deindexed (sensitive)"
53 case self.REJECTED_REPORTS:
54 return "rejected"
55 case self.DEDUPLICATED_REPORTS:
56 return "de-duplicated"
57 case self.REVERSED_MARK_SENSITIVE:
58 return "unmarked as sensitive"
59 case self.REVERSED_DEINDEX:
60 return "reindexed"