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

1from django.db import models 

2 

3 

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 """ 

9 

10 MARKED_SENSITIVE = "marked_sensitive", "Marked sensitive" 

11 

12 DEINDEXED_COPYRIGHT = "deindexed_copyright", "Deindexed (copyright)" 

13 DEINDEXED_SENSITIVE = "deindexed_sensitive", "Deindexed (sensitive)" 

14 

15 REJECTED_REPORTS = "rejected_reports", "Rejected" 

16 DEDUPLICATED_REPORTS = "deduplicated_reports", "De-duplicated" 

17 

18 REVERSED_MARK_SENSITIVE = "reversed_mark_sensitive", "Reversed mark sensitive" 

19 REVERSED_DEINDEX = "reversed_deindex", "Reversed deindex" 

20 

21 @property 

22 def is_forward(self): 

23 return self in { 

24 self.MARKED_SENSITIVE, 

25 self.DEINDEXED_COPYRIGHT, 

26 self.DEINDEXED_SENSITIVE, 

27 } 

28 

29 @property 

30 def is_reverse(self): 

31 return self in {self.REVERSED_DEINDEX, self.REVERSED_MARK_SENSITIVE} 

32 

33 @property 

34 def is_deindex(self): 

35 return self in {self.DEINDEXED_COPYRIGHT, self.DEINDEXED_SENSITIVE} 

36 

37 @property 

38 def verb(self) -> str: 

39 """ 

40 Return the verb form of the action for use in sentences. 

41 

42 :param object: the object of the sentence 

43 :return: the grammatically coherent verb phrase of the action 

44 """ 

45 

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"