~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to pybb/models.py

  • Committer: Holger Rapp
  • Date: 2012-03-17 16:22:06 UTC
  • Revision ID: sirver@gmx.de-20120317162206-fgttamk22qt1nytj
Let post count be calculated automatically instead of keeping track of it manually. Let's see how this affects performance

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
    description = models.TextField(_('Description'), blank=True, default='')
65
65
    moderators = models.ManyToManyField(User, blank=True, null=True, verbose_name=_('Moderators'))
66
66
    updated = models.DateTimeField(_('Updated'), null=True)
67
 
    post_count = models.IntegerField(_('Post count'), blank=True, default=0)
68
67
 
69
68
    class Meta:
70
69
        ordering = ['position']
85
84
        return Post.objects.filter(topic__forum=self).select_related()
86
85
 
87
86
    @property
 
87
    def post_count(self):
 
88
        return Post.objects.filter(topic__forum=self).count()
 
89
 
 
90
    @property
88
91
    def last_post(self):
89
92
        posts = self.posts.order_by('-created').select_related()
90
93
        try:
103
106
    sticky = models.BooleanField(_('Sticky'), blank=True, default=False)
104
107
    closed = models.BooleanField(_('Closed'), blank=True, default=False)
105
108
    subscribers = models.ManyToManyField(User, related_name='subscriptions', verbose_name=_('Subscribers'), blank=True)
106
 
    post_count = models.IntegerField(_('Post count'), blank=True, default=0)
107
109
 
108
110
    # Django sphinx
109
111
    if settings.USE_SPHINX:
129
131
    def last_post(self):
130
132
        return self.posts.all().order_by('-created').select_related()[0]
131
133
 
 
134
    @property
 
135
    def post_count(self):
 
136
        return Post.objects.filter(topic=self).count()
 
137
 
132
138
    def get_absolute_url(self):
133
139
        return reverse('pybb_topic', args=[self.id])
134
140
 
138
144
            self.created = datetime.now()
139
145
        super(Topic, self).save(*args, **kwargs)
140
146
 
141
 
      
142
147
    def update_read(self, user):
143
148
        read, new = Read.objects.get_or_create(user=user, topic=self)
144
149
        if not new:
222
227
 
223
228
        if new:
224
229
            self.topic.updated = datetime.now()
225
 
            self.topic.post_count += 1
226
230
            self.topic.save()
227
231
            self.topic.forum.updated = self.topic.updated
228
 
            self.topic.forum.post_count += 1
229
232
            self.topic.forum.save()
230
233
 
231
234
        super(Post, self).save(*args, **kwargs)
240
243
        head_post_id = self.topic.posts.order_by('created')[0].id
241
244
        super(Post, self).delete(*args, **kwargs)
242
245
 
243
 
        self.topic.post_count -= 1
244
246
        self.topic.save()
245
 
        self.topic.forum.post_count -= 1
246
247
        self.topic.forum.save()
247
248
 
248
249
        if self_id == head_post_id: