~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to wlpoll/models.py

  • Committer: Holger Rapp
  • Date: 2009-02-21 18:24:02 UTC
  • Revision ID: sirver@kallisto.local-20090221182402-k3tuf5c4gjwslbjf
Main Page contains now the same informations as before

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from django.db import models
2
 
from django.contrib.auth.models import User
3
 
from django.urls import reverse
4
 
import datetime
5
 
 
6
 
 
7
 
def closed_date_default():
8
 
    return datetime.datetime.now() + datetime.timedelta(days=90)
9
 
 
10
 
 
11
 
class PollManager(models.Manager):
12
 
 
13
 
    def open(self):
14
 
        return self.all().exclude(closed_date__lte=datetime.datetime.now())
15
 
 
16
 
 
17
 
class Poll(models.Model):
18
 
    name = models.CharField(max_length=256)
19
 
    pub_date = models.DateTimeField(
20
 
        'date published', default=datetime.datetime.now)
21
 
    closed_date = models.DateTimeField('date closed', default=closed_date_default,
22
 
                                       blank=True, null=True)
23
 
 
24
 
    objects = PollManager()
25
 
 
26
 
    def total_votes(self):
27
 
        return self.choices.all().aggregate(models.Sum('votes'))['votes__sum']
28
 
 
29
 
    def has_user_voted(self, u):
30
 
        return u.poll_votes.filter(poll=self).count() > 0
31
 
 
32
 
    def is_closed(self):
33
 
        if self.closed_date is None:
34
 
            return False
35
 
        return self.closed_date < datetime.datetime.now()
36
 
 
37
 
    def get_absolute_url(self):
38
 
        return reverse('wlpoll_detail', kwargs={'pk': self.id})
39
 
 
40
 
    def __unicode__(self):
41
 
        return self.name
42
 
 
43
 
 
44
 
class Choice(models.Model):
45
 
    poll = models.ForeignKey(Poll, related_name='choices')
46
 
    choice = models.CharField(max_length=256)
47
 
    votes = models.PositiveIntegerField(default=0)
48
 
 
49
 
    def __unicode__(self):
50
 
        return u"%i:%s" % (self.votes, self.choice)
51
 
 
52
 
 
53
 
class Vote(models.Model):
54
 
    user = models.ForeignKey(User, related_name='poll_votes')
55
 
    poll = models.ForeignKey(Poll)
56
 
    choice = models.ForeignKey(Choice)
57
 
    date_voted = models.DateTimeField(
58
 
        'voted at', default=datetime.datetime.now)