models.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. score = models.PositiveIntegerField(default=30,db_index=True)
  14. upvotes = models.PositiveIntegerField(default=0)
  15. downvotes = models.PositiveIntegerField(default=0)
  16. start = models.DateTimeField(db_index=True)
  17. start_post = models.ForeignKey('Post',related_name='+',null=True,blank=True,on_delete=models.SET_NULL)
  18. start_poster = models.ForeignKey('users.User',null=True,blank=True)
  19. start_poster_name = models.CharField(max_length=255)
  20. start_poster_slug = models.SlugField(max_length=255)
  21. start_poster_style = models.CharField(max_length=255)
  22. last = models.DateTimeField(db_index=True)
  23. last_post = models.ForeignKey('Post',related_name='+',null=True,blank=True,on_delete=models.SET_NULL)
  24. last_poster = models.ForeignKey('users.User',related_name='+',null=True,blank=True)
  25. last_poster_name = models.CharField(max_length=255,null=True,blank=True)
  26. last_poster_slug = models.SlugField(max_length=255,null=True,blank=True)
  27. last_poster_style = models.CharField(max_length=255,null=True,blank=True)
  28. moderated = models.BooleanField(default=False,db_index=True)
  29. hidden = models.BooleanField(default=False,db_index=True)
  30. closed = models.BooleanField(default=False)
  31. objects = ThreadManager()
  32. statistics_name = _('New Threads')
  33. def get_date(self):
  34. return self.start
  35. class PostManager(models.Manager):
  36. def filter_stats(self, start, end):
  37. return self.filter(date__gte=start).filter(date__lte=end)
  38. class Post(models.Model):
  39. forum = models.ForeignKey('forums.Forum',related_name='+')
  40. thread = models.ForeignKey(Thread)
  41. user = models.ForeignKey('users.User',null=True,blank=True)
  42. user_name = models.CharField(max_length=255)
  43. ip = models.GenericIPAddressField()
  44. agent = models.CharField(max_length=255)
  45. post = models.TextField()
  46. post_preparsed = models.TextField()
  47. upvotes = models.PositiveIntegerField(default=0)
  48. downvotes = models.PositiveIntegerField(default=0)
  49. date = models.DateTimeField()
  50. edited = models.BooleanField(default=False)
  51. edits = models.PositiveIntegerField(default=0)
  52. edit_date = models.DateTimeField(null=True,blank=True)
  53. edit_reason = models.CharField(max_length=255,null=True,blank=True)
  54. edit_user = models.ForeignKey('users.User',related_name='+',null=True)
  55. edit_user_name = models.CharField(max_length=255,null=True,blank=True)
  56. edit_user_slug = models.SlugField(max_length=255,null=True,blank=True)
  57. reported = models.BooleanField(default=False)
  58. moderated = models.BooleanField(default=False,db_index=True)
  59. hidden = models.BooleanField(default=False,db_index=True)
  60. protected = models.BooleanField(default=False)
  61. objects = PostManager()
  62. statistics_name = _('New Posts')
  63. def get_date(self):
  64. return self.date