X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/99f6dd4f1ff0390de9a9bbd4e3352b953cb9a235..f82c33291d3bf97d7447aba236940bdfe560f703:/apps/polls/models.py?ds=sidebyside diff --git a/apps/polls/models.py b/apps/polls/models.py index 16713e479..8e356683e 100644 --- a/apps/polls/models.py +++ b/apps/polls/models.py @@ -15,50 +15,50 @@ class Poll(models.Model): question = models.TextField(_('question')) slug = models.SlugField(_('slug')) - open = models.BooleanField(_('open'), default = False) - + open = models.BooleanField(_('open'), default=False) + class Meta: verbose_name = _('Poll') verbose_name_plural = _('Polls') - + def clean(self): - if self.open and Poll.objects.exclude(pk = self.pk).filter(slug = self.slug).exists(): + if self.open and Poll.objects.exclude(pk=self.pk).filter(slug=self.slug).exists(): raise ValidationError(_('Slug of an open poll needs to be unique')) return super(Poll, self).clean() - + def __unicode__(self): return self.question[:100] + ' (' + self.slug + ')' - + def get_absolute_url(self): - return reverse('poll', args = [self.slug]) - + return reverse('poll', args=[self.slug]) + @property def vote_count(self): return self.items.all().aggregate(models.Sum('vote_count'))['vote_count__sum'] - + def voted(self, session): - return self.id in session.get(USED_POLLS_KEY, set()) + return self.id in session.get(USED_POLLS_KEY, []) + - class PollItem(models.Model): - - poll = models.ForeignKey(Poll, related_name = 'items') + + poll = models.ForeignKey(Poll, related_name='items') content = models.TextField(_('content')) - vote_count = models.IntegerField(_('vote count'), default = 0) - + vote_count = models.IntegerField(_('vote count'), default=0) + class Meta: verbose_name = _('vote item') verbose_name_plural = _('vote items') - + def __unicode__(self): return self.content + ' @ ' + unicode(self.poll) - + @property def vote_ratio(self): return (float(self.vote_count) / self.poll.vote_count) * 100 if self.poll.vote_count else 0 - + def vote(self, session): self.vote_count = self.vote_count + 1 self.save() - session.setdefault(USED_POLLS_KEY, set()).add(self.poll.id) + session.setdefault(USED_POLLS_KEY, []).append(self.poll.id) session.save()