From 6ce709bd884b501a7dd586f850371054e13d165c Mon Sep 17 00:00:00 2001 From: Mike Mintz Date: Mon, 5 Sep 2011 22:51:14 -0700 Subject: [PATCH] Code cleanup in polls --- deme_django/modules/poll/models.py | 2 +- .../poll/templates/poll/approvenpoll.html | 85 +++++++++---------- deme_django/modules/poll/views.py | 34 ++++---- 3 files changed, 58 insertions(+), 63 deletions(-) diff --git a/deme_django/modules/poll/models.py b/deme_django/modules/poll/models.py index 3ad573c3..85447d17 100644 --- a/deme_django/modules/poll/models.py +++ b/deme_django/modules/poll/models.py @@ -17,7 +17,7 @@ class Poll(Collection): introduced_abilities = frozenset(['edit Poll.visibility', 'view Poll.visibility', 'edit Poll.question', 'view Poll.question', 'edit Poll.begins', 'view Poll.begins', 'edit Poll.deadline', 'view Poll.deadline', 'edit Poll.eligibles', 'view Poll.eligibles', 'edit Poll.display_write_ins', - 'view Poll.display_write_ins']) + 'view Poll.display_write_ins', 'access_proposition_responses']) introduced_global_abilities = frozenset(['create Poll']) dyadic_relations = {} diff --git a/deme_django/modules/poll/templates/poll/approvenpoll.html b/deme_django/modules/poll/templates/poll/approvenpoll.html index cac66e3c..8ab99fcd 100644 --- a/deme_django/modules/poll/templates/poll/approvenpoll.html +++ b/deme_django/modules/poll/templates/poll/approvenpoll.html @@ -1,7 +1,6 @@ {% extends layout %} {% load item_tags %} {% block content %} - - + -{% subclassfields %} -{% if memberships %} +{% if propositions %}
- {% for membership in propositions %} + {% for proposition in propositions %}
- {% viewable_name membership %} - Summary: {{membership.summary_text}} - - +
-
- View as an item{{membership.body|safe}} +
+ View as an item{{proposition.body|safe}}
{% endfor %}
@@ -203,7 +195,7 @@
{% else %} - No Items In This Collection + No propositions in this poll {% endif %} {# We need to figure out where all the buttons go. So "Make new write in" cannot happen if you are admin and the poll hasn't started #} @@ -247,30 +239,37 @@

Responses:

- {% for key,value in Responses.items %} -
- {% viewable_name key %} - {% ifnotequal item.visibility 'closed' %} - {% if value %} has responded - {% ifequal item.visibility 'responses visible' %} -
- - {% else %} -
- {% endifequal %} - {% else %} - has not responded
- {% endif %} - {% else %} - - {% endifnotequal %} - {% endfor %} + {% if can_view_response_names_and_values %} + {% for key,value in responses.items %} +
+ {% viewable_name key %} + {% if value %} has responded {% else %} has not responded {% endif %} +
+ {% endfor %} + {% else %}{% if can_view_response_names %} + {% for key,value in responses.items %} +
+ {% viewable_name key %} + {% if value %} + has responded + {% ifequal item.visibility 'responses visible' %} +
+ + {% endifequal %} + {% else %} + has not responded + {% endif %} + + {% endfor %} + {% else %} + Responses are not visible + {% endif %}{% endif %} diff --git a/deme_django/modules/poll/views.py b/deme_django/modules/poll/views.py index 1b8b1edc..256db1cc 100644 --- a/deme_django/modules/poll/views.py +++ b/deme_django/modules/poll/views.py @@ -71,30 +71,26 @@ def item_show_html(self): self.context['action_title'] = '' self.require_ability('view ', self.item, wildcard_suffix=True) memberships = self.item.child_memberships - memberships = memberships.filter(active=True) - memberships = memberships.filter(item__active=True) + memberships = memberships.filter(active=True, item__active=True) memberships = self.permission_cache.filter_items('view Membership.item', memberships) memberships = memberships.select_related('item') if memberships: self.permission_cache.filter_items('view Item.name', Item.objects.filter(pk__in=[x.item_id for x in memberships])) - self.context['memberships'] = sorted(memberships, key=lambda x: (not self.permission_cache.agent_can('view Item.name', x.item), x.item.name)) - self.context['cur_agent_in_collection'] = bool(self.item.child_memberships.filter(active=True, item=self.cur_agent)) - self.context['responses'] = PropositionResponseApprove.objects.all().filter(poll=self.item) - eligible_agents = self.item.eligibles.child_memberships - eligible_agents = eligible_agents.filter(active=True) - eligible_agents = eligible_agents.filter(item__active=True) - eligible_agents = self.permission_cache.filter_items('view Membership.item', eligible_agents) - eligible_agents = eligible_agents.select_related('item') - if eligible_agents: - self.permission_cache.filter_items('view Item.name', Item.objects.filter(pk__in=[x.item_id for x in eligible_agents])) - self.context['eligible_agents'] = sorted(eligible_agents, key=lambda x: (not self.permission_cache.agent_can('view Item.name', x.item), x.item.name)) - self.context['participants'] = Agent.objects.filter(poll_participant__poll=self.item) - Responses = dict() - for agent in eligible_agents: - Responses[agent.item] = PropositionResponseApprove.objects.all().filter(poll=self.item).filter(participant=agent.item) - self.context['Responses'] = Responses - self.context['decisions'] = Decision.objects.all().filter(poll=self.item) + self.context['responses'] = PropositionResponseApprove.objects.filter(poll=self.item) + eligible_agent_memberships = self.item.eligibles.child_memberships + eligible_agent_memberships = eligible_agent_memberships.filter(active=True, item__active=True) + eligible_agent_memberships = self.permission_cache.filter_items('view Membership.item', eligible_agent_memberships) + eligible_agent_memberships = eligible_agent_memberships.select_related('item') + if eligible_agent_memberships: + self.permission_cache.filter_items('view Item.name', Item.objects.filter(pk__in=[x.item_id for x in eligible_agent_memberships])) + responses = {} + for agent_membership in eligible_agent_memberships: + responses[agent_membership.item] = PropositionResponseApprove.objects.filter(poll=self.item).filter(participant=agent_membership.item) + self.context['responses'] = responses + self.context['decisions'] = Decision.objects.filter(poll=self.item) self.context['propositions'] = Proposition.objects.filter(memberships__in=memberships) + self.context['can_view_response_names'] = self.item.visibility != 'closed' or self.permission_cache.agent_can('access_proposition_responses', self.item) + self.context['can_view_response_names_and_values'] = self.item.visibility == 'responses visible' or self.permission_cache.agent_can('access_proposition_responses', self.item) template = loader.get_template('poll/approvenpoll.html') return HttpResponse(template.render(self.context))