FossilRepo

fossilrepo / fossil / forum.py
Blame History Raw 35 lines
1
"""Django-backed forum posts for projects.
2
3
Supplements Fossil's native forum. Fossil's forum is tightly coupled to its
4
HTTP server and doesn't expose a CLI for creating posts, so we store
5
Django-side forum posts and display them alongside Fossil-native posts.
6
"""
7
8
from django.db import models
9
10
from core.models import ActiveManager, Tracking
11
12
13
class ForumPost(Tracking):
14
"""Django-backed forum post for projects. Supplements Fossil's native forum."""
15
16
repository = models.ForeignKey("fossil.FossilRepository", on_delete=models.CASCADE, related_name="forum_posts")
17
title = models.CharField(max_length=500, blank=True, default="") # empty for replies
18
body = models.TextField()
19
parent = models.ForeignKey("self", null=True, blank=True, on_delete=models.CASCADE, related_name="replies")
20
# Thread root -- self-referencing for threading
21
thread_root = models.ForeignKey("self", null=True, blank=True, on_delete=models.CASCADE, related_name="thread_posts")
22
23
objects = ActiveManager()
24
all_objects = models.Manager()
25
26
class Meta:
27
ordering = ["created_at"]
28
29
def __str__(self):
30
return self.title or f"Reply by {self.created_by}"
31
32
@property
33
def is_reply(self):
34
return self.parent is not None
35

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button