models.py 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from django.db import models
  2. from django.utils.translation import ugettext_lazy as _
  3. class ThreadManager(models.Manager):
  4. def filter_stats(self, start, end):
  5. return self.filter(start__gte=start).filter(start__lte=end)
  6. class Thread(models.Model):
  7. forum = models.ForeignKey('forums.Forum')
  8. weight = models.PositiveIntegerField(default=0,db_index=True)
  9. type = models.PositiveIntegerField(default=0)
  10. name = models.CharField(max_length=255)
  11. slug = models.SlugField(max_length=255)
  12. replies = models.PositiveIntegerField(default=0)
  13. replies_reported = models.PositiveIntegerField(default=0)
  14. replies_moderated = models.PositiveIntegerField(default=0)
  15. replies_deleted = models.PositiveIntegerField(default=0)
  16. score = models.PositiveIntegerField(default=30,db_index=True)
  17. upvotes = models.PositiveIntegerField(default=0)
  18. downvotes = models.PositiveIntegerField(default=0)
  19. start = models.DateTimeField(db_index=True)
  20. start_post = models.ForeignKey('Post',related_name='+',null=True,blank=True,on_delete=models.SET_NULL)
  21. start_poster = models.ForeignKey('users.User',null=True,blank=True)
  22. start_poster_name = models.CharField(max_length=255)
  23. start_poster_slug = models.SlugField(max_length=255)
  24. start_poster_style = models.CharField(max_length=255)
  25. last = models.DateTimeField(db_index=True)
  26. last_post = models.ForeignKey('Post',related_name='+',null=True,blank=True,on_delete=models.SET_NULL)
  27. last_poster = models.ForeignKey('users.User',related_name='+',null=True,blank=True)
  28. last_poster_name = models.CharField(max_length=255,null=True,blank=True)
  29. last_poster_slug = models.SlugField(max_length=255,null=True,blank=True)
  30. last_poster_style = models.CharField(max_length=255,null=True,blank=True)
  31. moderated = models.BooleanField(default=False,db_index=True)
  32. deleted = models.BooleanField(default=False,db_index=True)
  33. closed = models.BooleanField(default=False)
  34. objects = ThreadManager()
  35. statistics_name = _('New Threads')
  36. def get_date(self):
  37. return self.start
  38. class PostManager(models.Manager):
  39. def filter_stats(self, start, end):
  40. return self.filter(date__gte=start).filter(date__lte=end)
  41. class Post(models.Model):
  42. forum = models.ForeignKey('forums.Forum',related_name='+')
  43. thread = models.ForeignKey(Thread)
  44. user = models.ForeignKey('users.User',null=True,blank=True)
  45. user_name = models.CharField(max_length=255)
  46. ip = models.GenericIPAddressField()
  47. agent = models.CharField(max_length=255)
  48. post = models.TextField()
  49. post_preparsed = models.TextField()
  50. upvotes = models.PositiveIntegerField(default=0)
  51. downvotes = models.PositiveIntegerField(default=0)
  52. date = models.DateTimeField()
  53. edited = models.BooleanField(default=False)
  54. edits = models.PositiveIntegerField(default=0)
  55. edit_date = models.DateTimeField(null=True,blank=True)
  56. edit_reason = models.CharField(max_length=255,null=True,blank=True)
  57. edit_user = models.ForeignKey('users.User',related_name='+',null=True)
  58. edit_user_name = models.CharField(max_length=255,null=True,blank=True)
  59. edit_user_slug = models.SlugField(max_length=255,null=True,blank=True)
  60. reported = models.BooleanField(default=False)
  61. moderated = models.BooleanField(default=False,db_index=True)
  62. deleted = models.BooleanField(default=False,db_index=True)
  63. protected = models.BooleanField(default=False)
  64. objects = PostManager()
  65. statistics_name = _('New Posts')
  66. def get_date(self):
  67. return self.date