Coverage for src / mesh / models / orm / comment_models.py: 85%

26 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-10-22 07:20 +0000

1from django.db import models 

2 

3from mesh.models.orm.discussion_models import Discussion 

4from mesh.models.orm.user_models import User 

5 

6ROLE_CHOICES = [ 

7 ("editor", "Editor"), 

8 ("reviewer", "Reviewer"), 

9 ("author", "Author"), 

10] 

11 

12 

13class Comment(models.Model): 

14 """ 

15 Represents a Resource comment. 

16 """ 

17 

18 discussion = models.ForeignKey(Discussion, on_delete=models.CASCADE, related_name="comments") 

19 author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name="comments") 

20 parent: "models.ForeignKey[Comment]" = models.ForeignKey( 

21 "self", on_delete=models.CASCADE, null=True, blank=True, related_name="replies" 

22 ) 

23 role = models.CharField(max_length=255, choices=ROLE_CHOICES, blank=True) 

24 role_icon_class: str 

25 role_color: str 

26 date_submitted = models.DateTimeField(auto_now_add=True) 

27 date_last_modified = models.DateTimeField(auto_now=True) 

28 is_deleted = models.BooleanField(default=False) 

29 raw_html = models.TextField() 

30 sanitized_html = models.TextField() 

31 

32 @property 

33 def role_icon_class(self) -> str: 

34 role_icon = ( 

35 (self.role == "editor") * "fa-newspaper" 

36 + (self.role == "author") * "fa-user-pen" 

37 + (self.role == "reviewer") * "fa-microscope" 

38 ) 

39 return role_icon 

40 

41 @property 

42 def role_color(self) -> str: 

43 role_color = ( 

44 (self.role == "editor") * "var(--color-editor)" 

45 + (self.role == "author") * "var(--color-author)" 

46 + (self.role == "reviewer") * "var(--color-reviewer)" 

47 ) 

48 return role_color 

49 

50 class Meta: 

51 ordering = ["date_submitted"]