Source

cmsplugin-poll / cmsplugin_poll / models.py

Full commit
Antoine Nguyen e2317b7 




Bertrand Bordage 49328be 






Antoine Nguyen e2317b7 




















Bertrand Bordage 49328be 









Antoine Nguyen e2317b7 



Bertrand Bordage 49328be 



Antoine Nguyen e2317b7 




from django.db import models
from django.utils.translation import ugettext_lazy as _
from cms.models import CMSPlugin

class Poll(models.Model):
    question = models.CharField(_('question'), max_length=300)
    pub_date = models.DateTimeField(_('date published'))
    close_date = models.DateTimeField(_('date closed'), null=True)

    class Meta:
        verbose_name = _('Poll')
        verbose_name_plural = _('Polls')

    def __unicode__(self):
        return unicode(self.question)

    def __repr__(self):
        return unicode(self)

    @property
    def votes(self):
        res = 0
        for c in self.choice_set.all():
            res += c.votes
        return res

    def getrate(self, choice):
        total = self.votes
        if not total:
            return total
        return choice.votes / float(total) * 100.0

class Choice(models.Model):
    poll = models.ForeignKey(Poll, verbose_name=_('poll'))
    choice = models.CharField(_('choice'), max_length=200)
    votes = models.IntegerField(_('votes'), default=0)

    class Meta:
        verbose_name = _('Choice')
        verbose_name_plural = _('Choices')

    def __unicode__(self):
        return '%s (%s)' % (self.choice, self.poll)

class PollPlugin(CMSPlugin):
    poll = models.ForeignKey(Poll, verbose_name=_("Poll to display"))

    class Meta:
        verbose_name = _('Poll plugin')
        verbose_name_plural = _('Poll plugins')

    def __unicode__(self):
        return self.poll.question

    def __str__(self):
        return self.poll.question