decidim-elections 0.23.2 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/app/assets/config/admin/decidim_votings_manifest.css +0 -0
  4. data/app/assets/config/admin/decidim_votings_manifest.js +4 -0
  5. data/app/assets/config/decidim_elections_manifest.css +3 -0
  6. data/app/assets/config/decidim_elections_manifest.js +6 -0
  7. data/app/assets/config/decidim_votings_manifest.css +3 -0
  8. data/app/assets/config/decidim_votings_manifest.js +0 -0
  9. data/app/assets/images/decidim/votings/icon.svg +1 -0
  10. data/app/assets/javascripts/decidim/elections/admin/pending_action.js.es6 +16 -0
  11. data/app/assets/javascripts/decidim/elections/admin/vote_statistics.js.es6 +11 -0
  12. data/app/assets/javascripts/decidim/elections/trustee_zone.js.es6 +54 -0
  13. data/app/assets/javascripts/decidim/elections/trustee_zone/key_ceremony.js.es6 +126 -0
  14. data/app/assets/javascripts/decidim/elections/trustee_zone/tally.js.es6 +104 -0
  15. data/app/assets/javascripts/decidim/elections/vote.js.es6 +107 -160
  16. data/app/assets/javascripts/decidim/elections/vote_questions.component.js.es6 +129 -0
  17. data/app/assets/javascripts/decidim/elections/vote_verify.js.es6 +71 -0
  18. data/app/assets/javascripts/decidim/votings/admin/monitoring_committee_members_form.js.es6 +35 -0
  19. data/app/assets/javascripts/decidim/votings/admin/polling_officers_form.js.es6 +35 -0
  20. data/app/assets/javascripts/decidim/votings/admin/polling_officers_picker.js.es6 +35 -0
  21. data/app/assets/javascripts/decidim/votings/admin/polling_stations_form.js.es6 +5 -0
  22. data/app/assets/stylesheets/decidim/elections/elections.scss +0 -4
  23. data/app/assets/stylesheets/decidim/elections/focus/_accordion.scss +36 -0
  24. data/app/assets/stylesheets/decidim/elections/focus/_evote.scss +58 -0
  25. data/app/assets/stylesheets/decidim/elections/trustee_zone.scss +24 -0
  26. data/app/assets/stylesheets/decidim/votings/votings.scss +1 -0
  27. data/app/assets/stylesheets/decidim/votings/votings/_votings-header.scss +99 -0
  28. data/app/assets/stylesheets/decidim/votings/votings/_votings-home-banner.scss +11 -0
  29. data/app/cells/decidim/votings/content_block_cell.rb +17 -0
  30. data/app/cells/decidim/votings/content_blocks/highlighted_votings/show.erb +30 -0
  31. data/app/cells/decidim/votings/content_blocks/highlighted_votings_cell.rb +33 -0
  32. data/app/cells/decidim/votings/content_blocks/highlighted_votings_settings_form/show.erb +3 -0
  33. data/app/cells/decidim/votings/content_blocks/highlighted_votings_settings_form_cell.rb +19 -0
  34. data/app/cells/decidim/votings/content_blocks/landing_page/attachments_and_folders_cell.rb +15 -0
  35. data/app/cells/decidim/votings/content_blocks/landing_page/description_cell.rb +15 -0
  36. data/app/cells/decidim/votings/content_blocks/landing_page/elections_cell.rb +15 -0
  37. data/app/cells/decidim/votings/content_blocks/landing_page/header_cell.rb +15 -0
  38. data/app/cells/decidim/votings/content_blocks/landing_page/metrics_cell.rb +15 -0
  39. data/app/cells/decidim/votings/content_blocks/landing_page/polling_stations_cell.rb +15 -0
  40. data/app/cells/decidim/votings/content_blocks/landing_page/stats_cell.rb +15 -0
  41. data/app/cells/decidim/votings/content_blocks/landing_page/timeline_cell.rb +15 -0
  42. data/app/cells/decidim/votings/polling_officers/polling_officers_picker/polling_officers.erb +12 -0
  43. data/app/cells/decidim/votings/polling_officers/polling_officers_picker/show.erb +14 -0
  44. data/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb +73 -0
  45. data/app/cells/decidim/votings/voting_cell.rb +19 -0
  46. data/app/cells/decidim/votings/voting_m/data.erb +21 -0
  47. data/app/cells/decidim/votings/voting_m/footer.erb +5 -0
  48. data/app/cells/decidim/votings/voting_m_cell.rb +94 -0
  49. data/app/commands/decidim/elections/admin/add_user_as_trustee.rb +81 -0
  50. data/app/commands/decidim/elections/admin/create_election.rb +2 -1
  51. data/app/commands/decidim/elections/admin/end_vote.rb +63 -0
  52. data/app/commands/decidim/elections/admin/publish_results.rb +59 -0
  53. data/app/commands/decidim/elections/admin/remove_trustee_from_participatory_space.rb +37 -0
  54. data/app/commands/decidim/elections/admin/setup_election.rb +160 -0
  55. data/app/commands/decidim/elections/admin/start_key_ceremony.rb +63 -0
  56. data/app/commands/decidim/elections/admin/start_tally.rb +63 -0
  57. data/app/commands/decidim/elections/admin/start_vote.rb +63 -0
  58. data/app/commands/decidim/elections/admin/update_action_status.rb +47 -0
  59. data/app/commands/decidim/elections/admin/update_answer_selection.rb +41 -0
  60. data/app/commands/decidim/elections/admin/update_trustee_participatory_space.rb +40 -0
  61. data/app/commands/decidim/elections/trustee_zone/update_election_bulletin_board_status.rb +39 -0
  62. data/app/commands/decidim/elections/trustee_zone/update_trustee.rb +41 -0
  63. data/app/commands/decidim/elections/voter/cast_vote.rb +59 -0
  64. data/app/commands/decidim/elections/voter/update_vote_status.rb +70 -0
  65. data/app/commands/decidim/votings/admin/create_monitoring_committee_member.rb +99 -0
  66. data/app/commands/decidim/votings/admin/create_polling_officer.rb +99 -0
  67. data/app/commands/decidim/votings/admin/create_polling_station.rb +59 -0
  68. data/app/commands/decidim/votings/admin/create_voting.rb +59 -0
  69. data/app/commands/decidim/votings/admin/destroy_monitoring_committee_member.rb +51 -0
  70. data/app/commands/decidim/votings/admin/destroy_polling_officer.rb +52 -0
  71. data/app/commands/decidim/votings/admin/destroy_polling_station.rb +40 -0
  72. data/app/commands/decidim/votings/admin/manage_polling_station.rb +64 -0
  73. data/app/commands/decidim/votings/admin/publish_voting.rb +40 -0
  74. data/app/commands/decidim/votings/admin/unpublish_voting.rb +40 -0
  75. data/app/commands/decidim/votings/admin/update_polling_station.rb +50 -0
  76. data/app/commands/decidim/votings/admin/update_voting.rb +85 -0
  77. data/app/constraints/decidim/votings/current_component.rb +28 -0
  78. data/app/constraints/decidim/votings/current_voting.rb +43 -0
  79. data/app/controllers/concerns/decidim/elections/orderable.rb +2 -2
  80. data/app/controllers/concerns/decidim/polling_officers/admin/filterable.rb +58 -0
  81. data/app/controllers/concerns/decidim/polling_stations/admin/filterable.rb +57 -0
  82. data/app/controllers/concerns/decidim/votings/admin/filterable.rb +27 -0
  83. data/app/controllers/concerns/decidim/votings/admin/voting_admin.rb +48 -0
  84. data/app/controllers/concerns/decidim/votings/needs_voting.rb +44 -0
  85. data/app/controllers/concerns/decidim/votings/orderable.rb +32 -0
  86. data/app/controllers/decidim/elections/admin/answers_controller.rb +32 -0
  87. data/app/controllers/decidim/elections/admin/elections_controller.rb +2 -2
  88. data/app/controllers/decidim/elections/admin/feedback_forms_controller.rb +55 -0
  89. data/app/controllers/decidim/elections/admin/steps_controller.rb +96 -0
  90. data/app/controllers/decidim/elections/admin/trustees_participatory_spaces_controller.rb +89 -0
  91. data/app/controllers/decidim/elections/elections_controller.rb +5 -1
  92. data/app/controllers/decidim/elections/feedbacks_controller.rb +38 -0
  93. data/app/controllers/decidim/elections/trustee_zone/application_controller.rb +45 -0
  94. data/app/controllers/decidim/elections/trustee_zone/elections_controller.rb +35 -0
  95. data/app/controllers/decidim/elections/trustee_zone/trustees_controller.rb +36 -0
  96. data/app/controllers/decidim/elections/votes_controller.rb +54 -2
  97. data/app/controllers/decidim/votings/admin/application_controller.rb +26 -0
  98. data/app/controllers/decidim/votings/admin/component_permissions_controller.rb +13 -0
  99. data/app/controllers/decidim/votings/admin/components_controller.rb +15 -0
  100. data/app/controllers/decidim/votings/admin/monitoring_committee_members_controller.rb +62 -0
  101. data/app/controllers/decidim/votings/admin/polling_officers_controller.rb +66 -0
  102. data/app/controllers/decidim/votings/admin/polling_stations_controller.rb +92 -0
  103. data/app/controllers/decidim/votings/admin/voting_attachment_collections_controller.rb +22 -0
  104. data/app/controllers/decidim/votings/admin/voting_attachments_controller.rb +21 -0
  105. data/app/controllers/decidim/votings/admin/votings_controller.rb +124 -0
  106. data/app/controllers/decidim/votings/admin/votings_landing_page_content_blocks_controller.rb +44 -0
  107. data/app/controllers/decidim/votings/admin/votings_landing_page_controller.rb +46 -0
  108. data/app/controllers/decidim/votings/application_controller.rb +26 -0
  109. data/app/controllers/decidim/votings/polling_officer_zone/application_controller.rb +33 -0
  110. data/app/controllers/decidim/votings/polling_officer_zone/polling_officers_controller.rb +17 -0
  111. data/app/controllers/decidim/votings/polling_officer_zone/polling_stations_controller.rb +22 -0
  112. data/app/controllers/decidim/votings/votings_controller.rb +98 -0
  113. data/app/events/decidim/elections/trustees/notify_new_trustee_event.rb +28 -0
  114. data/app/events/decidim/elections/trustees/notify_trustee_new_election_event.rb +14 -0
  115. data/app/events/decidim/elections/votes/vote_accepted_event.rb +24 -0
  116. data/app/events/decidim/votings/polling_officers/polling_station_assigned_event.rb +44 -0
  117. data/app/forms/decidim/elections/admin/action_form.rb +34 -0
  118. data/app/forms/decidim/elections/admin/answer_form.rb +3 -2
  119. data/app/forms/decidim/elections/admin/election_form.rb +3 -2
  120. data/app/forms/decidim/elections/admin/setup_form.rb +79 -0
  121. data/app/forms/decidim/elections/admin/trustees_participatory_space_form.rb +22 -0
  122. data/app/forms/decidim/elections/admin/vote_period_form.rb +37 -0
  123. data/app/forms/decidim/elections/ballot/verify_vote_form.rb +29 -0
  124. data/app/forms/decidim/elections/trustee_zone/trustee_form.rb +26 -0
  125. data/app/forms/decidim/elections/voter/encrypted_vote_form.rb +49 -0
  126. data/app/forms/decidim/votings/admin/monitoring_committee_member_form.rb +27 -0
  127. data/app/forms/decidim/votings/admin/polling_officer_form.rb +27 -0
  128. data/app/forms/decidim/votings/admin/polling_station_form.rb +58 -0
  129. data/app/forms/decidim/votings/admin/voting_form.rb +71 -0
  130. data/app/helpers/decidim/elections/admin/answers_helper.rb +19 -0
  131. data/app/helpers/decidim/elections/admin/steps_helper.rb +23 -0
  132. data/app/helpers/decidim/elections/admin/trustees_participatory_spaces_helper.rb +31 -0
  133. data/app/helpers/decidim/elections/elections_helper.rb +29 -0
  134. data/app/helpers/decidim/votings/admin/polling_officers_picker_helper.rb +29 -0
  135. data/app/helpers/decidim/votings/votings_helper.rb +20 -0
  136. data/app/models/decidim/elections/action.rb +13 -0
  137. data/app/models/decidim/elections/election.rb +54 -3
  138. data/app/models/decidim/elections/elections_trustee.rb +11 -0
  139. data/app/models/decidim/elections/question.rb +19 -0
  140. data/app/models/decidim/elections/trustee.rb +26 -0
  141. data/app/models/decidim/elections/trustees_participatory_space.rb +13 -0
  142. data/app/models/decidim/elections/vote.rb +15 -0
  143. data/app/models/decidim/votings/monitoring_committee_member.rb +24 -0
  144. data/app/models/decidim/votings/polling_officer.rb +76 -0
  145. data/app/models/decidim/votings/polling_station.rb +64 -0
  146. data/app/models/decidim/votings/voting.rb +138 -0
  147. data/app/permissions/decidim/elections/admin/permissions.rb +50 -10
  148. data/app/permissions/decidim/elections/permissions.rb +20 -2
  149. data/app/permissions/decidim/elections/trustee_zone/permissions.rb +32 -0
  150. data/app/permissions/decidim/votings/admin/permissions.rb +127 -0
  151. data/app/permissions/decidim/votings/permissions.rb +40 -0
  152. data/app/permissions/decidim/votings/polling_officer_zone/permissions.rb +32 -0
  153. data/app/presenters/decidim/elections/admin_log/election_presenter.rb +1 -1
  154. data/app/presenters/decidim/elections/trustee_presenter.rb +24 -0
  155. data/app/presenters/decidim/votings/admin_log/voting_presenter.rb +45 -0
  156. data/app/presenters/decidim/votings/polling_station_presenter.rb +27 -0
  157. data/app/presenters/decidim/votings/voting_presenter.rb +36 -0
  158. data/app/queries/decidim/elections/admin/pending_actions.rb +20 -0
  159. data/app/queries/decidim/elections/admin/votes_for_statistics.rb +24 -0
  160. data/app/queries/decidim/elections/elections_finished_to_end.rb +19 -0
  161. data/app/queries/decidim/elections/elections_ready_to_start.rb +25 -0
  162. data/app/queries/decidim/elections/trustees/by_participatory_space.rb +24 -0
  163. data/app/queries/decidim/elections/trustees/by_participatory_space_trustee_ids.rb +24 -0
  164. data/app/queries/decidim/elections/votes/election_votes.rb +19 -0
  165. data/app/queries/decidim/elections/votes/pending_votes.rb +20 -0
  166. data/app/queries/decidim/elections/votes/user_election_last_vote.rb +26 -0
  167. data/app/queries/decidim/elections/votes/user_votes.rb +19 -0
  168. data/app/queries/decidim/votings/admin/admin_users.rb +39 -0
  169. data/app/queries/decidim/votings/admin/polling_officers_join_polling_stations.rb +33 -0
  170. data/app/queries/decidim/votings/admin/polling_officers_join_polling_stations_and_user.rb +34 -0
  171. data/app/queries/decidim/votings/admin/polling_officers_join_user.rb +32 -0
  172. data/app/queries/decidim/votings/organization_prioritized_votings.rb +21 -0
  173. data/app/queries/decidim/votings/organization_promoted_votings.rb +16 -0
  174. data/app/queries/decidim/votings/organization_published_votings.rb +19 -0
  175. data/app/queries/decidim/votings/organization_votings.rb +16 -0
  176. data/app/queries/decidim/votings/prioritized_votings.rb +13 -0
  177. data/app/queries/decidim/votings/published_votings.rb +12 -0
  178. data/app/services/decidim/votings/voting_search.rb +46 -0
  179. data/app/views/decidim/elections/admin/answers/index.html.erb +12 -0
  180. data/app/views/decidim/elections/admin/elections/index.html.erb +13 -1
  181. data/app/views/decidim/elections/admin/proposals_imports/new.html.erb +1 -1
  182. data/app/views/decidim/elections/admin/questions/index.html.erb +5 -1
  183. data/app/views/decidim/elections/admin/shared/_trustees_secondary_nav.html.erb +3 -0
  184. data/app/views/decidim/elections/admin/steps/_create_election.html.erb +38 -0
  185. data/app/views/decidim/elections/admin/steps/_created.html.erb +16 -0
  186. data/app/views/decidim/elections/admin/steps/_key_ceremony.html.erb +16 -0
  187. data/app/views/decidim/elections/admin/steps/_key_ceremony_ended.html.erb +15 -0
  188. data/app/views/decidim/elections/admin/steps/_tally.html.erb +17 -0
  189. data/app/views/decidim/elections/admin/steps/_tally_ended.html.erb +9 -0
  190. data/app/views/decidim/elections/admin/steps/_vote.html.erb +21 -0
  191. data/app/views/decidim/elections/admin/steps/_vote_ended.html.erb +15 -0
  192. data/app/views/decidim/elections/admin/steps/_vote_stats.html.erb +31 -0
  193. data/app/views/decidim/elections/admin/steps/index.html.erb +43 -0
  194. data/app/views/decidim/elections/admin/trustees_participatory_spaces/_form.html.erb +19 -0
  195. data/app/views/decidim/elections/admin/trustees_participatory_spaces/index.html.erb +64 -0
  196. data/app/views/decidim/elections/admin/trustees_participatory_spaces/new.html.erb +7 -0
  197. data/app/views/decidim/elections/elections/_filters_small_view.html.erb +1 -1
  198. data/app/views/decidim/elections/elections/_preview.html.erb +26 -0
  199. data/app/views/decidim/elections/elections/_results.html.erb +47 -0
  200. data/app/views/decidim/elections/elections/show.html.erb +43 -18
  201. data/app/views/decidim/elections/trustee_zone/elections/_backup_modal.html.erb +24 -0
  202. data/app/views/decidim/elections/trustee_zone/elections/_key_ceremony_steps.html.erb +44 -0
  203. data/app/views/decidim/elections/trustee_zone/elections/_restore_modal.html.erb +25 -0
  204. data/app/views/decidim/elections/trustee_zone/elections/_tally_steps.html.erb +43 -0
  205. data/app/views/decidim/elections/trustee_zone/elections/show.html.erb +38 -0
  206. data/app/views/decidim/elections/trustee_zone/elections/update.js.erb +5 -0
  207. data/app/views/decidim/elections/trustee_zone/trustees/show.html.erb +102 -0
  208. data/app/views/decidim/elections/votes/_election_votes_confirmed.html.erb +38 -17
  209. data/app/views/decidim/elections/votes/_election_votes_failed.html.erb +21 -0
  210. data/app/views/decidim/elections/votes/_election_votes_question.html.erb +4 -4
  211. data/app/views/decidim/elections/votes/cast_failed.js.erb +1 -0
  212. data/app/views/decidim/elections/votes/cast_success.js.erb +1 -0
  213. data/app/views/decidim/elections/votes/new.html.erb +41 -33
  214. data/app/views/decidim/elections/votes/verify.html.erb +78 -0
  215. data/app/views/decidim/votings/admin/monitoring_committee_members/_form.html.erb +27 -0
  216. data/app/views/decidim/votings/admin/monitoring_committee_members/index.html.erb +41 -0
  217. data/app/views/decidim/votings/admin/monitoring_committee_members/new.html.erb +7 -0
  218. data/app/views/decidim/votings/admin/polling_officers/_form.html.erb +27 -0
  219. data/app/views/decidim/votings/admin/polling_officers/index.html.erb +50 -0
  220. data/app/views/decidim/votings/admin/polling_officers/new.html.erb +7 -0
  221. data/app/views/decidim/votings/admin/polling_stations/_form.html.erb +40 -0
  222. data/app/views/decidim/votings/admin/polling_stations/edit.html.erb +7 -0
  223. data/app/views/decidim/votings/admin/polling_stations/index.html.erb +55 -0
  224. data/app/views/decidim/votings/admin/polling_stations/new.html.erb +7 -0
  225. data/app/views/decidim/votings/admin/votings/_form.html.erb +63 -0
  226. data/app/views/decidim/votings/admin/votings/edit.html.erb +31 -0
  227. data/app/views/decidim/votings/admin/votings/index.html.erb +87 -0
  228. data/app/views/decidim/votings/admin/votings/new.html.erb +13 -0
  229. data/app/views/decidim/votings/admin/votings/polling_officers_picker.html.erb +2 -0
  230. data/app/views/decidim/votings/polling_officer_zone/polling_officers/show.html.erb +42 -0
  231. data/app/views/decidim/votings/polling_officer_zone/polling_stations/show.html.erb +1 -0
  232. data/app/views/decidim/votings/votings/_count.html.erb +1 -0
  233. data/app/views/decidim/votings/votings/_filters.html.erb +25 -0
  234. data/app/views/decidim/votings/votings/_filters_small_view.html.erb +23 -0
  235. data/app/views/decidim/votings/votings/_promoted_voting.html.erb +27 -0
  236. data/app/views/decidim/votings/votings/_voting_details.html.erb +7 -0
  237. data/app/views/decidim/votings/votings/_votings.html.erb +25 -0
  238. data/app/views/decidim/votings/votings/index.html.erb +42 -0
  239. data/app/views/decidim/votings/votings/index.js.erb +10 -0
  240. data/app/views/decidim/votings/votings/show.html.erb +20 -0
  241. data/app/views/layouts/decidim/_voting_header.html.erb +16 -0
  242. data/app/views/layouts/decidim/admin/voting.html.erb +101 -0
  243. data/app/views/layouts/decidim/voting.html.erb +16 -0
  244. data/config/initializers/decidim_bulletin_board.rb +23 -0
  245. data/config/locales/ca.yml +635 -6
  246. data/config/locales/cs.yml +635 -6
  247. data/config/locales/de.yml +635 -6
  248. data/config/locales/el.yml +4 -2
  249. data/config/locales/en.yml +636 -6
  250. data/config/locales/es-MX.yml +636 -7
  251. data/config/locales/es-PY.yml +636 -7
  252. data/config/locales/es.yml +636 -7
  253. data/config/locales/fi-plain.yml +636 -7
  254. data/config/locales/fi.yml +636 -7
  255. data/config/locales/fr-CA.yml +419 -6
  256. data/config/locales/fr.yml +419 -6
  257. data/config/locales/gl.yml +81 -4
  258. data/config/locales/it.yml +98 -6
  259. data/config/locales/ja.yml +12 -6
  260. data/config/locales/lv.yml +4 -2
  261. data/config/locales/nl.yml +502 -6
  262. data/config/locales/no.yml +0 -6
  263. data/config/locales/pl.yml +656 -10
  264. data/config/locales/pt.yml +4 -6
  265. data/config/locales/ro-RO.yml +214 -6
  266. data/config/locales/sv.yml +12 -7
  267. data/config/locales/tr-TR.yml +111 -6
  268. data/config/locales/zh-CN.yml +4 -6
  269. data/db/migrate/20200915142713_add_questionnaire_to_existing_elections.rb +29 -0
  270. data/db/migrate/20200918153813_create_decidim_elections_trustees_participatory_spaces.rb +13 -0
  271. data/db/migrate/20200918153824_create_decidim_elections_elections_trustees.rb +10 -0
  272. data/db/migrate/20200918153835_create_decidim_elections_trustees.rb +12 -0
  273. data/db/migrate/20201026163334_add_blocked_at_and_bb_status_to_elections.rb +8 -0
  274. data/db/migrate/20201028090110_add_votes_to_decidim_elections_answers.rb +7 -0
  275. data/db/migrate/20201028135614_add_selected_to_decidim_elections_answers.rb +7 -0
  276. data/db/migrate/20201209110653_create_decidim_elections_votes.rb +14 -0
  277. data/db/migrate/20201216091123_add_name_to_trustees.rb +7 -0
  278. data/db/migrate/20210113113818_add_message_id_to_decidim_elections_votes.rb +7 -0
  279. data/db/migrate/20210113120115_create_decidim_elections_votings.rb +20 -0
  280. data/db/migrate/20210114100749_add_published_at_to_decidim_votings_votings.rb +7 -0
  281. data/db/migrate/20210114111850_add_user_to_decidim_elections_votes.rb +7 -0
  282. data/db/migrate/20210120164634_add_promoted_to_voting.rb +7 -0
  283. data/db/migrate/20210125124801_add_voting_type_to_voting_voting.rb +7 -0
  284. data/db/migrate/20210129124956_create_decidim_elections_actions.rb +14 -0
  285. data/db/migrate/20210204132111_add_votings_polling_stations.rb +19 -0
  286. data/db/migrate/20210208090441_add_polling_officers_to_votings.rb +12 -0
  287. data/db/migrate/20210210090738_add_votings_polling_station_references_to_votings_polling_officer.rb +8 -0
  288. data/db/migrate/20210216074707_add_monitoring_committee_member.rb +12 -0
  289. data/db/migrate/20210310120708_add_followable_counter_cache_to_votings.rb +16 -0
  290. data/db/seeds/city.jpeg +0 -0
  291. data/lib/decidim/api/election_answer_type.rb +23 -0
  292. data/lib/decidim/api/election_question_type.rb +22 -0
  293. data/lib/decidim/api/election_type.rb +27 -0
  294. data/lib/decidim/api/elections_type.rb +32 -0
  295. data/lib/decidim/api/trustee_type.rb +16 -0
  296. data/lib/decidim/api/voting_type.rb +20 -0
  297. data/lib/decidim/elections.rb +19 -2
  298. data/lib/decidim/elections/admin_engine.rb +42 -1
  299. data/lib/decidim/elections/answer_serializer.rb +48 -0
  300. data/lib/decidim/elections/api.rb +11 -0
  301. data/lib/decidim/elections/component.rb +367 -24
  302. data/lib/decidim/elections/engine.rb +8 -1
  303. data/lib/decidim/elections/test/factories.rb +201 -4
  304. data/lib/decidim/elections/trustee_zone.rb +10 -0
  305. data/lib/decidim/elections/trustee_zone_engine.rb +35 -0
  306. data/lib/decidim/elections/version.rb +1 -1
  307. data/lib/decidim/votings.rb +16 -0
  308. data/lib/decidim/votings/admin.rb +10 -0
  309. data/lib/decidim/votings/admin_engine.rb +71 -0
  310. data/lib/decidim/votings/api.rb +7 -0
  311. data/lib/decidim/votings/engine.rb +147 -0
  312. data/lib/decidim/votings/participatory_space.rb +92 -0
  313. data/lib/decidim/votings/polling_officer_zone.rb +10 -0
  314. data/lib/decidim/votings/polling_officer_zone_engine.rb +33 -0
  315. data/lib/decidim/votings/query_extensions.rb +43 -0
  316. data/lib/decidim/votings/test/capybara_polling_officers_picker.rb +49 -0
  317. data/lib/decidim/votings/test/factories.rb +83 -0
  318. data/lib/decidim/votings/voting_serializer.rb +54 -0
  319. data/lib/tasks/decidim_elections.rake +68 -5
  320. metadata +303 -19
  321. data/app/types/decidim/elections/election_answer_type.rb +0 -24
  322. data/app/types/decidim/elections/election_question_type.rb +0 -25
  323. data/app/types/decidim/elections/election_type.rb +0 -27
  324. data/app/types/decidim/elections/elections_type.rb +0 -32
  325. data/config/i18n-tasks.yml +0 -10
  326. data/lib/decidim/elections/bulletin_board_client.rb +0 -35
@@ -16,6 +16,9 @@ es-MX:
16
16
  max_selections: Número máximo de opciones
17
17
  min_selections: Ninguna de las anteriores
18
18
  title: Título
19
+ voting:
20
+ end_time: La votación finaliza
21
+ start_time: La votación empieza
19
22
  errors:
20
23
  models:
21
24
  answer:
@@ -26,7 +29,25 @@ es-MX:
26
29
  attributes:
27
30
  attachment:
28
31
  needs_to_be_reattached: Es necesario volver a adjuntar el archivo
32
+ trustee:
33
+ attributes:
34
+ name:
35
+ cant_be_changed: no se puede cambiar
36
+ public_key:
37
+ cant_be_changed: no se puede cambiar
29
38
  activerecord:
39
+ errors:
40
+ models:
41
+ decidim/votings/polling_officer:
42
+ attributes:
43
+ presided_polling_station:
44
+ president_and_manager: El gestor de mesa ya es presidente/gestor del punto de votación
45
+ voting:
46
+ different_organization: La votación debe estar en la misma organización que el usuario
47
+ decidim/votings/polling_station:
48
+ attributes:
49
+ polling_station_president:
50
+ different_voting: El gestor de mesa debe estar en la misma votación que el punto de votación
30
51
  models:
31
52
  decidim/elections/answer:
32
53
  one: Respuesta
@@ -37,7 +58,33 @@ es-MX:
37
58
  decidim/elections/question:
38
59
  one: Pregunta
39
60
  other: Preguntas
61
+ decidim/votings/polling_officer:
62
+ one: Gestor de mesa
63
+ other: Gestores de mesa
64
+ decidim/votings/polling_station:
65
+ one: Punto de votación
66
+ other: Puntos de votación
67
+ decidim/votings/voting:
68
+ one: Votación
69
+ other: Votaciones
40
70
  decidim:
71
+ admin:
72
+ filters:
73
+ officers_assigned_eq:
74
+ label: Gestores
75
+ values:
76
+ assigned: Asignado
77
+ unassigned: No asignado
78
+ role_eq:
79
+ label: Rol
80
+ values:
81
+ manager: Gestor
82
+ president: Presidente
83
+ unassigned: Sin asignar
84
+ search_placeholder:
85
+ name_or_email_or_nickname_or_presided_station_title_or_managed_station_title_cont: Buscar %{collection} por nombre/email/alias o punto de votación.
86
+ ? title_or_address_or_manager_name_or_manager_email_or_manager_nickname_or_president_name_or_president_email_or_president_nickname_cont
87
+ : Buscar %{collection} por título, dirección o nombre del gestor/email/alias.
41
88
  components:
42
89
  elections:
43
90
  actions:
@@ -53,9 +100,11 @@ es-MX:
53
100
  confirm_destroy: '¿Seguro que quieres eliminar?'
54
101
  destroy: Eliminar
55
102
  edit: Modificar
56
- edit_answers: Editar las respuestas
57
- edit_questions: Editar las preguntas
103
+ feedback: Feedback del votante
58
104
  import: Importar de propuestas a respuestas
105
+ manage_answers: Gestionar respuestas
106
+ manage_questions: Gestionar preguntas
107
+ manage_steps: Gestionar pasos
59
108
  new: Nuevo %{name}
60
109
  preview: Vista previa
61
110
  publish: Publicar
@@ -78,6 +127,14 @@ es-MX:
78
127
  new:
79
128
  create: Crear respuesta
80
129
  title: Nueva respuesta
130
+ select:
131
+ disable: Deseleccionar respuesta
132
+ enable: Marcar respuesta como seleccionada
133
+ invalid: Hubo un problema al seleccionar esta respuesta
134
+ success: Respuesta seleccionada con éxito
135
+ unselect:
136
+ invalid: Hubo un problema al deseleccionar esta respuesta
137
+ success: Respuesta seleccionada con éxito
81
138
  update:
82
139
  invalid: Se ha producido un error al crear esta respuesta
83
140
  success: Respuesta actualizada con éxito
@@ -104,6 +161,9 @@ es-MX:
104
161
  update:
105
162
  invalid: Se ha producido un error al actualizar esta votación
106
163
  success: Se ha actualizado la votación correctamente
164
+ exports:
165
+ elections: Elecciones
166
+ feedback_form_answers: Feedback de respuestas
107
167
  models:
108
168
  answer:
109
169
  name: Respuesta
@@ -111,6 +171,8 @@ es-MX:
111
171
  name: Votación
112
172
  question:
113
173
  name: Pregunta
174
+ trustee:
175
+ name: Garante
114
176
  proposals_imports:
115
177
  create:
116
178
  invalid: Se ha producido un error al importar las propuestas a proyectos
@@ -119,6 +181,7 @@ es-MX:
119
181
  create: Importar de propuestas a respuestas
120
182
  no_components: No hay otros componentes de la propuesta en este espacio participativo desde el que importar las propuestas en los proyectos.
121
183
  select_component: Por favor selecciona un componente
184
+ title: Importar propuestas
122
185
  questions:
123
186
  create:
124
187
  invalid: Se ha producido un error al crear esta pregunta
@@ -137,9 +200,107 @@ es-MX:
137
200
  update:
138
201
  invalid: Se ha producido un error al actualizar esta pregunta
139
202
  success: La pregunta se ha actualizado correctamente
203
+ steps:
204
+ create_election:
205
+ errors:
206
+ max_selections: Las preguntas no tienen un valor <strong>correcto para la cantidad de respuestas</strong>
207
+ minimum_answers: Las preguntas deben tener <strong>al menos dos respuestas</strong>.
208
+ minimum_questions: La elección <strong>debe tener al menos una pregunta</strong>.
209
+ published: La elección <strong>no está publicada</strong>.
210
+ time_before: La hora de inicio está en <strong>menos de 3 horas</strong> antes de que comience la elección.
211
+ trustees_number: El espacio participativo <strong>debe tener al menos %{number} garantes con clave pública</strong>.
212
+ invalid: Hubo un problema al configurar esta elección
213
+ no_trustees: No hay garantes configurados para este espacio participativo
214
+ not_used_trustee: "(no se usa)"
215
+ public_key:
216
+ 'false': no tiene una <strong>clave pública</strong>
217
+ 'true': tiene una <strong> clave pública</strong>
218
+ requirements:
219
+ max_selections: Todas las preguntas tienen un valor correcto para <strong>máximo de respuestas</strong>.
220
+ minimum_answers: Cada pregunta tiene <strong>al menos 2 respuestas</strong>.
221
+ minimum_questions: La elección tiene <strong>al menos 1 pregunta</strong>.
222
+ published: La elección está <strong>publicada</strong>.
223
+ time_before: La configuración se está realizando <strong>al menos %{hours} horas</strong> antes de que comience la elección.
224
+ trustees_number: El espacio participativo tiene <strong>al menos %{number} garantes con clave pública</strong>.
225
+ submit: Configurar elección
226
+ success: Elección enviada con éxito al Bulletin Board
227
+ title: Configurar elección
228
+ trustees: Garantes de la elección
229
+ created:
230
+ invalid: Hubo un problema al iniciar la ceremonia de claves
231
+ submit: Iniciar la ceremonia de claves
232
+ success: La solicitud para iniciar la ceremonia de claves fue enviada con éxito al Bulletin Board
233
+ title: Elección creada
234
+ trustees: Garantes
235
+ key_ceremony:
236
+ title: Ceremonia de claves
237
+ trustees: Garantes
238
+ key_ceremony_ended:
239
+ errors:
240
+ time_before: La elección está lista para comenzar. Tienes que esperar hasta %{hours} horas antes de la hora de inicio (%{start_time}) para comenzar el periodo de votación.
241
+ invalid: Hubo un problema al iniciar el período de votación
242
+ requirements:
243
+ time_before: La elección comenzará pronto. Puede iniciar el periodo de votación manualmente, o se iniciará automáticamente antes de la hora de inicio, a las %{start_time}.
244
+ submit: Empezar período de votación
245
+ success: La solicitud de período de votación se ha enviado correctamente al Bulletin Board
246
+ title: Listo para empezar
247
+ processing: Procesando...
248
+ results_published:
249
+ title: Resultados publicados
250
+ tally:
251
+ title: Proceso de recuento
252
+ trustees: Garantes
253
+ tally_ended:
254
+ submit: Publicar resultados
255
+ title: Resultados calculados
256
+ vote:
257
+ errors:
258
+ time_after: La elección aún está en curso. Tienes que esperar hasta la hora de finalización (%{end_time}) para terminar el periodo de votación.
259
+ invalid: Hubo un problema al terminar el período de votación
260
+ requirements:
261
+ time_after: La elección ha terminado. Puedes terminar el período de votación manualmente, o terminará automáticamente en unos minutos.
262
+ submit: Finalizar período de votación
263
+ success: La solicitud para finalizar el período de votación se ha enviado correctamente al Bulletin Board
264
+ title: Periodo de votación
265
+ vote_ended:
266
+ invalid: Hubo un problema al iniciar el recuento
267
+ submit: Comenzar recuento
268
+ success: La solicitud de inicio del recuento se envió correctamente al Bulletin Board
269
+ title: Periodo de votación finalizado
270
+ vote_stats:
271
+ no_vote_statistics_yet: Aún no hay estadísticas de voto
272
+ title: Estadísticas de voto
273
+ voters: Votantes
274
+ votes: Votos
275
+ trustees_participatory_spaces:
276
+ actions:
277
+ disable: Deshabilitar
278
+ enable: Considerar
279
+ create:
280
+ exists: El garante existe para este espacio participativo
281
+ invalid: Se ha producido un error al crear un garante
282
+ success: Garante creado correctamente
283
+ delete:
284
+ invalid: Se ha producido un error al eliminar este garante
285
+ success: Garante eliminado correctamente
286
+ form:
287
+ select_user: Seleccionar usuario
288
+ index:
289
+ title: Garantes
290
+ new:
291
+ create: Crear garante
292
+ title: Nuevo garante
293
+ update:
294
+ invalid: Se ha producido un error al actualizar el garante %{trustee}
295
+ success: El garante %{trustee} se ha actualizado correctamente
140
296
  admin_log:
141
297
  election:
298
+ end_vote: "%{user_name} terminó el período de votación para la elección %{resource_name} en el Bulletin Board"
142
299
  publish: "%{user_name} ha publicado la votación %{resource_name}"
300
+ setup: "%{user_name} creó la elección %{resource_name} en el Bulletin Board"
301
+ start_key_ceremony: "%{user_name} comenzó la ceremonia de claves para las elecciones %{resource_name} en el Bulletin Board"
302
+ start_tally: "%{user_name} comenzó el recuento para la elección %{resource_name} en el Bulletin Board"
303
+ start_vote: "%{user_name} comenzó el período de votación para la elección %{resource_name} en el Bulletin Board"
143
304
  unpublish: "%{user_name} ha despublicado la votación %{resource_name}"
144
305
  election_m:
145
306
  badge_name:
@@ -172,14 +333,40 @@ es-MX:
172
333
  filter: Filtrar
173
334
  filter_by: Filtrar por
174
335
  unfold: Desplegar
336
+ preview:
337
+ available_answers: Respuestas disponibles
338
+ description: Estas son las preguntas que encontrarás en el proceso de votación
339
+ title: Preguntas de la elección
340
+ results:
341
+ description: Estos son los resultados de la votación, para cada pregunta
342
+ selected: Seleccionado
343
+ title: Resultados de la elección
344
+ votes:
345
+ one: ""
346
+ other: ""
175
347
  show:
176
- back: Todas las votaciones
348
+ action-button:
349
+ change-vote: Cambia tu voto
350
+ vote: Empezar a votar
351
+ vote-again: Votar de nuevo
352
+ back: Elecciones disponibles
353
+ callout:
354
+ already-voted: Ya has votado en esta elección. Puedes cambiar tu voto o verificarlo.
355
+ vote-rejected: No ha sido posible verificar tu voto. Por favor, hazlo de nuevo.
177
356
  preview: Previsualizar
178
- vote: Votar
357
+ verify:
358
+ already-voted: '¿Ya has votado?'
359
+ verify-here: Comprueba tu voto aquí.
360
+ will-verify: Podrás verificar tu voto una vez que comience la elección.
179
361
  voting_period_status:
180
362
  finished: La votación empezó el %{start_time} y terminó el %{end_time}
181
- ongoing: La votación termina el %{end_time}
363
+ ongoing: 'Votación activa hasta: %{end_time}'
182
364
  upcoming: La votación empieza el %{start_time}
365
+ feedback:
366
+ answer:
367
+ invalid: Hubo un problema al enviar tu feedback.
368
+ spam_detected: Hubo un problema al responder al formulario. Tal vez hayas sido demasiado rápido, ¿puedes intentarlo de nuevo?
369
+ success: Feedback enviado con éxito.
183
370
  models:
184
371
  answer:
185
372
  fields:
@@ -187,6 +374,7 @@ es-MX:
187
374
  title: Título
188
375
  election:
189
376
  fields:
377
+ bb_status: Estado del tBulletin Board
190
378
  end_time: Termina el
191
379
  start_time: Empieza el
192
380
  title: Título
@@ -195,10 +383,114 @@ es-MX:
195
383
  answers: Respuestas
196
384
  max_selections: Número máximo de elementos a seleccionar
197
385
  title: Título
386
+ trustees_participatory_space:
387
+ fields:
388
+ considered: considerado
389
+ email: Correo electrónico
390
+ inactive: inactivo
391
+ name: Nombre
392
+ notification: Notificación enviada el
393
+ public_key: Clave publica
394
+ status: Estado
198
395
  orders:
199
396
  label: Ordenar votaciones por
200
397
  older: Más antigua
201
398
  recent: Reciente
399
+ trustee_zone:
400
+ elections:
401
+ backup_modal:
402
+ description: Esta elección se está creando en el Bulletin Board. Es muy importante que cada garante que participe en ella cree una copia de seguridad de estas claves y las almacene en un lugar seguro. Después, el proceso continuará.
403
+ download_election_keys: Descargar claves
404
+ download_icon: Icono que indica una acción de descarga
405
+ title: Copia de seguridad de claves para la elección %{election}
406
+ key_ceremony_steps:
407
+ back: Volver
408
+ description: Esta elección está siendo creada en el Bulletin Board. Para completar este proceso, se necesita tu participación como garante.
409
+ keys:
410
+ create_election: Generación de claves
411
+ key_ceremony:
412
+ joint_election_key: Generación de claves conjuntas
413
+ step_1: Publicación de claves
414
+ list:
415
+ status: Estado
416
+ task: Tarea
417
+ process_warning: Una vez iniciado el proceso, no debes salir de esta página hasta que el proceso termine. Tardará varios minutos, ya que todos los garantes deben estar conectados para completarlo.
418
+ start: Empezar
419
+ start_icon: Icono que indica un botón de inicio para iniciar la generación de claves de una elección
420
+ status:
421
+ completed: Completada
422
+ pending: Pendiente
423
+ processing: Procesando
424
+ title: Crear claves para la elección %{election}
425
+ restore_modal:
426
+ description: El Bulletin Board tiene tu información como garante de esta elección. Para continuar el proceso, primero sube el archivo de copia de seguridad generado durante la sesión anterior.
427
+ title: Restaurar claves para la elección %{election}
428
+ upload_election_keys: Subir claves de elección
429
+ upload_icon: Icono que indica una acción de descarga
430
+ tally_steps:
431
+ back: Volver
432
+ description: Los resultados de esta elección están siendo calculados en el Bulletin Board. Para completar este proceso, se necesita tu participación como garante.
433
+ keys:
434
+ end_tally: Recuento finalizado
435
+ tally:
436
+ cast: Envío del recuento
437
+ share: Compartición del recuento
438
+ list:
439
+ status: Estado
440
+ task: Tarea
441
+ process_warning: Una vez iniciado el proceso, no debes salir de esta página hasta que el proceso termine. Tardará varios minutos, ya que todos los garantes deben estar conectados para completarlo.
442
+ start: Iniciar
443
+ start_icon: Icono que indica un botón de inicio para iniciar la generación de claves de elección
444
+ status:
445
+ completed: Completado
446
+ pending: Pendiente
447
+ processing: Procesando
448
+ title: Recuento para %{election}
449
+ update:
450
+ error: El estado de la elección no fue actualizado.
451
+ success: 'El estado de la elección es: %{status}'
452
+ menu:
453
+ trustee_zone: Zona del garante
454
+ no_bulletin_board:
455
+ body: Se requiere un Bulletin Board configurado para esta sección. Contacta con el Administrador para más detalles.
456
+ title: Lo sentimos, el Bulletin Board aún no está configurado.
457
+ trustees:
458
+ show:
459
+ elections:
460
+ list:
461
+ action_required:
462
+ 'false': 'No'
463
+ name: '¿Acción requerida?'
464
+ 'true': Realizar acción
465
+ bb_status: Estado
466
+ election: Elección
467
+ voting_period: Período de votación
468
+ no_elections: No hay elecciones en las que actúes como garante.
469
+ title: Elecciones
470
+ identification_keys:
471
+ cancel: Cancelar
472
+ generate: Generar claves de identificación
473
+ generate_error: Hubo un error al generar las claves de identificación.
474
+ generate_legend: Necesitas generar un par de claves de identificación para participar en las elecciones como garante.
475
+ generate_legend_1: Después de pulsar el botón debes descargar el archivo con las claves de identificación generadas.
476
+ generate_legend_2: Copia el archivo descargado a un dispositivo USB limpio
477
+ generate_legend_3: Asegúrate de que tu equipo no tenga una copia del archivo (por ejemplo, comprueba las carpetas de Descargas y Escritorio).
478
+ generate_legend_4: Haz otra copia del archivo en un dispositivo externo diferente y guárdalo en un lugar muy seguro.
479
+ submit: Enviar
480
+ submit_legend: Después de seguir todos los pasos explicados anteriormente, completa el proceso enviando la clave de identificación pública al servidor de Decidim.
481
+ submit_title: Enviar la clave de identificación pública
482
+ title: Claves de identificación del garante
483
+ upload: Sube tus claves de identificación
484
+ upload_error:
485
+ invalid_format: El archivo subido no contiene ninguna clave de identificación.
486
+ invalid_key: Las claves de identificación en el archivo subido no se pueden cargar.
487
+ invalid_public_key: Las claves de identificación en el archivo subido no coinciden con la clave de identificación pública almacenada por Decidim.
488
+ upload_legend: Decidim tiene tus claves públicas de identificación, pero tu navegador todavía no las tiene. Necesitas importar el archivo con tus claves de identificación a tu ordenador desde la copia de seguridad que creaste después de generarlas.
489
+ not_supported_browser_description: Parece que estás usando un navegador que no puede ser utilizado para actuar como garante. Asegúrate de que estás usando la versión más reciente de tu navegador, o intenta usar cualquiera de los navegadores más populares para poder completar tus tareas como garante.
490
+ not_supported_browser_title: Actualiza el navegador para actuar como garante
491
+ trustee_role_description: Se le ha asignado como garante en algunas de las elecciones celebradas en esta plataforma.
492
+ update:
493
+ success: Tu clave pública de identificación fue guardada con éxito.
202
494
  votes:
203
495
  confirm:
204
496
  answer: Respuesta
@@ -211,15 +503,20 @@ es-MX:
211
503
  question: Preguntas %{count}
212
504
  confirmed:
213
505
  back: Volver a las votaciones
506
+ error: Lo sentimos, hubo un error al confirmar el voto. Por favor, vota de nuevo.
214
507
  experience: '¿Cómo valoras la experiencia?'
215
508
  feedback: Danos tu opinión
216
509
  header: Voto confirmado
217
510
  lead: '¡Tu voto ha sido emitido!'
218
511
  text: 'Puedes comprobar que tu voto se ha añadido correctamente a la urna con el siguiente identificador: <strong class="evote__poll-id">%{e_vote_poll_id}</strong>'
219
- verify_text: Para comprobarlo, copia el identificador y pégalo en la <a href="evote-verify">página de verificación de voto</a>
512
+ verify_link: Para comprobarlo, copia el identificador y pégalo en la <a href="%{link}">página de verificación de voto</a>
220
513
  encrypting:
221
514
  header: Codificando voto...
222
515
  text: Tu voto está siendo cifrado para asegurar que se emite de forma anónima.
516
+ failed:
517
+ header: Voto fallido
518
+ lead: '¡Tu voto no ha sido emitido!'
519
+ text: Algo salió mal, por favor inténtalo de nuevo.
223
520
  header:
224
521
  confirm: Confirma tu voto
225
522
  confirmed: Voto confirmado
@@ -236,6 +533,28 @@ es-MX:
236
533
  preview_alert: Esta es una vista previa de la cabina de votación.
237
534
  question_steps: Pregunta %{current_step} de %{total_steps}
238
535
  selections: "Seleccionada <br> %{selected} de %{max_selections}"
536
+ processing:
537
+ header: Procesando voto...
538
+ text: Tu voto ha sido recibido y está siendo procesado. Por favor, espera.
539
+ update:
540
+ error: Hubo un problema al actualizar el estado del voto
541
+ success: Estado de voto actualizado correctamente
542
+ verify:
543
+ content:
544
+ heading: Verifica tu voto
545
+ info: Este verificador comprueba que tu voto, identificado con una cadena de texto cifrada, ha sido emitido correctamente y está dentro de la urna.
546
+ error:
547
+ header: Voto no encontrado!
548
+ info: El código de voto no se ha encontrado en la urna de %{link}, inténtelo de nuevo.
549
+ form:
550
+ back: Volver a Decidim
551
+ submit: Comprobar
552
+ vote_identifier: 'Código identificador:'
553
+ header:
554
+ title: Verifica tu voto
555
+ success:
556
+ header: '¡Voto localizado!'
557
+ info: Tu voto cifrado está en la urna de %{link}
239
558
  voting_step:
240
559
  back: Atrás
241
560
  continue: Siguiente
@@ -249,14 +568,324 @@ es-MX:
249
568
  email_outro: Has recibido esta notificación porque estás siguiendo %{participatory_space_title}. Puedes dejar de recibir notificaciones siguiendo el enlace anterior.
250
569
  email_subject: La votación %{resource_title} en %{participatory_space_title} ya está activa.
251
570
  notification_title: La votación <a href="%{resource_path}">%{resource_title}</a> ya está activa en %{participatory_space_title}.
571
+ trustees:
572
+ new_election:
573
+ email_intro: Has sido añadido como garante para la elección de %{resource_title}.
574
+ email_outro: Has recibido esta notificación porque has sido añadido como garante para la elección %{resource_title}.
575
+ email_subject: Eres garante para la elección de %{resource_title}..
576
+ notification_title: Eres garante para la elección de <a href="%{resource_path}">%{resource_title}</a>.
577
+ new_trustee:
578
+ email_intro: Un administrador te ha añadido como garante para %{resource_name}. Debes crear tu clave pública <a href='%{trustee_zone_url}'>en tu zona de garantes</a>
579
+ email_outro: Has recibido esta notificación porque has sido añadido como garante para %{resource_name}.
580
+ email_subject: Eres garante de %{resource_name}.
581
+ notification_title: Eres garante de <a href="%{participatory_space_url}">%{resource_name}</a>.
582
+ votes:
583
+ accepted_votes:
584
+ email_intro: '¡Tu voto ha sido aceptado! Utilizando tu token de voto: %{encrypted_vote_hash}, puedes verificar tu voto <a href="%{verify_url}">aquí</a>.'
585
+ email_outro: Has recibido esta notificación porque has votado en la elección %{resource_name}.
586
+ email_subject: Tu voto para %{resource_name} ha sido aceptado.
587
+ notification_title: 'Tu voto ha sido aceptado. Verifica tu voto <a href="%{verify_url}">aquí</a> usando tu token de voto: %{encrypted_vote_hash}'
588
+ votings:
589
+ polling_officers:
590
+ polling_station_assigned:
591
+ email_intro: Se te ha asignado como %{role} del punto de votación %{polling_station_name} en <a href="%{resource_url}">%{resource_title}</a>. Puedes administrar el punto de votación desde el espacio <a href="%{polling_officer_zone_url}">Zona de gestores de mesa</a>.
592
+ email_outro: Has recibido esta notificación porque has sido asignado como %{role} de %{polling_station_name}.
593
+ email_subject: Eres %{role} del punto de votación %{polling_station_name}.
594
+ notification_title: Eres %{role} del punto de votación %{polling_station_name} en la votación <a href="%{resource_path}">%{resource_title}</a>.
595
+ help:
596
+ participatory_spaces:
597
+ votings:
598
+ contextual: "<p>Una <strong>votación</strong> es un espacio que os permite hacer una pregunta clara al conjunto de miembros de una organización, hacer un llamamiento a participar en una votación, generar y ordenar el debate a favor o en contra de una respuesta. cunado llega la fecha de la votación, podéis votar y publicar el resultado.</p> <p> Las votaciones pueden ser prácticamente de cualquier aspecto que afecte a la organización. Algunos ejemplos serían: cambiar el nombre o el logotipo de la organización ofreciendo diversas alternativas, decidir si pasar a formar parte de una organización más grande o no, validar o desestimar un nuevo plan estratégico o el resultado de un gruipo de trabajo, o definir si los cargos deberían tener una duración máxima de uno, dos o tres mandatos.</p>"
599
+ page: "<p>Una <strong>votación</strong> es un espacio que os permite hacer una pregunta clara al conjunto de miembros de una organización, hacer un llamamiento a participar en una votación, generar y ordenar el debate a favor o en contra de una respuesta. cunado llega la fecha de la votación, podéis votar y publicar el resultado.</p> <p> Las votaciones pueden ser prácticamente de cualquier aspecto que afecte a la organización. Algunos ejemplos serían: cambiar el nombre o el logotipo de la organización ofreciendo diversas alternativas, decidir si pasar a formar parte de una organización más grande o no, validar o desestimar un nuevo plan estratégico o el resultado de un gruipo de trabajo, o definir si los cargos deberían tener una duración máxima de uno, dos o tres mandatos.</p>"
600
+ title: '¿Qué son las votaciones?'
601
+ menu:
602
+ votings: Votaciones
252
603
  pages:
253
604
  home:
254
605
  statistics:
255
606
  elections_count: Elecciones
256
607
  participatory_processes:
257
608
  statistics:
258
- elections_count: Votaciones
609
+ elections_count: Elecciones
610
+ votings:
611
+ admin:
612
+ content_blocks:
613
+ highlighted_votings:
614
+ max_results: Cantidad máxima de elementos a mostrar
615
+ landing_page:
616
+ attachments_and_folders:
617
+ name: Archivos adjuntos y carpetas de la votación
618
+ description:
619
+ name: Descripción de la votación
620
+ elections:
621
+ name: Elecciones de la votación
622
+ header:
623
+ name: Cabecera de la votación
624
+ html_block_1:
625
+ name: Bloque html 1 de la votación
626
+ html_block_2:
627
+ name: Bloque html 2 de la votación
628
+ html_block_3:
629
+ name: Bloque html 3 de la votación
630
+ metrics:
631
+ name: Métricas de votación
632
+ polling_stations:
633
+ name: Puntos de votación
634
+ stats:
635
+ name: Estadísticas de votación
636
+ timeline:
637
+ name: Calendario de votación
638
+ index:
639
+ not_published: Despublicada
640
+ published: Publicada
641
+ landing_page:
642
+ content_blocks:
643
+ edit:
644
+ update: Actualizar
645
+ edit:
646
+ active_content_blocks: Bloques de contenido activos
647
+ inactive_content_blocks: Bloques de contenido inactivos
648
+ menu:
649
+ votings: Votaciones
650
+ votings_submenu:
651
+ attachment_collections: Carpetas
652
+ attachment_files: Archivos
653
+ attachments: Archivos adjuntos
654
+ components: Componentes
655
+ info: Información
656
+ landing_page: Página de inicio
657
+ monitoring_committee_members: Comité de seguimiento
658
+ polling_officers: Gestores de mesa
659
+ polling_stations: Puntos de votación
660
+ models:
661
+ monitoring_committee_member:
662
+ fields:
663
+ email: Correo electrónico
664
+ name: Nombre
665
+ name: Miembro del comité de seguimiento
666
+ polling_officer:
667
+ fields:
668
+ email: Correo electrónico
669
+ name: Nombre
670
+ polling_station: Punto de votación (rol)
671
+ name: Gestor de mesa
672
+ polling_station:
673
+ fields:
674
+ address: Dirección
675
+ polling_station_managers: Administradores
676
+ polling_station_president: Presidente
677
+ title: Título
678
+ name: Punto de votación
679
+ voting:
680
+ fields:
681
+ created_at: Creado el
682
+ promoted: Destacada
683
+ published: Publicada
684
+ title: Título
685
+ monitoring_committee_members:
686
+ create:
687
+ invalid: Hubo un problema al crear este miembro del comité de seguimiento
688
+ success: Miembro del comité de seguimiento creado con éxito
689
+ destroy:
690
+ invalid: Hubo un problema al eliminar este miembro del comité de seguimiento
691
+ success: El miembro del comité de seguimiento ha sido eliminado correctamente
692
+ form:
693
+ existing_user: Participante existente
694
+ non_user: Invitar nueva participante
695
+ select_user: Buscar por correo electrónico, nombre o alias
696
+ user_type: Tipo de participante
697
+ index:
698
+ title: Comité de seguimiento
699
+ new:
700
+ create: Crear
701
+ title: Crear miembro del comité de seguimiento
702
+ polling_officers:
703
+ create:
704
+ invalid: Hubo un problema al crear este gestor de mesa
705
+ success: Gestor de mesa creado con éxito
706
+ destroy:
707
+ invalid: Hubo un problema al eliminar este gestor de mesa
708
+ success: Gestor de mesa eliminado correctamente
709
+ form:
710
+ existing_user: Participante existente
711
+ non_user: Invitar nueva participante
712
+ select_user: Buscar por correo electrónico, nombre o alias
713
+ user_type: Tipo de participante
714
+ index:
715
+ role_manager: administrador
716
+ role_president: presidente
717
+ title: Gestores de mesa
718
+ new:
719
+ create: Crear
720
+ title: Crear gestor de mesa
721
+ polling_officers_picker:
722
+ choose_polling_officers: Elegir gestores de mesa
723
+ close: Cerrar
724
+ more_polling_officers: Hay %{number} gestores de mesa más. Refina tu búsqueda para localizarlos.
725
+ no_polling_officers: Ningún gestor de mesa coincide con tus criterios de búsqueda o no hay ninguno.
726
+ polling_stations:
727
+ create:
728
+ invalid: Hubo un problema al crear este punto de votación
729
+ success: El punto de votación se ha creado correctamente
730
+ destroy:
731
+ invalid: Hubo un problema al eliminar este punto de votación
732
+ success: El punto de votación se ha eliminado correctamente
733
+ edit:
734
+ title: Editar punto de votación
735
+ update: Actualizar punto de votación
736
+ form:
737
+ address_help: 'Dirección: usada por Geocoder para encontrar la ubicación'
738
+ location_help: 'Ubicación: mensaje dirigido a los votantes con el lugar exacto del punto de votación'
739
+ location_hints_help: 'Sugerencias de ubicación: información adicional. Ejemplo: el piso del edificio donde se encuentra el punto de votación.'
740
+ polling_station_managers_help: 'Administradores de mesa: los oficiales que actuarán como administradores de los puntos de votación. Asegúrate de que los oficiales ya han sido creados en Gestores de mesa y que no están ya asignados a otro punto de votación'
741
+ polling_station_president_help: 'Presidentes de mesa: los oficiales que actuarán como presidentes de los puntos de votación. Asegúrate de que los oficiales ya han sido creados en Gestores de mesa y que no están ya asignados a otro punto de votación'
742
+ select_president: Selecciona un gestor de mesa como presidente del punto de votación
743
+ index:
744
+ title: Puntos de votación
745
+ new:
746
+ create: Crear
747
+ title: Crear punto de votación
748
+ update:
749
+ invalid: Hubo un problema al actualizar este punto de votación
750
+ success: Punto de votación actualizado correctamente
751
+ titles:
752
+ votings: Votaciones
753
+ votings:
754
+ actions:
755
+ confirm_destroy: '¿Estás segura?'
756
+ destroy: Eliminar
757
+ new_voting: Nuevo espacio de votación
758
+ publish: Publicar
759
+ unpublish: Despublicar
760
+ create:
761
+ invalid: Hubo un problema al crear esta votación
762
+ success: Votación creada con éxito
763
+ edit:
764
+ add_election_component: No tienes ninguna elección configurada para esta votación. Por favor añádela en la sección de componentes
765
+ assign_missing_officers: Hay puntos de votación sin presidente y/o administradores. Asígnalos desde la sección de puntos de votación
766
+ update: Actualizar
767
+ form:
768
+ select_a_voting_type: Por favor, selecciona un tipo de votación
769
+ slug_help: 'Los textos cortos de URL se utilizan para generar las URL que apuntan a esta votación. Sólo acepta letras, números y guiones, y debe comenzar con una letra. Ejemplo: %{url}'
770
+ title: Título
771
+ voting_type:
772
+ hybrid: Hibrida
773
+ in_person: Presencial
774
+ online: En línea
775
+ new:
776
+ create: Crear
777
+ title: Nueva votación
778
+ publish:
779
+ success: Votación publicada con éxito
780
+ unpublish:
781
+ success: Votación despublicada correctamente
782
+ update:
783
+ invalid: Hubo un problema al actualizar esta votación
784
+ success: Votación actualizada correctamente
785
+ admin_log:
786
+ voting:
787
+ create: "%{user_name} creó la votación %{resource_name}"
788
+ publish: "%{user_name} publicó la votación %{resource_name}"
789
+ unpublish: "%{user_name} despublicó la votación %{resource_name}"
790
+ content_blocks:
791
+ highlighted_votings:
792
+ name: Votaciones destacadas
793
+ monitoring_committee_members:
794
+ actions:
795
+ confirm_destroy: '¿Estás segura?'
796
+ destroy: Borrar
797
+ new: Nuevo miembro
798
+ title: Acciones
799
+ pages:
800
+ home:
801
+ highlighted_votings:
802
+ active_votings: Votaciones activas
803
+ see_all_votings: Ver todas las votaciones
804
+ votings_button_title: Enlace a la página de Votaciones que las muestra todas
805
+ polling_officer_zone:
806
+ menu:
807
+ polling_officer_zone: Zona del gestor de mesa
808
+ polling_officers:
809
+ show:
810
+ actions:
811
+ count_votes: Contar los votos en las urnas
812
+ identify_person: Identificar y verificar a una persona
813
+ polling_officer_role_description: Has sido asignado para actuar como gestor de mesa (Presidente o Administrador) en algunas de las elecciones celebradas en esta plataforma.
814
+ polling_stations:
815
+ list:
816
+ actions: Acciones
817
+ address: Dirección
818
+ name: Nombre
819
+ role: Tu rol
820
+ voting: Votación
821
+ no_polling_stations: Todavía no estás asignado a ningún punto de votación.
822
+ title: Puntos de votación
823
+ polling_officers:
824
+ actions:
825
+ confirm_destroy: '¿Estás segura?'
826
+ destroy: Borrar
827
+ new: Nuevo
828
+ title: Acciones
829
+ roles:
830
+ manager: Administrador
831
+ president: Presidente
832
+ unassigned: No Asignado
833
+ polling_stations:
834
+ actions:
835
+ confirm_destroy: '¿Estás segura?'
836
+ destroy: Borrar
837
+ edit: Editar
838
+ new: Nuevo
839
+ title: Acciones
840
+ votings:
841
+ count:
842
+ title:
843
+ one: "%{count} votación"
844
+ other: "%{count} votaciones"
845
+ filters:
846
+ active: Activas
847
+ all: Todas
848
+ finished: Finalizadas
849
+ search: Buscar
850
+ state: Estado
851
+ upcoming: Próximas
852
+ filters_small_view:
853
+ close_modal: Cerrar ventana
854
+ filter: Filtrar
855
+ filter_by: Filtrar por
856
+ unfold: Desplegar
857
+ index:
858
+ no_votings: Ninguna votación coincide con tus criterios de búsqueda.
859
+ only_finished: Actualmente no hay votaciones programadas, pero aquí puedes encontrar las votaciones terminadas en la lista.
860
+ title: Votaciones
861
+ orders:
862
+ label: 'Ordenar votaciones por:'
863
+ random: Aleatorio
864
+ recent: Más recientes
865
+ show:
866
+ dates: Fechas
867
+ votings_m:
868
+ badge_name:
869
+ finished: Finalizada
870
+ ongoing: En curso
871
+ upcoming: Próximamente
872
+ footer_button_text:
873
+ participate: Participar
874
+ view: Ver
875
+ vote: Votar
876
+ unspecified: No especificado
877
+ voting_type:
878
+ hybrid: Hibrida
879
+ in_person: Presencial
880
+ online: En línea
881
+ voting_types_label: Tipo de votación
259
882
  layouts:
260
883
  decidim:
261
884
  election_votes_header:
262
885
  exit: Salir
886
+ votings:
887
+ index:
888
+ promoted_votings: Votaciones destacadas
889
+ promoted_voting:
890
+ more_info: Más información
891
+ vote: Votar