class Thread(models.Model):
class Meta:
get_latest_by = "post_date"
author = models.ForeignKey(Player, related_name="threads")
post_date = models.DateTimeField()
parent = models.ForeignKey(Subsection, related_name="children")
close_note = models.ForeignKey(Note, null=True, blank=True)
sticky = models.BooleanField()
page_views = models.IntegerField(default=0)
def __str__(self):
return util.plaintext(self.title)
def to_url(self):
return str(self.id)
@property
def title(self):
try:
return self.children.order_by("post_date")[0].title
except IndexError:
return ""
class Post(models.Model):
class Meta:
get_latest_by = "post_date"
title = models.CharField(max_length=max_title_length)
author = models.ForeignKey(Player, related_name="posts")
parent = models.ForeignKey(Thread, related_name="children")
post_date = models.DateTimeField()
last_edit_date = models.DateTimeField(blank=True, null=True)
text = models.TextField(max_length=max_post_length)
flag_note = models.ForeignKey(Note, blank=True, null=True)
objects = PostManager()
def __str__(self):
return util.plaintext(self.text)[:10]
def to_url(self):
return str(self.id)
@classmethod
def create(cls, title=None, text=None, author=None,
parent_id=None, post_date=None):
parent = Thread.objects.get(id=parent_id)
if post_date is None:
post_date = datetime.now()
return cls(title=title, author=author, parent=parent,
post_date=post_date, text=text, flag_note=None)