models.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. style = models.CharField(max_length=255, null=True, blank=True)
  27. template = models.CharField(max_length=255, null=True, blank=True)
  28. closed = models.BooleanField(default=False)
  29. def __unicode__(self):
  30. if self.token == 'root':
  31. return unicode(_('Root Category'))
  32. return unicode(self.name)
  33. def set_description(self, description):
  34. self.description = description.strip()
  35. self.description_preparsed = ''
  36. if self.description:
  37. import markdown
  38. self.description_preparsed = markdown.markdown(description, safe_mode='escape', output_format=settings.OUTPUT_FORMAT)
  39. def move_content(self, target):
  40. pass
  41. def prune(self):
  42. pass