diff --git a/.editorconfig b/.editorconfig index d7bf630e..7cdd5e06 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,12 @@ trim_trailing_whitespace = true end_of_line = lf charset = utf-8 +[*.sass] +indent_size = 2 + +[*.nix] +indent_size = 2 + [*.py] max_line_length = 140 diff --git a/src/ekklesia_portal/app.py b/src/ekklesia_portal/app.py index 5c7b6061..0dea5b08 100644 --- a/src/ekklesia_portal/app.py +++ b/src/ekklesia_portal/app.py @@ -49,6 +49,8 @@ def app_setting_section(): "internal_login_enabled": True, "languages": ["de", "en"], "login_visible": False, + "public_submitters": False, + "public_supporters": False, "report_url": None, "source_code_url": "https://github.com/edemocracy/ekklesia-portal", "title": "Ekklesia Portal Dev", diff --git a/src/ekklesia_portal/concepts/proposition/proposition_cells.py b/src/ekklesia_portal/concepts/proposition/proposition_cells.py index f149e394..1899c854 100644 --- a/src/ekklesia_portal/concepts/proposition/proposition_cells.py +++ b/src/ekklesia_portal/concepts/proposition/proposition_cells.py @@ -1,3 +1,4 @@ +from collections import Counter import urllib.parse import math from operator import attrgetter @@ -18,7 +19,7 @@ from ekklesia_portal.concepts.proposition.proposition_permissions import SubmitDraftPermission from ekklesia_portal.datamodel import Department, Document, Proposition, PropositionNote, PropositionType, Tag, VotingPhase, SecretVoter from ekklesia_portal.helper.url_shortener import make_tiny -from ekklesia_portal.enums import ArgumentType, OpenSlidesVotingResult, PropositionStatus, SecretVoterStatus +from ekklesia_portal.enums import ArgumentType, OpenSlidesVotingResult, PropositionStatus, SecretVoterStatus, SupporterStatus from ekklesia_portal.lib.url import url_change_query from ekklesia_portal.permission import CreatePermission, EditPermission, SupportPermission @@ -163,6 +164,9 @@ def share_twitter_url(self): twitter_url = 'https://twitter.com/intent/tweet?' + twitter_url return twitter_url + def amendment_count(self): + return len(self._model.derivations) + def ballot_url(self): return self.link(self._model.ballot) @@ -176,6 +180,9 @@ def ballot_title(self): def discussion_url(self): return self.link(self._model) + "#bottom" + def process_url(self): + return self.link(self._model, 'process') + "#bottom" + def propositions_badge_url(self, department_name, subject_area_name=None, tag_name=None): params = {"department": department_name} @@ -206,7 +213,10 @@ def discussion_link_class(self): return 'active' if self.options.get('active_tab') == 'discussion' else '' def associated_link_class(self): - return 'active' if self.options.get('active_tab') == 'associated' else '' + return "active" if self.options.get("active_tab") == "associated" else "" + + def process_link_class(self): + return 'active' if self.options.get('active_tab') == 'process' else '' def new_amendment_url(self): return self.link(self._model, '+new_amendment') @@ -230,6 +240,18 @@ def missing_submitters_count(self): def supporter_count(self): return self._model.active_supporter_count + def supporter_group_count(self): + return len(self._supporters_and_groups[1]) + + def support_still_required(self): + return self._model.status in (PropositionStatus.SUBMITTED) + + def support_still_possible(self): + return self._model.status in ( + PropositionStatus.QUALIFIED, + PropositionStatus.VOTING, + ) + def become_submitter_action(self): return self.link(self._model, 'become_submitter') @@ -260,14 +282,32 @@ def ready_to_submit(self): return self._model.ready_to_submit def show_support(self): - return self._model.status in (PropositionStatus.SUBMITTED, PropositionStatus.QUALIFIED) + return True + + if self.current_user is None: + return False + + if self._model.status not in ( + PropositionStatus.SUBMITTED, + PropositionStatus.QUALIFIED, + ): + return False + + if self._request.identity.has_global_admin_permissions: + return True + + return self._request.permitted_for_current_user(self._model, SupportPermission) def can_support(self): - return self.show_support and self._request.permitted_for_current_user(self._model, SupportPermission) + return self.show_support def supporter_quorum_percent(self): if self._model.qualification_quorum > 0: - return self._model.active_supporter_count / self._model.qualification_quorum * 100 + return ( + self._model.active_supporter_count + / self._model.qualification_quorum + * 100 + ) def show_secret_voting(self): return self._model.status in ( @@ -308,10 +348,13 @@ def show_create_counter_proposition(self): PropositionStatus.SCHEDULED ) and self._request.permitted_for_current_user(Propositions(), CreatePermission) and self._model.modifies is None - def show_submitter_names(self): + def show_submitters(self): if self.current_user is None: return False + if self._s.app.public_submitters: + return True + if self._model.ballot.area.department in self.current_user.managed_departments: return True @@ -326,6 +369,26 @@ def show_submitter_names(self): return False + def show_supporters(self): + if self.current_user is None: + return False + + if self._model.status not in ( + PropositionStatus.SUBMITTED, + PropositionStatus.QUALIFIED, + PropositionStatus.VOTING, + ): + return False + + if self._s.app.public_supporters: + return True + + if self._model.ballot.area.department in self.current_user.managed_departments: + return True + + if self._request.identity.has_global_admin_permissions: + return True + def valid_submitter_invitation_key(self): key = self._request.GET.get("submitter_invitation_key") if key is None: @@ -375,10 +438,44 @@ def note_url(self): ) def become_submitter_url(self): - return self.self_link + f"?submitter_invitation_key={self._model.submitter_invitation_key}" + return ( + self.self_link + + f"?submitter_invitation_key={self._model.submitter_invitation_key}" + ) + + def submitters(self): + submitters = [] + + for pm in self._model.propositions_member: + if pm.submitter: + user = pm.member + group_names = ", ".join(g.name for g in user.groups) + submitters.append(f"{user.name} ({group_names})") + + return submitters + + @cached_property + def _supporters_and_groups(self): + supporters = [] + group_counter = Counter() + + for pm in self._model.propositions_member: + if pm.status == SupporterStatus.ACTIVE: + user = pm.member + group_names = [g.name for g in user.groups] + group_str = ", ".join(group_names) + supporters.append(f"{user.name} ({group_str})") + group_counter.update(group_names) + + groups = [f"{name} ({count})" for name, count in group_counter.items()] + + return (supporters, groups) + + def supporters(self): + return self._supporters_and_groups[0] - def submitter_names(self): - return [pm.member.name for pm in self._model.propositions_member if pm.submitter] + def supporter_groups(self): + return self._supporters_and_groups[1] def show_full_history(self): return self.options.get('show_details') diff --git a/src/ekklesia_portal/concepts/proposition/proposition_views.py b/src/ekklesia_portal/concepts/proposition/proposition_views.py index 862a0c33..79fce160 100644 --- a/src/ekklesia_portal/concepts/proposition/proposition_views.py +++ b/src/ekklesia_portal/concepts/proposition/proposition_views.py @@ -1,4 +1,5 @@ import secrets +import time from datetime import datetime import base32_crockford @@ -120,12 +121,22 @@ def __init__(self, proposition_id=LID()): @App.html(model=Proposition, permission=ViewPermission) def show(self, request): cell = PropositionCell(self, request, show_tabs=True, show_details=True, show_actions=True, active_tab='discussion') + if request.htmx: + time.sleep(1) return cell.show() @App.html(model=Proposition, name='associated', permission=ViewPermission) def associated(self, request): cell = PropositionCell(self, request, show_tabs=True, show_details=True, show_actions=True, active_tab='associated') + if request.htmx: + time.sleep(3) + return cell.show() + + +@App.html(model=Proposition, name='process', permission=ViewPermission) +def process(self, request): + cell = PropositionCell(self, request, show_tabs=True, show_details=True, show_actions=True, active_tab='process') return cell.show() diff --git a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_draft.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_draft.j2.jade index 24d09a80..414a08ea 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_draft.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_draft.j2.jade @@ -33,9 +33,3 @@ else p a(href=login_url)= _('notice_login') - - if show_submitter_names and submitter_names - p= _('current_submitters') - ul - for name in submitter_names - li= name diff --git a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade index b0dfcbde..af2c4eca 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade @@ -2,9 +2,3 @@ h2= _('title_qualified_proposition') p= _('info_qualified_proposition') - - if show_submitter_names and submitter_names - p= _('submitters') - ul - for name in submitter_names - li= name diff --git a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade index f21b5439..2a31ac68 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade @@ -2,9 +2,3 @@ h2= _('title_scheduled_proposition') p= _('info_scheduled_proposition', ballot=ballot_title, voting_phase=voting_phase.title) - - if show_submitter_names and submitter_names - p= _('submitters') - ul - for name in submitter_names - li= name diff --git a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade index 17b50a9b..8b828fca 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade @@ -1,13 +1,17 @@ #detail_top(hx-swap-oob="true") h2= _('title_submitted_proposition') - p= _('info_submitted_proposition') + p + = _('info_submitted_proposition') + |  + a(href=link(_model, "process")) More info... if current_user_is_submitter - p= _('current_user_is_submitter') + p + = _('current_user_is_submitter') - if current_user_is_supporter - p= _('current_user_is_submitter_and_supporter') + if current_user_is_supporter + = " " + _('current_user_is_submitter_and_supporter') elif current_user_is_supporter p= _('current_user_is_supporter_not_submitter') @@ -15,9 +19,3 @@ elif can_support p= _('current_user_can_support') - if show_submitter_names and submitter_names - p= _('submitters') - ul - for name in submitter_names - li= name - diff --git a/src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade index 65817bc4..4903623a 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade @@ -1,27 +1,17 @@ -#secret_voting(hx-swap-oob="true") - .col-sm-6 - form.secret_voting_form(action=secret_voting_url - method="POST" - hx-post=secret_voting_url) +span#secret_voting(hx-swap-oob="true") + form.secret_voting_form(action=secret_voting_url + method="POST" + hx-post=secret_voting_url) - if secret_voting_requested - input(type="hidden", name="secret_voting", value="retract") - button.btn.btn-secondary.btn-sm(type="submit") - = _('button_retract_secret_voting') - else - input(type="hidden", name="secret_voting", value="request") - button.btn.btn-secondary.btn-sm(type="submit") - i.far.fa-eye-slash   - = _('button_request_secret_voting') - - .col-sm-6 - .progress(title=(_('abbr_secret_voters_count') + " / " + _('abbr_secret_voting_quorum'))) - .progress-bar(role="progressbar" - style="width: {{ secret_voters_count/secret_voting_quorum * 100 }}%" - aria-valuenow=secret_voters_count - aria-valuemin="0" - aria-valuemax=secret_voting_quorum) - | {{ secret_voters_count }} / {{ secret_voting_quorum }} + if secret_voting_requested + input(type="hidden", name="secret_voting", value="retract") + button.btn.btn-secondary.btn-sm(type="submit") + = _('button_retract_secret_voting') + else + input(type="hidden", name="secret_voting", value="request") + button.btn.btn-secondary.btn-sm(type="submit") + i.far.fa-eye-slash   + = _('button_request_secret_voting') //- vim: set filetype=jade sw=2 ts=2 sts=2 expandtab: diff --git a/src/ekklesia_portal/concepts/proposition/templates/proposition_small.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/proposition_small.j2.jade index 7de8507d..4be418c8 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/proposition_small.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/proposition_small.j2.jade @@ -8,7 +8,7 @@ .proposition_small_footer .row - .col-sm-5.points + .col-sm-5.supporter_count i.far.fa-thumbs-up   strong.proposition_info_number(id="proposition_score_{{ id }}")= supporter_count |   diff --git a/src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade index 2daa6b0b..969f91fd 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade @@ -1,39 +1,22 @@ -#support(hx-swap-oob="true") - .col-sm-6 - form.support_form(action=support_url - method="POST" - hx-post=support_url) - - - if current_user_is_supporter - input(type="hidden", name="support", value="retract") - button.btn.btn-secondary.btn-sm(type="submit") - i.far.fa-thumbs-down   - = _('button_retract_support') - else - if can_support - input(type="hidden", name="support", value="support") - button.btn.btn-primary.btn-sm(type="submit") - i.far.fa-thumbs-up   - = _('button_support') - elif supporter_quorum_percent is not none - button.btn.btn-secondary.btn-sm(disabled=true) - = _('supporters') - - .col-sm-6 - if supporter_quorum_percent is not none - .progress(title=(ngettext("supporter", "supporters", supporter_count) + " / " + _('qualification_quorum'))) - .progress-bar(role="progressbar" - style="width: {{ supporter_quorum_percent }}%" - aria-valuenow=supporter_count - aria-valuemin="0" - aria-valuemax=qualification_quorum) - | {{ supporter_count }} / {{ qualification_quorum }} +span#support(hx-swap-oob="true") + form.support_form(action=support_url + method="POST" + hx-post=support_url) + + if current_user_is_supporter + input(type="hidden", name="support", value="retract") + button.btn.btn-secondary.btn-sm(type="submit") + i.far.fa-thumbs-down   + = _('button_retract_support') else - | {{ supporter_count }} {{ _("supporters") }} - - - + if can_support + input(type="hidden", name="support", value="support") + button.btn.btn-primary.btn-sm(type="submit") + i.far.fa-thumbs-up   + = _('button_support') + elif supporter_quorum_percent is not none + button.btn.btn-secondary.btn-sm(disabled=true) + = _('supporters') //- vim: set filetype=jade sw=2 ts=2 sts=2 expandtab: diff --git a/src/ekklesia_portal/concepts/proposition/templates/proposition_tabs.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/proposition_tabs.j2.jade index aa8740c9..0205016b 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/proposition_tabs.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/proposition_tabs.j2.jade @@ -1,5 +1,15 @@ -ul.proposition_tabs +ul.proposition_tabs(hx-boost="true", hx-indicator="find .htmx-indicator") li.nav-item - a.nav-link(href=discussion_url, class=discussion_link_class)= customizable_text("tab_discussion") + a.nav-link(href=discussion_url, class=discussion_link_class) + = customizable_text("tab_discussion") + i.htmx-indicator + li.nav-item - a.nav-link(href=associated_url, class=associated_link_class)= customizable_text("tab_associated") + a.nav-link(href=associated_url, class=associated_link_class) + = customizable_text("tab_associated") + i.htmx-indicator + + li.nav-item + a.nav-link(href=process_url, class=process_link_class) + = customizable_text("tab_process") + i.htmx-indicator diff --git a/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_finished.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_finished.j2.jade index be1dccc2..5a9b55a2 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_finished.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_finished.j2.jade @@ -1,4 +1,4 @@ -.points_and_argument_count +.supporter_and_argument_count i.far.fa-comments   strong.proposition_info_number= argument_count |   diff --git a/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade index abe328b7..e924efc3 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade @@ -1,25 +1,34 @@ -a.argument_count(href=(("" if options.show_details else self_link) + "#bottom") - title=_("goto_arguments")) - i.icon.far.fa-comments   - strong.proposition_info_number= argument_count - |   - span= ngettext("argument", "arguments", argument_count) +.argument_count + a(href=(("" if options.show_details else self_link) + "#bottom") + title=_("goto_arguments")) + i.far.fa-comments   + strong.proposition_info_number= argument_count + |   + span= ngettext("argument", "arguments", argument_count) -if options.show_details - .points - i.far.fa-thumbs-up   - strong.proposition_info_number= supporter_count +.amendment_count + a(href=(link(_model, "associated") + "#bottom") + title="goto") + i.far.fa-plus-square   + strong.proposition_info_number= amendment_count |   - span= ngettext("supporter", "supporters", supporter_count) + span= ngettext("amendment", "amendments", amendment_count)|capitalize +if options.show_details + .supporter_count + a(href=(link(_model, "process") + "#support") + title="goto") + i.far.fa-thumbs-up   + strong.proposition_info_number= supporter_count + |   + span= ngettext("supporter", "supporters", supporter_count) .voting + div + a(href=link(voting_phase))= voting_phase.title div i.fas.fa-person-booth   - = _('ballot') + = _('ballot')|capitalize |: - div - a(href=link(voting_phase))= voting_phase.title div a(href=link(ballot))= ballot_title - diff --git a/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade index 8a87d4ac..1e653145 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade @@ -1,12 +1,19 @@ -a.argument_count(href=(("" if options.show_details else self_link) + "#bottom") - title=_("goto_arguments")) - i.icon.far.fa-comments   - strong.proposition_info_number= argument_count - |   - span= ngettext("argument", "arguments", argument_count) +.argument_count + a(href=(link(_model) + "#bottom"), title=_("goto_arguments")) + i.far.fa-comments   + strong.proposition_info_number= argument_count + |   + span= ngettext("argument", "arguments", argument_count) + +.amendment_count + a(href=(link(_model, "associated") + "#bottom"), title="goto") + i.mr-1.far.fa-plus-square   + strong.proposition_info_number= amendment_count + |   + span= ngettext("amendment", "amendments", amendment_count) -if not options.show_details - .points +.supporter_count + a(href=(link(_model, "process") + "#support"), title="goto") i.far.fa-thumbs-up   strong.proposition_info_number= supporter_count |   diff --git a/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_associated.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_associated.j2.jade index fad28bb0..4e4f9155 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_associated.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_associated.j2.jade @@ -1,4 +1,4 @@ -.row.arguments +.proposition_tab.row.arguments a(name="bottom") .proposition_col.amendments diff --git a/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_discussion.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_discussion.j2.jade index 7f047e93..e9583a07 100644 --- a/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_discussion.j2.jade +++ b/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_discussion.j2.jade @@ -1,4 +1,4 @@ -.row.arguments +.proposition_tab.row.arguments a(name="bottom") .proposition_col.pro diff --git a/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade b/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade new file mode 100644 index 00000000..8629661c --- /dev/null +++ b/src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade @@ -0,0 +1,101 @@ +.proposition_tab + a(name="bottom") + + h3 Status + + p + = _('info_submitted_proposition') + + if show_support + a(name="support") + h3.my-2 Support + + if support_still_required + p. + This needs {{ qualification_quorum }} supporters to be qualified for voting. + elif support_still_possible + p. + This has enough support for voting but supporting is still possible. + else + p. + Supporting is closed for this proposition. + + if current_user_is_submitter + p + = _('current_user_is_submitter') + + if current_user_is_supporter + = " " + _('current_user_is_submitter_and_supporter') + + elif current_user_is_supporter + p= _('current_user_is_supporter_not_submitter') + + elif can_support + p= _('current_user_can_support') + + if support_still_required + .supporter_progress + .col-sm-4 + h4 Supports + + .col-sm-8 + if supporter_quorum_percent is not none + .progress(title=(ngettext("supporter", "supporters", supporter_count) + " / " + _('qualification_quorum'))) + .progress-bar(role="progressbar" + style="width: {{ supporter_quorum_percent }}%" + aria-valuenow=supporter_count + aria-valuemin="0" + aria-valuemax=qualification_quorum) + | {{ supporter_count }} / {{ qualification_quorum }} + else + | {{ supporter_count }} {{ _("supporters") }} + else + h4 {{ _('supporters') }} ({{ supporter_count }}) + + + if supporters + a(href="#", data-toggle="collapse", data-target="#supporters") + small Show supporter names... + + #supporters.row.collapse + .col-sm-12 + ul + for supporter in supporters + li= supporter + + if show_secret_voting + + hr + + h3 Secret Voting + + p. + This needs at least {{ secret_voting_quorum }} requests to move the vote to a secret ballot. + + .secret_voting_progress + .col-sm-4 + h4 Secret Voting Requests + + .col-sm-8 + .progress(title=(_('abbr_secret_voters_count') + " / " + _('abbr_secret_voting_quorum'))) + .progress-bar(role="progressbar" + style="width: {{ secret_voters_count/secret_voting_quorum * 100 }}%" + aria-valuenow=secret_voters_count + aria-valuemin="0" + aria-valuemax=secret_voting_quorum) + | {{ secret_voters_count }} / {{ secret_voting_quorum }} + + if submitters + + hr + + h3 Submitters + + .row + .col-sm-12 + ul + for submitter in submitters + li= submitter + +// generated from jade +//- vim: set filetype=jade sw=2 ts=2 sts=2 expandtab: diff --git a/src/ekklesia_portal/datamodel.py b/src/ekklesia_portal/datamodel.py index 512ca956..e9585b74 100644 --- a/src/ekklesia_portal/datamodel.py +++ b/src/ekklesia_portal/datamodel.py @@ -583,6 +583,15 @@ def active_supporter_count(cls): .where(Supporter.status == SupporterStatus.ACTIVE) .correlate(Proposition.__table__)) + @property + def active_supporter_group_count(self): + groups = set() + for member in self.propositions_member: + if member.status == SupporterStatus.ACTIVE: + groups.update(member.user.groups) + + return len(groups) + @property def submitter_count(self): return len([s for s in self.propositions_member if s.submitter]) diff --git a/src/ekklesia_portal/helper/missing_translations.py b/src/ekklesia_portal/helper/missing_translations.py index e14b85c0..97c16313 100644 --- a/src/ekklesia_portal/helper/missing_translations.py +++ b/src/ekklesia_portal/helper/missing_translations.py @@ -16,5 +16,6 @@ _("tab_associated") _("tab_discussion") _("button_add_amendment") +_("tab_process") _("button_add_counter_proposition") _("button_goto_associated") diff --git a/src/ekklesia_portal/sass/portal.sass b/src/ekklesia_portal/sass/portal.sass index 58e2714a..0098ba7f 100644 --- a/src/ekklesia_portal/sass/portal.sass +++ b/src/ekklesia_portal/sass/portal.sass @@ -188,6 +188,11 @@ footer.footer .list-inline @extend .my-1 +.htmx-indicator + @extend .fas + @extend .fa-spinner + @extend .fa-spin + .large_number font-size: 1.2rem @@ -225,9 +230,6 @@ footer.footer .filter @extend .nav-link -.points_text - @extend .text-muted - .proposition @extend .card @@ -275,6 +277,15 @@ footer.footer @extend .nav @extend .nav-tabs @extend .card-header-tabs + padding-right: 20px + + .htmx-indicator + margin-left: 3px + margin-right: -16px + +.proposition_tab + padding-top: 8px + padding-bottom: 8px .proposition_amendments_header @extend .card @@ -393,18 +404,23 @@ ul.proposition_filter align-items: center .progress - height: 1.5rem + height: 2rem + padding: 0.25rem .progress-bar color: black -#support +.supporter_count, .amendment_count, .argument_count + .proposition_info_number, i + color: black + +.supporter_progress @extend .progress_row .progress-bar background-color: $light-orange -#secret_voting +.secret_voting_progress @extend .progress_row .progress-bar diff --git a/src/ekklesia_portal/static/img/spinner.gif b/src/ekklesia_portal/static/img/spinner.gif new file mode 100644 index 00000000..df4ccceb Binary files /dev/null and b/src/ekklesia_portal/static/img/spinner.gif differ diff --git a/src/ekklesia_portal/translations/de/LC_MESSAGES/messages.po b/src/ekklesia_portal/translations/de/LC_MESSAGES/messages.po index 2a068af7..98fca718 100644 --- a/src/ekklesia_portal/translations/de/LC_MESSAGES/messages.po +++ b/src/ekklesia_portal/translations/de/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-04-23 22:03+0000\n" +"POT-Creation-Date: 2023-06-23 02:59+0200\n" "PO-Revision-Date: 2015-09-06 22:42+0200\n" "Last-Translator: FULL NAME \n" "Language: de\n" @@ -46,7 +46,7 @@ msgstr "Ausführlich" #: src/ekklesia_portal/concepts/page/page_contracts.py:19 #: src/ekklesia_portal/concepts/policy/policy_contracts.py:30 #: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:84 -#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:129 +#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:128 #: src/ekklesia_portal/concepts/proposition_note/proposition_note_contracts.py:20 #: src/ekklesia_portal/concepts/proposition_type/proposition_type_contracts.py:18 #: src/ekklesia_portal/concepts/subject_area/subject_area_contracts.py:17 @@ -143,7 +143,7 @@ msgstr "Abstimmungsart" #: src/ekklesia_portal/concepts/ballot/templates/ballot.j2.jade:13 #: src/ekklesia_portal/concepts/document/document_helper.py:15 #: src/ekklesia_portal/concepts/document/document_helper.py:16 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:59 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:54 msgid "not_determined" msgstr "nicht festgelegt" @@ -162,7 +162,7 @@ msgstr "" #: src/ekklesia_portal/concepts/ballot/templates/ballot.j2.jade:7 #: src/ekklesia_portal/concepts/proposition/templates/edit_proposition.j2.jade:12 #: src/ekklesia_portal/concepts/proposition/templates/edit_proposition.j2.jade:13 -#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:10 msgid "ballot" msgstr "Abstimmung" @@ -201,7 +201,7 @@ msgstr "Gliederung" #: src/ekklesia_portal/concepts/ekklesia_portal/templates/admin_box.j2.jade:2 #: src/ekklesia_portal/concepts/ekklesia_portal/templates/index.j2.jade:16 #: src/ekklesia_portal/concepts/proposition/templates/propositions.j2.jade:3 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:42 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:37 msgid "propositions" msgstr "Anträge" @@ -221,7 +221,7 @@ msgstr "Übersicht" #: src/ekklesia_portal/concepts/ballot/templates/ballots.j2.jade:5 #: src/ekklesia_portal/concepts/ekklesia_portal/templates/admin_box.j2.jade:26 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:45 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:40 msgid "ballots" msgstr "Abstimmungen" @@ -584,7 +584,6 @@ msgstr "Minimale Anzahl an Unterstützern" #: src/ekklesia_portal/concepts/policy/policy_contracts.py:16 #: src/ekklesia_portal/concepts/policy/templates/policy.j2.jade:16 -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:15 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:39 msgid "qualification_quorum" msgstr "Unterstützer-Quorum zur Zulassung zur Abstimmung [0-1]" @@ -703,16 +702,16 @@ msgstr "Daten für externe Systeme" msgid "button_create_draft" msgstr "Antragsentwurf anlegen" -#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:118 +#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:117 #: src/ekklesia_portal/concepts/proposition/templates/proposition_actions.j2.jade:2 msgid "button_submit_draft" msgstr "Antrag einreichen" -#: src/ekklesia_portal/concepts/proposition/proposition_views.py:405 +#: src/ekklesia_portal/concepts/proposition/proposition_views.py:411 msgid "change" msgstr "Änderung" -#: src/ekklesia_portal/concepts/proposition/proposition_views.py:515 +#: src/ekklesia_portal/concepts/proposition/proposition_views.py:521 msgid "amendment_to" msgstr "Änderungsantrag to %(title)s" @@ -774,28 +773,17 @@ msgstr "Begründung" msgid "changes" msgstr "Änderungen" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:4 msgid "button_retract_secret_voting" msgstr "Forderung auf Papierabstimmung zurückziehen" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:8 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:7 msgid "button_request_secret_voting" msgstr "Papierabstimmung fordern" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:13 -#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 -msgid "abbr_secret_voters_count" -msgstr "Anzahl Befürworter für Papierabstimmung" - -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:13 -#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 -msgid "abbr_secret_voting_quorum" -msgstr "Quorum für Papierabstimmung" - #: src/ekklesia_portal/concepts/proposition/templates/proposition_small.j2.jade:10 -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:15 -#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:2 -#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade:2 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade:5 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:39 msgid "supporter" msgid_plural "supporters" @@ -826,16 +814,15 @@ msgstr "" msgid "title_notice" msgstr "Hinweis" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:4 msgid "button_retract_support" msgstr "Unterstützung zurückziehen" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:8 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:7 msgid "button_support" msgstr "Unterstützen" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:10 -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:19 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:9 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:36 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:43 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:47 @@ -995,10 +982,6 @@ msgstr "Antragsteller werden" msgid "notice_login" msgstr "Du musst dich erst anmelden." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_draft.j2.jade:20 -msgid "current_submitters" -msgstr "Aktuell sind Antragsteller:" - #: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade:2 msgid "title_qualified_proposition" msgstr "Zur Abstimmung zugelassener Antrag" @@ -1009,12 +992,6 @@ msgstr "" "Dieser Antrag hat die erforderliche Anzahl an Unterstützern erreicht und " "kann von den Verantwortlichen zur Abstimmung eingeplant werden." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade:4 -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade:4 -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:8 -msgid "submitters" -msgstr "Antragsteller" - #: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade:2 msgid "title_scheduled_proposition" msgstr "Zur Abstimmung eingeplanter Antrag" @@ -1035,7 +1012,7 @@ msgstr "" "Dieser Antrag ist eingereicht und hat zu wenig Unterstützung, um zur " "Abstimmung zugelassen zu werden." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:4 +#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:5 msgid "current_user_is_submitter" msgstr "Du bist Antragsteller." @@ -1045,11 +1022,11 @@ msgstr "" "Wenn du deine Unterstützung zurückziehst, bleibst du weiterhin " "Antragsteller." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:6 +#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:7 msgid "current_user_is_supporter_not_submitter" msgstr "Du unterstützt diesen Antrag." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:7 +#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:8 msgid "current_user_can_support" msgstr "Du kannst diesen Antrag unterstützen." @@ -1114,6 +1091,13 @@ msgid_plural "arguments" msgstr[0] "Argument" msgstr[1] "Argumente" +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:3 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade:3 +msgid "amendment" +msgid_plural "amendments" +msgstr[0] "Änderung" +msgstr[1] "Änderungen" + #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_associated.j2.jade:5 msgid "title_proposition_modifies" msgstr "Ist Änderungsantrag zu" @@ -1150,9 +1134,13 @@ msgid_plural "supporter_groups" msgstr[0] "Gruppen des Unterstützers" msgstr[1] "Gruppe der Unterstützer" -#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:18 -msgid "qualification_group_quorum" -msgstr "Unterstützer-Quorum zur Zulassung zur Abstimmung" +#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 +msgid "abbr_secret_voters_count" +msgstr "Anzahl Befürworter für Papierabstimmung" + +#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 +msgid "abbr_secret_voting_quorum" +msgstr "Quorum für Papierabstimmung" #: src/ekklesia_portal/concepts/proposition_note/proposition_note_contracts.py:11 msgid "proposition_id" @@ -1291,7 +1279,7 @@ msgstr "Stichtag" msgid "voting_phase_target_description" msgstr "Die Abstimmung endet am Stichtag." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:56 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:51 #: src/ekklesia_portal/concepts/voting_phase/voting_phase_contracts.py:14 msgid "voting_status" msgstr "Status" @@ -1356,7 +1344,7 @@ msgstr "" msgid "voting_module_data" msgstr "Daten für externe Abstimmungssysteme" -#: src/ekklesia_portal/concepts/voting_phase/voting_phase_views.py:168 +#: src/ekklesia_portal/concepts/voting_phase/voting_phase_views.py:169 msgid "voting_created_msg" msgstr "Abstimmung im Abstimmungsmodul %(voting_module)s erzeugt." @@ -1405,51 +1393,51 @@ msgid "could_not_vote_currently" msgstr "Du wirst nach aktuellem Stand nicht an der Abstimmung teilnehmen können." #: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:24 -msgid "voting_info_text" -msgstr "" -"Die Abstimmung läuft aktuell bis zum %(end)s. Nutze das bei der " -"Registrierung erzeugte Dokument zur Abstimmung." - -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:25 msgid "registration_links_help_text" msgstr "" "Registriere dich bis %(end)s, um an der Abstimmung teilzunehmen. Du " "erfährst bei der Registrierung, wie du deine Stimme abgibst." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:27 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:25 msgid "register_now_with_voting_module" msgstr "Jetzt registrieren bei %(title)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:29 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:27 +msgid "voting_info_text" +msgstr "" +"Die Abstimmung läuft aktuell bis zum %(end)s. Nutze das bei der " +"Registrierung erzeugte Dokument zur Abstimmung." + +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:28 msgid "voting_links_help_text" msgstr "Du kannst bis %(end)s abstimmen." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:31 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:29 msgid "vote_now_with_voting_module" msgstr "Stimme jetzt ab bei %(title)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:34 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:31 msgid "result_links_help_text" msgstr "Die Abstimmung ist beendet und die Ergebnisse können eingesehen werden" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:36 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:32 msgid "show_results_with_voting_module" msgstr "Ergebnisse bei %(title)s ansehen" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:50 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:45 msgid "registration_from" msgstr "Registrierung für die Abstimmung läuft von" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:52 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:55 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:47 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:50 msgid "start_end_duration" msgstr "%(start)s bis %(end)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:53 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:48 msgid "voting_from" msgstr "Abstimmung möglich von" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:58 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:53 msgid "target_date" msgstr "Stichtag" @@ -1546,10 +1534,14 @@ msgid "button_add_amendment" msgstr "Änderungsantrag hinzufügen" #: src/ekklesia_portal/helper/missing_translations.py:19 +msgid "tab_process" +msgstr "Unterstützung & Details zum Ablauf" + +#: src/ekklesia_portal/helper/missing_translations.py:20 msgid "button_add_counter_proposition" msgstr "Gegenantrag stellen" -#: src/ekklesia_portal/helper/missing_translations.py:20 +#: src/ekklesia_portal/helper/missing_translations.py:21 msgid "button_goto_associated" msgstr "Zu den Konkurrenzanträgen" @@ -1895,3 +1887,6 @@ msgstr "Enthaltung" #~ msgid "relation_modifies" #~ msgstr "Änderungsantrag für:" + +#~ msgid "button_add_amendment" +#~ msgstr "Änderungsantrag stellen" diff --git a/src/ekklesia_portal/translations/en/LC_MESSAGES/messages.po b/src/ekklesia_portal/translations/en/LC_MESSAGES/messages.po index 1996870f..732b745f 100644 --- a/src/ekklesia_portal/translations/en/LC_MESSAGES/messages.po +++ b/src/ekklesia_portal/translations/en/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-04-23 22:03+0000\n" +"POT-Creation-Date: 2023-06-23 02:59+0200\n" "PO-Revision-Date: 2015-09-06 22:42+0200\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -46,7 +46,7 @@ msgstr "Details" #: src/ekklesia_portal/concepts/page/page_contracts.py:19 #: src/ekklesia_portal/concepts/policy/policy_contracts.py:30 #: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:84 -#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:129 +#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:128 #: src/ekklesia_portal/concepts/proposition_note/proposition_note_contracts.py:20 #: src/ekklesia_portal/concepts/proposition_type/proposition_type_contracts.py:18 #: src/ekklesia_portal/concepts/subject_area/subject_area_contracts.py:17 @@ -143,7 +143,7 @@ msgstr "Voting type" #: src/ekklesia_portal/concepts/ballot/templates/ballot.j2.jade:13 #: src/ekklesia_portal/concepts/document/document_helper.py:15 #: src/ekklesia_portal/concepts/document/document_helper.py:16 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:59 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:54 msgid "not_determined" msgstr "not determined" @@ -162,7 +162,7 @@ msgstr "" #: src/ekklesia_portal/concepts/ballot/templates/ballot.j2.jade:7 #: src/ekklesia_portal/concepts/proposition/templates/edit_proposition.j2.jade:12 #: src/ekklesia_portal/concepts/proposition/templates/edit_proposition.j2.jade:13 -#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:10 msgid "ballot" msgstr "ballot" @@ -201,7 +201,7 @@ msgstr "Department" #: src/ekklesia_portal/concepts/ekklesia_portal/templates/admin_box.j2.jade:2 #: src/ekklesia_portal/concepts/ekklesia_portal/templates/index.j2.jade:16 #: src/ekklesia_portal/concepts/proposition/templates/propositions.j2.jade:3 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:42 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:37 msgid "propositions" msgstr "Propositions" @@ -221,7 +221,7 @@ msgstr "Overview" #: src/ekklesia_portal/concepts/ballot/templates/ballots.j2.jade:5 #: src/ekklesia_portal/concepts/ekklesia_portal/templates/admin_box.j2.jade:26 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:45 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:40 msgid "ballots" msgstr "Ballots" @@ -584,7 +584,6 @@ msgstr "Minimum number of supporters" #: src/ekklesia_portal/concepts/policy/policy_contracts.py:16 #: src/ekklesia_portal/concepts/policy/templates/policy.j2.jade:16 -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:15 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:39 msgid "qualification_quorum" msgstr "Supporter quorum for voting qualification [0-1]" @@ -702,16 +701,16 @@ msgstr "Data for external systems" msgid "button_create_draft" msgstr "Create Draft" -#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:118 +#: src/ekklesia_portal/concepts/proposition/proposition_contracts.py:117 #: src/ekklesia_portal/concepts/proposition/templates/proposition_actions.j2.jade:2 msgid "button_submit_draft" msgstr "Submit Proposition" -#: src/ekklesia_portal/concepts/proposition/proposition_views.py:405 +#: src/ekklesia_portal/concepts/proposition/proposition_views.py:411 msgid "change" msgstr "Change" -#: src/ekklesia_portal/concepts/proposition/proposition_views.py:515 +#: src/ekklesia_portal/concepts/proposition/proposition_views.py:521 msgid "amendment_to" msgstr "Amendment to %(title)s" @@ -773,28 +772,17 @@ msgstr "Motivation" msgid "changes" msgstr "Changes" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:4 msgid "button_retract_secret_voting" msgstr "Retract Voting on Paper Request" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:8 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:7 msgid "button_request_secret_voting" msgstr "Request Voting on Paper" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:13 -#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 -msgid "abbr_secret_voters_count" -msgstr "number of supporters for vote on paper" - -#: src/ekklesia_portal/concepts/proposition/templates/proposition_secret_voting.j2.jade:13 -#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 -msgid "abbr_secret_voting_quorum" -msgstr "quorum for vote on paper" - #: src/ekklesia_portal/concepts/proposition/templates/proposition_small.j2.jade:10 -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:15 -#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:2 -#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade:2 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade:5 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:39 msgid "supporter" msgid_plural "supporters" @@ -822,16 +810,15 @@ msgstr "" msgid "title_notice" msgstr "Note" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:5 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:4 msgid "button_retract_support" msgstr "Retract support" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:8 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:7 msgid "button_support" msgstr "Support" -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:10 -#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:19 +#: src/ekklesia_portal/concepts/proposition/templates/proposition_support.j2.jade:9 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:36 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:43 #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:47 @@ -989,10 +976,6 @@ msgstr "Become Submitter" msgid "notice_login" msgstr "You must login first." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_draft.j2.jade:20 -msgid "current_submitters" -msgstr "Currently, submitters are:" - #: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade:2 msgid "title_qualified_proposition" msgstr "Proposition Qualified For Voting" @@ -1003,12 +986,6 @@ msgstr "" "This proposition has enough supporters so the administrator can schedule " "it for voting." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_qualified.j2.jade:4 -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade:4 -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:8 -msgid "submitters" -msgstr "Submitters" - #: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_scheduled.j2.jade:2 msgid "title_scheduled_proposition" msgstr "Scheduled Proposition" @@ -1027,7 +1004,7 @@ msgstr "" "This proposition has been submitted. It needs more support to be " "scheduled for voting." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:4 +#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:5 msgid "current_user_is_submitter" msgstr "You are submitter." @@ -1035,11 +1012,11 @@ msgstr "You are submitter." msgid "current_user_is_submitter_and_supporter" msgstr "If you retract your support, you are still a submitter of the proposition." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:6 +#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:7 msgid "current_user_is_supporter_not_submitter" msgstr "You support this proposition." -#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:7 +#: src/ekklesia_portal/concepts/proposition/templates/detail_top/proposition_detail_top_submitted.j2.jade:8 msgid "current_user_can_support" msgstr "You can support this proposition." @@ -1104,6 +1081,13 @@ msgid_plural "arguments" msgstr[0] "Argument" msgstr[1] "Arguments" +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_scheduled.j2.jade:3 +#: src/ekklesia_portal/concepts/proposition/templates/status/proposition_status_submitted.j2.jade:3 +msgid "amendment" +msgid_plural "amendments" +msgstr[0] "Amendment" +msgstr[1] "Amendments" + #: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_associated.j2.jade:5 msgid "title_proposition_modifies" msgstr "Is Amendment For" @@ -1140,9 +1124,13 @@ msgid_plural "supporter_groups" msgstr[0] "Supporter Group" msgstr[1] "Supporter Groups" -#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:18 -msgid "qualification_group_quorum" -msgstr "Supporter quorum for voting qualification" +#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 +msgid "abbr_secret_voters_count" +msgstr "number of supporters for vote on paper" + +#: src/ekklesia_portal/concepts/proposition/templates/tab/proposition_tab_process.j2.jade:62 +msgid "abbr_secret_voting_quorum" +msgstr "quorum for vote on paper" #: src/ekklesia_portal/concepts/proposition_note/proposition_note_contracts.py:11 msgid "proposition_id" @@ -1281,7 +1269,7 @@ msgstr "Target date" msgid "voting_phase_target_description" msgstr "Voting ends on the target date." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:56 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:51 #: src/ekklesia_portal/concepts/voting_phase/voting_phase_contracts.py:14 msgid "voting_status" msgstr "Status" @@ -1338,7 +1326,7 @@ msgstr "Duration of the voting period in days relative to the target date." msgid "voting_module_data" msgstr "Voting Module Data" -#: src/ekklesia_portal/concepts/voting_phase/voting_phase_views.py:168 +#: src/ekklesia_portal/concepts/voting_phase/voting_phase_views.py:169 msgid "voting_created_msg" msgstr "Created voting in voting module %(voting_module)s." @@ -1390,51 +1378,49 @@ msgstr "" "status." #: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:24 -msgid "voting_info_text" -msgstr "" -"The voting runs until %(end)s. Use the document created during the " -"registration to vote." - -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:25 msgid "registration_links_help_text" -msgstr "" -"Register until %(end)s to participate in the voting. You will find out " -"how you cast your vote during registration." +msgstr "Register until %(end)s to participate in the voting." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:27 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:25 msgid "register_now_with_voting_module" msgstr "Register now at %(title)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:29 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:27 +msgid "voting_info_text" +msgstr "" +"The voting is open until %(end)s. To cast your vote, use the document " +"created in the registration process." + +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:28 msgid "voting_links_help_text" msgstr "Cast your vote until %(end)s." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:31 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:29 msgid "vote_now_with_voting_module" msgstr "Vote now at %(title)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:34 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:31 msgid "result_links_help_text" msgstr "The voting has finished. The results can be viewed." -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:36 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:32 msgid "show_results_with_voting_module" msgstr "View results at %(title)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:50 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:45 msgid "registration_from" msgstr "Registration for voting possible from" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:52 -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:55 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:47 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:50 msgid "start_end_duration" msgstr "%(start)s to %(end)s" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:53 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:48 msgid "voting_from" msgstr "Voting possible from" -#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:58 +#: src/ekklesia_portal/concepts/voting_phase/templates/voting_phase.j2.jade:53 msgid "target_date" msgstr "Target Date" @@ -1524,10 +1510,14 @@ msgid "button_add_amendment" msgstr "Add Amendment" #: src/ekklesia_portal/helper/missing_translations.py:19 +msgid "tab_process" +msgstr "Supporters & Process Details" + +#: src/ekklesia_portal/helper/missing_translations.py:20 msgid "button_add_counter_proposition" msgstr "Add Counter Motion" -#: src/ekklesia_portal/helper/missing_translations.py:20 +#: src/ekklesia_portal/helper/missing_translations.py:21 msgid "button_goto_associated" msgstr "Go to Associated Propositions" @@ -1780,6 +1770,9 @@ msgstr "Abstention" #~ msgid "association_type" #~ msgstr "Relation type" +#~ msgid "amendment" +#~ msgstr "change motion" + #~ msgid "amendment" #~ msgid_plural "amendments" #~ msgstr[0] "Amendment" @@ -1861,3 +1854,12 @@ msgstr "Abstention" #~ msgid "relation_modifies" #~ msgstr "Change motion for:" + +#~ msgid "button_add_amendment" +#~ msgstr "Add Amendment" + +#~ msgid "current_submitters" +#~ msgstr "Currently, submitters are:" + +#~ msgid "submitters" +#~ msgstr "Submitters"