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
« prev ^ index » next coverage.py v7.13.1, created at 2026-10-22 07:20 +0000
1from django.db import models
3from mesh.models.orm.discussion_models import Discussion
4from mesh.models.orm.user_models import User
6ROLE_CHOICES = [
7 ("editor", "Editor"),
8 ("reviewer", "Reviewer"),
9 ("author", "Author"),
10]
13class Comment(models.Model):
14 """
15 Represents a Resource comment.
16 """
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()
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
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
50 class Meta:
51 ordering = ["date_submitted"]