models.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from django.conf import settings
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from mptt.models import MPTTModel, TreeForeignKey
  5. class Forum(MPTTModel):
  6. parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
  7. type = models.CharField(max_length=12)
  8. token = models.CharField(max_length=255,null=True, blank=True)
  9. name = models.CharField(max_length=255)
  10. slug = models.SlugField(max_length=255)
  11. description = models.TextField(null=True, blank=True)
  12. description_preparsed = models.TextField(null=True, blank=True)
  13. threads = models.PositiveIntegerField(default=0)
  14. posts = models.PositiveIntegerField(default=0)
  15. #last_thread = models.ForeignKey('threads.Thread', related_name='+', null=True, blank=True)
  16. last_thread_name = models.CharField(max_length=255, null=True, blank=True)
  17. last_thread_slug = models.SlugField(null=True, blank=True)
  18. last_thread_date = models.DateTimeField(null=True, blank=True)
  19. last_poster = models.ForeignKey('users.User', related_name='+', null=True, blank=True)
  20. last_poster_name = models.CharField(max_length=255, null=True, blank=True)
  21. last_poster_slug = models.SlugField(max_length=255, null=True, blank=True)
  22. last_poster_style = models.CharField(max_length=255, null=True, blank=True)
  23. prune_start = models.PositiveIntegerField(default=0)
  24. prune_last = models.PositiveIntegerField(default=0)
  25. redirect = models.CharField(max_length=255, null=True, blank=True)
  26. template = models.CharField(max_length=255, null=True, blank=True)
  27. closed = models.BooleanField(default=False)
  28. def __unicode__(self):
  29. if self.token == 'root':
  30. return unicode(_('Root Category'))
  31. return unicode(self.name)
  32. def set_description(self, description):
  33. self.description = description.strip()
  34. self.description_preparsed = ''
  35. if self.description:
  36. import markdown
  37. self.description_preparsed = markdown.markdown(description, safe_mode='escape', output_format=settings.OUTPUT_FORMAT)
  38. def move_content(self, target):
  39. pass
  40. def prune(self):
  41. pass