Source code for election_day.views.vote.entities

from morepath import redirect
from onegov.election_day import ElectionDayApp
from onegov.election_day.layouts import VoteLayout
from onegov.election_day.models import Ballot
from onegov.election_day.models import Vote
from onegov.election_day.security import MaybePublic
from onegov.election_day.utils import add_last_modified_header
from onegov.election_day.utils.vote import get_ballot_data_by_entity
from webob.exc import HTTPNotFound


from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from onegov.core.types import JSON_ro
    from onegov.core.types import RenderData
    from onegov.election_day.request import ElectionDayRequest
    from webob.response import Response


@ElectionDayApp.html(
    model=Vote,
    name='entities',
    template='vote/entities.pt',
    permission=MaybePublic
)
[docs] def view_vote_entities( self: Vote, request: 'ElectionDayRequest' ) -> 'RenderData': """" The main view (proposal). """ layout = VoteLayout(self, request, 'entities') return { 'vote': self, 'layout': layout }
@ElectionDayApp.html( model=Vote, name='proposal-entities', template='vote/entities.pt', permission=MaybePublic )
[docs] def view_vote_entities_proposal( self: Vote, request: 'ElectionDayRequest' ) -> 'RenderData': """" The main view (proposal). """ layout = VoteLayout(self, request, 'proposal-entities') return { 'vote': self, 'layout': layout }
@ElectionDayApp.html( model=Vote, name='counter-proposal-entities', template='vote/entities.pt', permission=MaybePublic )
[docs] def view_vote_entities_counter_proposal( self: Vote, request: 'ElectionDayRequest' ) -> 'RenderData': """" The main view (counter-proposal). """ layout = VoteLayout(self, request, 'counter-proposal-entities') return { 'vote': self, 'layout': layout }
@ElectionDayApp.html( model=Vote, name='tie-breaker-entities', template='vote/entities.pt', permission=MaybePublic )
[docs] def view_vote_entities_tie_breaker( self: Vote, request: 'ElectionDayRequest' ) -> 'RenderData': """" The main view (tie-breaker). """ layout = VoteLayout(self, request, 'tie-breaker-entities') return { 'vote': self, 'layout': layout }
@ElectionDayApp.html( model=Vote, name='proposal-by-entities-map', permission=MaybePublic )
[docs] def view_vote_entities_map_proposal( self: Vote, request: 'ElectionDayRequest' ) -> 'Response': """ A static link to the map of the proposal. """ ballot = getattr(self, 'proposal', None) if ballot: return redirect( request.link( ballot, name='entities-map', query_params=dict(request.GET) ) ) raise HTTPNotFound()
@ElectionDayApp.html( model=Vote, name='counter-proposal-by-entities-map', permission=MaybePublic )
[docs] def view_vote_entities_map_counter_proposal( self: Vote, request: 'ElectionDayRequest' ) -> 'Response': """ A static link to the map of the counter proposal. """ ballot = getattr(self, 'counter_proposal', None) if ballot: return redirect( request.link( ballot, name='entities-map', query_params=dict(request.GET) ) ) raise HTTPNotFound()
@ElectionDayApp.html( model=Vote, name='tie-breaker-by-entities-map', permission=MaybePublic )
[docs] def view_vote_entities_map_tie_breaker( self: Vote, request: 'ElectionDayRequest' ) -> 'Response': """ A static link to the map of the tie breaker. """ ballot = getattr(self, 'tie_breaker', None) if ballot: return redirect( request.link( ballot, name='entities-map', query_params=dict(request.GET) ) ) raise HTTPNotFound()
@ElectionDayApp.json( model=Ballot, name='by-entity', permission=MaybePublic )
[docs] def view_ballot_by_entity( self: Ballot, request: 'ElectionDayRequest' ) -> 'JSON_ro': """ Returns the data for the ballot map. """ return get_ballot_data_by_entity(self) # type:ignore[return-value]
@ElectionDayApp.html( model=Ballot, name='entities-map', template='embed.pt', permission=MaybePublic )
[docs] def view_ballot_entities_as_map( self: Ballot, request: 'ElectionDayRequest' ) -> 'RenderData': """" View the results of the entities of ballot as map. """ @request.after def add_last_modified(response: 'Response') -> None: add_last_modified_header(response, self.vote.last_modified) layout = VoteLayout(self.vote, request, f'{self.type}-entities') return { 'model': self, 'layout': layout, 'type': 'map', 'scope': 'entities', 'year': self.vote.date.year, 'thumbs': 'true', 'color_scale': 'rb', 'label_left_hand': layout.label('Nay'), 'label_right_hand': layout.label('Yay'), 'data_url': request.link(self, name='by-entity'), }
@ElectionDayApp.html( model=Ballot, name='entities-table', template='embed.pt', permission=MaybePublic )
[docs] def view_ballot_as_table( self: Ballot, request: 'ElectionDayRequest' ) -> 'RenderData': """" View the results of the entities of ballot as table. """ @request.after def add_last_modified(response: 'Response') -> None: add_last_modified_header(response, self.vote.last_modified) return { 'ballot': self, 'layout': VoteLayout(self.vote, request, f'{self.type}-entities'), 'type': 'ballot-table', 'year': self.vote.date.year, 'scope': 'entities', }
@ElectionDayApp.html( model=Vote, name='proposal-by-entities-table', permission=MaybePublic )
[docs] def view_vote_entities_table_proposal( self: Vote, request: 'ElectionDayRequest' ) -> 'Response': """ A static link to the table by entities of the proposal. """ ballot = getattr(self, 'proposal', None) if ballot: return redirect( request.link( ballot, name='entities-table', query_params=dict(request.GET) ) ) raise HTTPNotFound()
@ElectionDayApp.html( model=Vote, name='counter-proposal-by-entities-table', permission=MaybePublic )
[docs] def view_vote_entities_table_counter_proposal( self: Vote, request: 'ElectionDayRequest' ) -> 'Response': """ A static link to the table by entities of the counter proposal. """ ballot = getattr(self, 'counter_proposal', None) if ballot: return redirect( request.link( ballot, name='entities-table', query_params=dict(request.GET) ) ) raise HTTPNotFound()
@ElectionDayApp.html( model=Vote, name='tie-breaker-by-entities-table', permission=MaybePublic )
[docs] def view_vote_entities_table_tie_breaker( self: Vote, request: 'ElectionDayRequest' ) -> 'Response': """ A static link to the table of the tie breaker. """ ballot = getattr(self, 'tie_breaker', None) if ballot: return redirect( request.link( ballot, name='entities-table', query_params=dict(request.GET) ) ) raise HTTPNotFound()
@ElectionDayApp.svg_file( model=Ballot, name='entities-map-svg', permission=MaybePublic )
[docs] def view_ballot_entities_svg( self: Ballot, request: 'ElectionDayRequest' ) -> 'RenderData': """ Download the results of the entities of ballot as a SVG. """ layout = VoteLayout( self.vote, request, tab=f'{self.type}-entities' ) return { 'path': layout.svg_path, 'name': layout.svg_name }