~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to pybb/models.py

  • Committer: Timo Wingender
  • Date: 2010-06-10 12:42:55 UTC
  • mto: This revision was merged to the branch mainline in revision 218.
  • Revision ID: timo.wingender@gmx.de-20100610124255-4958hbhzx9aqcrpa
Implement password change

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from datetime import datetime
2
 
from mainpage.templatetags.wl_markdown import do_wl_markdown
 
2
from mainpage.templatetags.wl_markdown import do_wl_markdown as Markdown
3
3
import os.path
4
 
import hashlib
 
4
import sha
5
5
 
6
6
from django.db import models
7
7
from django.contrib.auth.models import User
16
16
 
17
17
from django.conf import settings
18
18
if settings.USE_SPHINX:
19
 
    from djangosphinx.models import SphinxSearch
 
19
    from djangosphinx import SphinxSearch
20
20
 
21
21
try:
22
22
    from notification import models as notification
26
26
 
27
27
MARKUP_CHOICES = (
28
28
    ('markdown', 'markdown'),
29
 
    ('bbcode', 'bbcode'),
 
29
    #    ('bbcode', 'bbcode'),
30
30
)
31
31
 
32
32
 
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)
67
68
 
68
69
    class Meta:
69
70
        ordering = ['position']
84
85
        return Post.objects.filter(topic__forum=self).select_related()
85
86
 
86
87
    @property
87
 
    def post_count(self):
88
 
        return Post.objects.filter(topic__forum=self).count()
89
 
 
90
 
    @property
91
88
    def last_post(self):
92
89
        posts = self.posts.order_by('-created').select_related()
93
90
        try:
106
103
    sticky = models.BooleanField(_('Sticky'), blank=True, default=False)
107
104
    closed = models.BooleanField(_('Closed'), blank=True, default=False)
108
105
    subscribers = models.ManyToManyField(User, related_name='subscriptions', verbose_name=_('Subscribers'), blank=True)
 
106
    post_count = models.IntegerField(_('Post count'), blank=True, default=0)
109
107
 
110
108
    # Django sphinx
111
109
    if settings.USE_SPHINX:
131
129
    def last_post(self):
132
130
        return self.posts.all().order_by('-created').select_related()[0]
133
131
 
134
 
    @property
135
 
    def post_count(self):
136
 
        return Post.objects.filter(topic=self).count()
137
 
 
138
132
    def get_absolute_url(self):
139
133
        return reverse('pybb_topic', args=[self.id])
140
134
 
144
138
            self.created = datetime.now()
145
139
        super(Topic, self).save(*args, **kwargs)
146
140
 
 
141
      
147
142
    def update_read(self, user):
148
143
        read, new = Read.objects.get_or_create(user=user, topic=self)
149
144
        if not new:
171
166
        if self.markup == 'bbcode':
172
167
            self.body_html = mypostmarkup.markup(self.body, auto_urls=False)
173
168
        elif self.markup == 'markdown':
174
 
            self.body_html = unicode(do_wl_markdown(self.body, safe_mode='escape', wikiwords=False))
 
169
            self.body_html = unicode(Markdown(self.body, safe_mode='escape'))
175
170
        else:
176
171
            raise Exception('Invalid markup property: %s' % self.markup)
177
172
 
227
222
 
228
223
        if new:
229
224
            self.topic.updated = datetime.now()
 
225
            self.topic.post_count += 1
230
226
            self.topic.save()
231
227
            self.topic.forum.updated = self.topic.updated
 
228
            self.topic.forum.post_count += 1
232
229
            self.topic.forum.save()
233
230
 
234
231
        super(Post, self).save(*args, **kwargs)
243
240
        head_post_id = self.topic.posts.order_by('created')[0].id
244
241
        super(Post, self).delete(*args, **kwargs)
245
242
 
 
243
        self.topic.post_count -= 1
246
244
        self.topic.save()
 
245
        self.topic.forum.post_count -= 1
247
246
        self.topic.forum.save()
248
247
 
249
248
        if self_id == head_post_id:
325
324
    def save(self, *args, **kwargs):
326
325
        super(Attachment, self).save(*args, **kwargs)
327
326
        if not self.hash:
328
 
            self.hash = hashlib.sha1(str(self.id) + settings.SECRET_KEY).hexdigest()
 
327
            self.hash = sha.new(str(self.id) + settings.SECRET_KEY).hexdigest()
329
328
        super(Attachment, self).save(*args, **kwargs)
330
329
 
331
330
    def __unicode__(self):