~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to wlpoll/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:
2
2
from django.contrib.auth.models import User
3
3
import datetime
4
4
 
5
 
# lambda couldn't be used in field default and for python2 it must be declared
6
 
# in module body
7
 
def closed_date_default():
8
 
    return lambda: datetime.datetime.now() + datetime.timedelta(days=90)
9
 
 
10
5
class PollManager(models.Manager):
11
6
    def open(self):
12
7
        return self.all().exclude(closed_date__lte=datetime.datetime.now)
14
9
class Poll(models.Model):
15
10
    name = models.CharField(max_length=256)
16
11
    pub_date = models.DateTimeField("date published", default = datetime.datetime.now)
17
 
    closed_date = models.DateTimeField("date closed", default = closed_date_default,
18
 
                                       blank=True, null=True)
 
12
    closed_date = models.DateTimeField("date closed", default= lambda: datetime.datetime.now() + datetime.timedelta(days=90),
 
13
                            blank=True, null=True)
19
14
 
20
15
    objects = PollManager()
21
 
        
 
16
 
22
17
    def total_votes(self):
23
18
        return self.choices.all().aggregate(models.Sum("votes"))["votes__sum"]
24
19
 
32
27
 
33
28
    @models.permalink
34
29
    def get_absolute_url(self):
35
 
        return ('wlpoll_detail', (), {'pk': self.id})
 
30
        return ('wlpoll_detail', None, {'object_id': self.id})
36
31
 
37
32
    def __unicode__(self):
38
33
        return self.name