~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to wlpoll/models.py

  • Committer: kaputtnik
  • Date: 2019-05-30 18:20:02 UTC
  • mto: This revision was merged to the branch mainline in revision 540.
  • Revision ID: kaputtnik-20190530182002-g7l91m1xo28clghv
adjusted README; first commit on the new server

Show diffs side-by-side

added added

removed removed

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