some additions in poll and application-poll
This commit is contained in:
parent
c4874ae6a0
commit
114a68b120
@ -412,16 +412,15 @@ class Application(models.Model, Slide):
|
||||
"""
|
||||
Generates a poll object for the application
|
||||
"""
|
||||
poll = ApplicationPoll()
|
||||
poll = ApplicationPoll(application=self)
|
||||
poll.save()
|
||||
poll.set_options([{'application': self}])
|
||||
poll.set_options()
|
||||
self.writelog(_("Poll created"), user)
|
||||
return poll
|
||||
|
||||
@property
|
||||
def polls(self):
|
||||
#todo: return an query_set
|
||||
return [option.poll for option in self.applicationoption_set.all()]
|
||||
return self.applicationpoll_set.all()
|
||||
|
||||
@property
|
||||
def results(self):
|
||||
@ -493,14 +492,24 @@ register_slidemodel(Application)
|
||||
|
||||
|
||||
class ApplicationOption(BaseOption):
|
||||
application = models.ForeignKey(Application)
|
||||
|
||||
def __unicode__(self):
|
||||
return unicode(self.application)
|
||||
def __getattr__(self, name):
|
||||
if name in [_('yes'), _('no'), _('contained')]:
|
||||
print self.poll.get_vote_values()
|
||||
try:
|
||||
return self.get_votes().get(value=name)
|
||||
except Vote.DoesNotExist:
|
||||
pass
|
||||
raise AttributeError(name)
|
||||
|
||||
|
||||
class ApplicationPoll(BasePoll):
|
||||
option_class = ApplicationOption
|
||||
|
||||
application = models.ForeignKey(Application)
|
||||
|
||||
def get_application(self):
|
||||
return self.get_options()[0].application
|
||||
return self.application
|
||||
|
||||
def set_options(self):
|
||||
self.get_option_class()(poll=self).save()
|
||||
|
@ -74,16 +74,16 @@
|
||||
{% endif %}
|
||||
<a href="{% url application_poll_activate poll.id %}">{% trans 'project' %}</a>
|
||||
<br>
|
||||
{% if poll.has_vote %}
|
||||
{% for option in poll.options %}
|
||||
<img src="/static/images/icons/voting-yes.png" title="{% trans 'Yes' %}"> {{ option.yes }}<br>
|
||||
<img src="/static/images/icons/voting-no.png" title="{% trans 'No' %}"> {{ option.no }}<br>
|
||||
<img src="/static/images/icons/voting-abstention.png" title="{% trans 'Abstention' %}"> {{ option.undesided }}<br>
|
||||
{% if poll.has_votes %}
|
||||
{% with poll.get_options.0 as option %}
|
||||
<img src="/static/images/icons/voting-yes.png" title="{% trans 'Yes' %}"> {{ option.yes.weight }}<br>
|
||||
<img src="/static/images/icons/voting-no.png" title="{% trans 'No' %}"> {{ option.no.weight }}<br>
|
||||
<img src="/static/images/icons/voting-abstention.png" title="{% trans 'Abstention' %}"> {{ option.contained.weight }}<br>
|
||||
<img src="/static/images/icons/voting-invalid.png" title="{% trans 'Invalid' %}"> {{ poll.votesinvalidf }}<br>
|
||||
<div style="border-top: 1px solid; padding-top: 5px; margin: 5px 0; width: 10em;">
|
||||
<img src="/static/images/icons/voting-total.png" title="{% trans 'Votes cast' %}"> {{ poll.votescastf }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{% if perms.application.can_manage_application %}
|
||||
{% if forloop.last %}
|
||||
{% if "genpoll" in actions %}
|
||||
|
@ -362,14 +362,14 @@ def delete_poll(request, poll_id):
|
||||
"""
|
||||
delete a poll from this application
|
||||
"""
|
||||
poll = Poll.objects.get(pk=poll_id)
|
||||
poll = ApplicationPoll.objects.get(pk=poll_id)
|
||||
application = poll.application
|
||||
count = application.poll_set.filter(id__lte=poll_id).count()
|
||||
count = application.polls.filter(id__lte=poll_id).count()
|
||||
if request.method == 'POST':
|
||||
poll.delete()
|
||||
messages.success(request, _('Poll was successfully deleted.'))
|
||||
else:
|
||||
del_confirm_form(request, poll, name=_("the %s. poll") % count)
|
||||
del_confirm_form(request, poll, name=_("the %s. poll") % count, delete_link=reverse('application_poll_delete', args=[poll_id]))
|
||||
return redirect(reverse('application_view', args=[application.id]))
|
||||
|
||||
|
||||
|
@ -22,12 +22,8 @@ from poll.forms import OptionForm
|
||||
class BaseOption(models.Model):
|
||||
poll = models.ForeignKey('BasePoll')
|
||||
|
||||
@property
|
||||
def votes(self):
|
||||
count = 0
|
||||
for vote in Vote.objects.filter(option=self):
|
||||
count += vote.weight
|
||||
return weight
|
||||
def get_votes(self):
|
||||
return Vote.objects.filter(option=self)
|
||||
|
||||
|
||||
class TextOption(BaseOption):
|
||||
@ -54,7 +50,12 @@ class BasePoll(models.Model, Slide):
|
||||
option_class = TextOption
|
||||
vote_values = [_('votes')]
|
||||
|
||||
def set_options(self, options_data):
|
||||
def has_votes(self):
|
||||
if self.get_options().filter(vote__isnull=False):
|
||||
return True
|
||||
return False
|
||||
|
||||
def set_options(self, options_data=[]):
|
||||
for option_data in options_data:
|
||||
option = self.option_class(**option_data)
|
||||
option.poll = self
|
||||
@ -78,7 +79,6 @@ class BasePoll(models.Model, Slide):
|
||||
vote.weight = data[value]
|
||||
vote.save()
|
||||
|
||||
|
||||
def get_form_values(self, option_id):
|
||||
values = []
|
||||
for value in self.get_vote_values():
|
||||
|
@ -35,10 +35,12 @@ def gen_confirm_form(request, message, url):
|
||||
messages.warning(request, '%s<form action="%s" method="post"><input type="hidden" value="%s" name="csrfmiddlewaretoken"><input type="submit" value="%s" /> <input type="button" value="%s"></form>' % (message, url, csrf(request)['csrf_token'], _("Yes"), _("No")))
|
||||
|
||||
|
||||
def del_confirm_form(request, object, name=None):
|
||||
def del_confirm_form(request, object, name=None, delete_link=None):
|
||||
if name is None:
|
||||
name = object
|
||||
gen_confirm_form(request, _('Do you really want to delete <b>%s</b>?') % name, object.get_absolute_url('delete'))
|
||||
if delete_link is None:
|
||||
delete_link = object.get_absolute_url('delete')
|
||||
gen_confirm_form(request, _('Do you really want to delete <b>%s</b>?') % name, delete_link)
|
||||
|
||||
|
||||
def render_response(req, *args, **kwargs):
|
||||
|
Loading…
Reference in New Issue
Block a user