X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/6280673f35e13e75e81c5b7821bd2a44a1831eab..357027375ff8867f42ca34bcbfb5a78b5b185fc3:/apps/polls/models.py diff --git a/apps/polls/models.py b/apps/polls/models.py deleted file mode 100644 index 8e356683e..000000000 --- a/apps/polls/models.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. -# -from django.db import models -from django.utils.translation import ugettext_lazy as _ -from django.core.exceptions import ValidationError -from django.core.urlresolvers import reverse - - -USED_POLLS_KEY = 'used_polls' - - -class Poll(models.Model): - - question = models.TextField(_('question')) - slug = models.SlugField(_('slug')) - 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(): - 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]) - - @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, []) - - -class PollItem(models.Model): - - poll = models.ForeignKey(Poll, related_name='items') - content = models.TextField(_('content')) - 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, []).append(self.poll.id) - session.save()