decidim-elections 0.23.5 → 0.24.2

Sign up to get free protection for your applications and to get access to all the features.
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 +650 -20
  246. data/config/locales/cs.yml +644 -6
  247. data/config/locales/de.yml +636 -6
  248. data/config/locales/el.yml +0 -2
  249. data/config/locales/en.yml +636 -6
  250. data/config/locales/es-MX.yml +636 -6
  251. data/config/locales/es-PY.yml +636 -6
  252. data/config/locales/es.yml +646 -16
  253. data/config/locales/fi-plain.yml +636 -6
  254. data/config/locales/fi.yml +636 -6
  255. data/config/locales/fr-CA.yml +423 -6
  256. data/config/locales/fr.yml +423 -6
  257. data/config/locales/gl.yml +85 -7
  258. data/config/locales/it.yml +94 -6
  259. data/config/locales/ja.yml +8 -6
  260. data/config/locales/lv.yml +0 -2
  261. data/config/locales/nl.yml +503 -6
  262. data/config/locales/no.yml +2 -5
  263. data/config/locales/pl.yml +644 -6
  264. data/config/locales/pt.yml +0 -6
  265. data/config/locales/ro-RO.yml +176 -6
  266. data/config/locales/sv.yml +257 -6
  267. data/config/locales/tr-TR.yml +111 -6
  268. data/config/locales/zh-CN.yml +0 -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 @@ fr-CA:
16
16
  max_selections: Nombre maximum de sélections
17
17
  min_selections: Aucune des options ci-dessus
18
18
  title: Titre
19
+ voting:
20
+ end_time: Le vote se termine
21
+ start_time: Le vote commence le
19
22
  errors:
20
23
  models:
21
24
  answer:
@@ -26,6 +29,12 @@ fr-CA:
26
29
  attributes:
27
30
  attachment:
28
31
  needs_to_be_reattached: Doit être téléchargé de nouveau
32
+ trustee:
33
+ attributes:
34
+ name:
35
+ cant_be_changed: ne peut pas être modifié
36
+ public_key:
37
+ cant_be_changed: ne peut être modifiée
29
38
  activerecord:
30
39
  models:
31
40
  decidim/elections/answer:
@@ -37,6 +46,9 @@ fr-CA:
37
46
  decidim/elections/question:
38
47
  one: Question
39
48
  other: Questions
49
+ decidim/votings/voting:
50
+ one: Vote
51
+ other: Votes
40
52
  decidim:
41
53
  components:
42
54
  elections:
@@ -53,9 +65,11 @@ fr-CA:
53
65
  confirm_destroy: Êtes-vous certain ?
54
66
  destroy: Détruire
55
67
  edit: Modifier
56
- edit_answers: Modifier les réponses
57
- edit_questions: Modifier les questions
68
+ feedback: Feedbacks des votants
58
69
  import: Importer des propositions dans les réponses
70
+ manage_answers: Gérer les réponses
71
+ manage_questions: Gérer les questions
72
+ manage_steps: Gérer les étapes
59
73
  new: Nouveau %{name}
60
74
  preview: Aperçu
61
75
  publish: Publier
@@ -78,6 +92,14 @@ fr-CA:
78
92
  new:
79
93
  create: Créer une réponse
80
94
  title: Nouvelle réponse
95
+ select:
96
+ disable: Désélectionner la réponse
97
+ enable: Marquer la réponse comme sélectionnée
98
+ invalid: Un problème est survenu lors de la sélection de cette réponse
99
+ success: Réponse sélectionnée avec succès
100
+ unselect:
101
+ invalid: Une erreur est survenue lors de la désélection de cette réponse
102
+ success: Réponse désélectionnée avec succès
81
103
  update:
82
104
  invalid: Un problème est survenu lors de la mise à jour de cette réponse
83
105
  success: Réponse mise à jour avec succès
@@ -104,6 +126,9 @@ fr-CA:
104
126
  update:
105
127
  invalid: Il y a eu un problème lors de la mise à jour de cette élection
106
128
  success: Élection mise à jour avec succès
129
+ exports:
130
+ elections: Élections
131
+ feedback_form_answers: Feedbacks des répondants
107
132
  models:
108
133
  answer:
109
134
  name: Réponse
@@ -111,6 +136,8 @@ fr-CA:
111
136
  name: Élection
112
137
  question:
113
138
  name: Question
139
+ trustee:
140
+ name: Garant
114
141
  proposals_imports:
115
142
  create:
116
143
  invalid: Un problème est survenu lors de l'importation des propositions en réponses
@@ -119,6 +146,7 @@ fr-CA:
119
146
  create: Importer des propositions dans les réponses
120
147
  no_components: Il n'y a pas d'autres composantes de proposition dans cet espace participatif pour importer les propositions dans des réponses.
121
148
  select_component: Veuillez sélectionner un composant
149
+ title: Importer des propositions
122
150
  questions:
123
151
  create:
124
152
  invalid: Il y a eu un problème lors de la création de cette question
@@ -137,6 +165,93 @@ fr-CA:
137
165
  update:
138
166
  invalid: Une erreur s'est produite lors de la mise à jour de cette question
139
167
  success: Question mise à jour avec succès
168
+ steps:
169
+ create_election:
170
+ errors:
171
+ max_selections: Les questions n'ont pas de <strong>valeur correcte pour le nombre de réponses</strong>
172
+ minimum_answers: Les questions doivent avoir <strong>au moins deux réponses</strong>.
173
+ minimum_questions: L'élection <strong>doit avoir au moins une question</strong>.
174
+ published: L'élection n'est <strong>pas publiée</strong>.
175
+ time_before: L'heure de début se situe<strong>moins de 3 heures</strong> avant le commencement de l'élection.
176
+ trustees_number: L'espace participatif <strong>doit avoir au moins %{number} garants avec une clé publique</strong>.
177
+ invalid: Une erreur est survenue lors de la création de l'élection
178
+ no_trustees: Il n'y a pas de garants configurés pour cet espace participatif
179
+ not_used_trustee: "(non utilisé)"
180
+ public_key:
181
+ 'false': n'a pas de <strong>clé publique</strong>
182
+ 'true': a une <strong>clé publique</strong>
183
+ requirements:
184
+ max_selections: Toutes les questions ont une valeur correcte pour <strong>le maximum de réponses</strong>.
185
+ minimum_answers: Chaque question a <strong>au moins 2 réponses</strong>.
186
+ minimum_questions: L'élection a <strong>au moins 1 question</strong>.
187
+ published: L'élection est <strong>publiée</strong>.
188
+ time_before: La configuration est réalisée <strong>au moins %{hours} heures</strong> avant le début de l'élection.
189
+ trustees_number: L'espace participatif <strong>doit avoir au moins %{number} garants avec une clé publique</strong>.
190
+ submit: Configurer l'élection
191
+ success: Élection envoyée avec succès au Tableau de Bord
192
+ title: Configurer l'élection
193
+ trustees: Garants de l'élection
194
+ created:
195
+ invalid: Il y a eu un problème lors du démarrage de la cérémonie des clés
196
+ submit: Démarrer la cérémonie des clés
197
+ title: Élection créée
198
+ trustees: Garants
199
+ key_ceremony:
200
+ title: Cérémonie des clés
201
+ trustees: Garants
202
+ key_ceremony_ended:
203
+ errors:
204
+ time_before: L'élection est prête à commencer. Vous devez attendre %{hours} heures avant le lancement (%{start_time}) pour démarrer la période de vote.
205
+ invalid: Il y a eu un problème au démarrage de la période de vote
206
+ requirements:
207
+ time_before: L'élection va bientôt commencer. Vous pouvez démarrer la période de vote manuellement, ou elle sera démarrée automatiquement avant l'heure de départ, à %{start_time}.
208
+ submit: Commencer la période de vote
209
+ title: Prêt à commencer
210
+ processing: Traitement en cours...
211
+ results_published:
212
+ title: Résultats publiés
213
+ tally:
214
+ trustees: Garants
215
+ tally_ended:
216
+ submit: Publier les résultats
217
+ title: Résultats calculés
218
+ vote:
219
+ errors:
220
+ time_after: L'élection est toujours en cours. Vous devez attendre (%{end_time}) pour terminer la période de vote.
221
+ invalid: Un problème est survenu lors de la clôture de la période de vote
222
+ requirements:
223
+ time_after: L'élection est terminée. Vous pouvez terminer la période de vote manuellement, ou elle se terminera automatiquement dans quelques minutes.
224
+ submit: Fin de la période de vote
225
+ success: La demande de fin de la période de vote a été envoyée avec succès au Panneau d'Affichage
226
+ title: Période de vote
227
+ vote_ended:
228
+ title: Période de vote terminée
229
+ vote_stats:
230
+ no_vote_statistics_yet: Pas encore de statistiques sur le vote
231
+ title: Statistiques du vote
232
+ voters: Votants
233
+ votes: Votes
234
+ trustees_participatory_spaces:
235
+ actions:
236
+ disable: Désactiver
237
+ enable: Autoriser
238
+ create:
239
+ exists: Ce garant existe déjà dans cet espace participatif
240
+ invalid: Une erreur s'est produite lors de la création du garant
241
+ success: Le garant a bien été créé
242
+ delete:
243
+ invalid: Il y a eu un problème lors de la suppression de ce garant
244
+ success: Le garant a bien été supprimé
245
+ form:
246
+ select_user: Sélectionner un utilisateur
247
+ index:
248
+ title: Garants
249
+ new:
250
+ create: Créer un garant
251
+ title: Nouveau garant
252
+ update:
253
+ invalid: Une erreur s'est produite lors de la mise à jour du garant %{trustee}
254
+ success: Le garant %{trustee} a été mis à jour avec succès
140
255
  admin_log:
141
256
  election:
142
257
  publish: "%{user_name} a publié l'élection %{resource_name}"
@@ -172,14 +287,41 @@ fr-CA:
172
287
  filter: Filtrer
173
288
  filter_by: Filtrer par
174
289
  unfold: Voir plus
290
+ preview:
291
+ available_answers: Réponses disponibles
292
+ description: Voici les questions que vous trouverez dans le processus de vote
293
+ title: Questions de l'élection
294
+ results:
295
+ description: Ce sont les résultats du vote, pour chaque question
296
+ selected: Sélectionné
297
+ title: Résultats de l'élection
298
+ votes:
299
+ one: "%{count} vote"
300
+ other: "%{count} votes"
301
+ zero: "%{count} votes"
175
302
  show:
176
- back: Toutes les élections
303
+ action-button:
304
+ change-vote: Changer votre vote
305
+ vote: Commencer à voter
306
+ vote-again: Voter à nouveau
307
+ back: Élections disponibles
308
+ callout:
309
+ already-voted: Vous avez déjà voté pour cette élection. Vous pouvez modifier votre vote ou le vérifier.
310
+ vote-rejected: Il n'a pas été possible de vérifier votre vote. Veuillez recommencer.
177
311
  preview: Aperçu
178
- vote: Voter
312
+ verify:
313
+ already-voted: Déjà voté?
314
+ verify-here: Vérifiez votre vote ici.
315
+ will-verify: Vous pourrez vérifier votre vote une fois l'élection commencée.
179
316
  voting_period_status:
180
317
  finished: Le vote a commencé le %{start_time} et s'est terminé le %{end_time}
181
- ongoing: Le vote se termine le %{end_time}
318
+ ongoing: 'Vote actif jusqu''au : %{end_time}'
182
319
  upcoming: Le vote commence le %{start_time}
320
+ feedback:
321
+ answer:
322
+ invalid: Un problème est survenu lors de l'envoi de votre feedback.
323
+ spam_detected: Une erreur s'est produite lors de la complétion du formulaire. Peut-être êtes-vous allés trop vite, pouvez-vous réessayer?
324
+ success: Votre avis a bien été envoyé.
183
325
  models:
184
326
  answer:
185
327
  fields:
@@ -195,10 +337,105 @@ fr-CA:
195
337
  answers: Réponses
196
338
  max_selections: Nombre maximum de sélections
197
339
  title: Titre
340
+ trustees_participatory_space:
341
+ fields:
342
+ considered: autorisé
343
+ email: Email
344
+ inactive: inactif
345
+ name: Nom
346
+ notification: Notification envoyée à
347
+ public_key: Clé publique
348
+ status: Statut
198
349
  orders:
199
350
  label: Trier les élections par
200
351
  older: Les plus anciens
201
352
  recent: Les plus récents
353
+ trustee_zone:
354
+ elections:
355
+ backup_modal:
356
+ description: Cette élection est en cours de création dans le Tableau d'Affichage. Il est très important que chaque Mandataire qui y participe fasse une sauvegarde de ces clés et les stocke dans un endroit sûr. Ensuite, le processus se poursuit.
357
+ download_election_keys: Télécharger les clés
358
+ download_icon: Icône indiquant une action de téléchargement
359
+ title: Sauvegarder les clés d'élection pour %{election}
360
+ key_ceremony_steps:
361
+ back: Retour
362
+ description: Cette élection est en cours de création dans le Tableau d'Affichage. Pour compléter ce processus, votre participation en tant que Mandataire est nécessaire.
363
+ keys:
364
+ create_election: Génération des clés
365
+ key_ceremony:
366
+ joint_election_key: Génération de la clé conjointe
367
+ step_1: Publication des clés
368
+ list:
369
+ status: Statut
370
+ task: Tâche
371
+ process_warning: Une fois le processus démarré, vous ne devriez pas quitter cette page avant la fin du processus. Cela prendra plusieurs minutes, car tous les Mandataires doivent être connectés pour le compléter.
372
+ start: Démarrer
373
+ start_icon: Icône indiquant un bouton de démarrage pour démarrer la génération des clés d'élection
374
+ status:
375
+ completed: Terminé
376
+ pending: En attente
377
+ processing: Traitement en cours
378
+ title: Créer des clés d'élection pour %{election}
379
+ restore_modal:
380
+ description: Le Tableau d'Affichage a des informations pour vous en temps que Mandataire de cette élection. Pour continuer le processus, commencer par télécharger le fichier de sauvegarde généré pendant la session précédente.
381
+ title: Restaurer les clés d'élection pour %{election}
382
+ upload_election_keys: Télécharger les clés d'élection
383
+ upload_icon: Icône indiquant une action de téléchargement
384
+ tally_steps:
385
+ back: Retour
386
+ description: Les résultats de cette élection sont calculés dans le Bulletin Board et pour compléter ce processus, votre participation en tant que garant est nécessaire.
387
+ list:
388
+ status: Statut
389
+ task: Tâche
390
+ process_warning: Une fois le processus démarré, vous ne devriez pas quitter cette page avant la fin du processus. Cela prendra plusieurs minutes, car tous les garants doivent être connectés pour le compléter.
391
+ start: Démarrer
392
+ start_icon: Icône indiquant un bouton de démarrage pour démarrer la génération des clés d'élection
393
+ status:
394
+ completed: Terminé
395
+ pending: En attente
396
+ processing: Traitement en cours
397
+ update:
398
+ error: Le statut de l'élection n'a pas été mis à jour.
399
+ success: 'Le statut de l''élection est : %{status}'
400
+ menu:
401
+ trustee_zone: Espace de garant
402
+ trustees:
403
+ show:
404
+ elections:
405
+ list:
406
+ action_required:
407
+ 'false': 'Non'
408
+ name: Action requise ?
409
+ 'true': Effectuer l'action
410
+ bb_status: Statut
411
+ election: Élection
412
+ voting_period: Période de vote
413
+ no_elections: Il n'y a pas d'élections dans lesquelles vous êtes garant.
414
+ title: Élections
415
+ identification_keys:
416
+ cancel: Annuler
417
+ generate: Générer les clés d'identification
418
+ generate_error: Une erreur s'est produite lors de la génération des clés d'identification.
419
+ generate_legend: Vous devez générer une paire de clés d'identification pour participer aux élections en tant que garant.
420
+ generate_legend_1: Après avoir cliqué sur le bouton, le téléchargement du fichier contenant les clés d'identification générées va commencer.
421
+ generate_legend_2: Copiez le fichier téléchargé sur un périphérique USB fiable
422
+ generate_legend_3: Assurez-vous que votre ordinateur ne possède pas de copie du fichier (par exemple, vérifiez les dossiers Téléchargements et Bureau).
423
+ generate_legend_4: Faites une autre copie du fichier sur un appareil externe et conservez-le dans un endroit très sûr.
424
+ submit: Envoyer
425
+ submit_legend: Après avoir suivi toutes les étapes expliquées ci-dessus, complétez le processus d'envoi de la clé d'identification publique au serveur Decidim.
426
+ submit_title: Soumettre la clé d'identification publique
427
+ title: Clés d'identification du garant
428
+ upload: Téléchargez vos clés d'identification
429
+ upload_error:
430
+ invalid_format: Le fichier téléchargé ne contient pas de clé d'identification.
431
+ invalid_key: Impossible de charger les clés d'identification à partir du fichier téléchargé.
432
+ invalid_public_key: Les clés d'identification dans le fichier téléchargé ne correspondent pas à la clé d'identification publique stockée par Decidim.
433
+ upload_legend: Decidim a vos clés d'identification publiques, mais votre navigateur ne l'a toujours pas. Vous devez importer le fichier avec vos clés d'identification sur votre ordinateur à partir de la sauvegarde que vous avez créée après leur génération.
434
+ not_supported_browser_description: On dirait que vous utilisez un navigateur Web qui ne peut pas être utilisé pour agir en tant que garant. Assurez-vous d'utiliser la version la plus récente de votre navigateur, ou essayez d'utiliser l'un des navigateurs les plus populaires pour accomplir vos tâches de garant.
435
+ not_supported_browser_title: Mettre à niveau le navigateur pour agir en tant que garant
436
+ trustee_role_description: Vous avez été assigné à agir en tant que garant lors de certaines des élections mises en place sur cette plateforme.
437
+ update:
438
+ success: Votre clé d'identification publique a bien été stockée.
202
439
  votes:
203
440
  confirm:
204
441
  answer: Répondre
@@ -216,10 +453,13 @@ fr-CA:
216
453
  header: Vote confirmé
217
454
  lead: Votre vote a déjà été exprimé!
218
455
  text: 'Vous pouvez vérifier que votre vote a bien été ajouté à la zone des urnes avec l''identifiant suivant : <strong class="evote__poll-id">%{e_vote_poll_id}</strong>'
219
- verify_text: Pour vérifier, copiez l'identifiant et collez-le sur la <a href="evote-verify">page de vérification de vote</a>
220
456
  encrypting:
221
457
  header: Encodage du vote...
222
458
  text: Votre vote est en cours de cryptage pour vous assurer que vous pouvez le diffuser de manière anonyme.
459
+ failed:
460
+ header: Le vote a échoué
461
+ lead: Votre vote n'a pas été exprimé!
462
+ text: Une erreur est survenue, veuillez réessayer.
223
463
  header:
224
464
  confirm: Confirmer votre vote
225
465
  confirmed: Vote confirmé
@@ -236,6 +476,17 @@ fr-CA:
236
476
  preview_alert: Ceci est un aperçu de la cabine de vote.
237
477
  question_steps: Question %{current_step} sur %{total_steps}
238
478
  selections: "%{selected} sur %{max_selections}<br> sélections"
479
+ processing:
480
+ header: Traitement du vote...
481
+ text: Votre vote a été reçu et est en cours de traitement. Veuillez patienter.
482
+ update:
483
+ error: Un problème est survenu lors de la mise à jour du statut de vote
484
+ success: Statut du vote mis à jour avec succès
485
+ verify:
486
+ content:
487
+ heading: Vérifiez votre vote
488
+ error:
489
+ header: Vote introuvable !
239
490
  voting_step:
240
491
  back: Précédent
241
492
  continue: Suivant
@@ -249,6 +500,25 @@ fr-CA:
249
500
  email_outro: Vous avez reçu cette notification parce que vous suivez %{participatory_space_title}. Vous pouvez arrêter de recevoir des notifications en suivant le lien précédent.
250
501
  email_subject: L'élection %{resource_title} est maintenant active pour %{participatory_space_title}.
251
502
  notification_title: L'élection de <a href="%{resource_path}">%{resource_title}</a> est maintenant active pour %{participatory_space_title}.
503
+ trustees:
504
+ new_election:
505
+ email_intro: Vous avez été ajouté en tant que garant pour l'élection %{resource_title}.
506
+ email_outro: Vous avez reçu cette notification parce que vous avez été ajouté comme garant de l'élection "%{resource_title}".
507
+ email_subject: Vous avez été ajouté en tant que garant pour l'élection %{resource_title}.
508
+ notification_title: Vous êtes garant de l'élection <a href="%{resource_path}">%{resource_title}</a>.
509
+ new_trustee:
510
+ email_intro: Un administrateur vous a ajouté en tant que garant de %{resource_name}. Vous devriez créer votre clé publique <a href='%{trustee_zone_url}'>dans votre espace de garant</a>
511
+ email_outro: Vous avez reçu cette notification parce que vous avez été ajouté comme garant de l'élection "%{resource_name}".
512
+ email_subject: Vous avez été ajouté en tant que garant pour l'élection %{resource_name}.
513
+ notification_title: Vous êtes garant de <a href="%{participatory_space_url}">%{resource_name}</a>.
514
+ help:
515
+ participatory_spaces:
516
+ votings:
517
+ contextual: "<p>Une <strong>élection</strong> est un espace qui vous permet de poser une question claire à toutes les personnes formant une organisation, d'appeler à participer à l'élection, à susciter et organiser le débat pour ou contre une réponse. Lorsque la date de l'élection arrive, vous pouvez voter et publier les résultats des votes.</p> <p>Exemples : Les élections peuvent porter sur presque n'importe quel aspect qui affecte une organisation : changer le nom, le logo en offrant plusieurs alternatives, décider ou non de d'intégrer une organisation plus grande, valider ou rejeter un nouveau plan stratégique ou le résultat d'un groupe de travail, choisir la limitation à 1,2 ou 3 mandatures.</p>\n"
518
+ page: "<p>Une <strong>élection</strong> est un espace qui vous permet de poser une question claire à toutes les personnes formant une organisation, d'appeler à participer à l'élection, à susciter et organiser le débat pour ou contre une réponse. Lorsque la date de l'élection arrive, vous pouvez voter et publier les résultats des votes.</p> <p>Exemples : Les élections peuvent porter sur presque n'importe quel aspect qui affecte une organisation : changer le nom, le logo en offrant plusieurs alternatives, décider ou non de d'intégrer une organisation plus grande, valider ou rejeter un nouveau plan stratégique ou le résultat d'un groupe de travail, choisir la limitation à 1,2 ou 3 mandatures.</p>\n"
519
+ title: Que sont les élections ?
520
+ menu:
521
+ votings: Élections
252
522
  pages:
253
523
  home:
254
524
  statistics:
@@ -256,7 +526,154 @@ fr-CA:
256
526
  participatory_processes:
257
527
  statistics:
258
528
  elections_count: Élections
529
+ votings:
530
+ admin:
531
+ content_blocks:
532
+ highlighted_votings:
533
+ max_results: Nombre maximum d'éléments à afficher
534
+ index:
535
+ not_published: Non publié
536
+ published: Publié
537
+ menu:
538
+ votings: Élections
539
+ votings_submenu:
540
+ attachment_collections: Dossiers
541
+ attachment_files: Fichiers
542
+ attachments: Pièces jointes
543
+ info: Information
544
+ polling_stations: Bureaux de vote
545
+ models:
546
+ polling_station:
547
+ fields:
548
+ address: Adresse
549
+ title: Titre
550
+ name: Bureau de vote
551
+ voting:
552
+ fields:
553
+ created_at: Créée le
554
+ promoted: Mise en avant
555
+ published: Publié
556
+ title: Titre
557
+ polling_stations:
558
+ create:
559
+ invalid: Une erreur est survenue lors de la création de ce bureau de vote
560
+ success: Le bureau de vote a été créée avec succès
561
+ destroy:
562
+ invalid: Une erreur est survenue lors de la suppression de ce bureau de vote
563
+ success: Le bureau de vote a bien été supprimé
564
+ edit:
565
+ title: Modifier le bureau de vote
566
+ update: Mettre à jour le bureau de vote
567
+ form:
568
+ address_help: 'Adresse: utilisée par l''outil de géocadage pour trouver l''emplacement'
569
+ location_help: 'Lieu : message adressé aux électeurs informant du lieu exact du bureau de vote'
570
+ location_hints_help: 'Indices de localisation : informations complémentaires. Par exemple : l''étage du bâtiment où se trouve le bureau de vote.'
571
+ index:
572
+ title: Bureaux de vote
573
+ new:
574
+ create: Créer
575
+ title: Créer un bureau de vote
576
+ update:
577
+ invalid: Une erreur est survenue lors de la mise à jour de ce bureau de vote
578
+ success: Le bureau de vote a bien été mis à jour
579
+ titles:
580
+ votings: Élections
581
+ votings:
582
+ actions:
583
+ confirm_destroy: Êtes-vous sûr(e) ?
584
+ destroy: Supprimer
585
+ new_voting: Nouvel espace de vote
586
+ publish: Publier
587
+ unpublish: Dépublier
588
+ create:
589
+ invalid: Une erreur s'est produite lors de la création de cette élection
590
+ success: Élection créée avec succès
591
+ edit:
592
+ assign_missing_officers: Il reste des bureaux de votes sans président et/ou accesseurs. Veuillez lier ces derniers à partir de la section Bureaux de votes
593
+ update: Mettre à jour
594
+ form:
595
+ slug_help: 'Les identifiants d''URL sont utilisés pour générer les URL qui renvoient vers cette élection. Ils ne contiennent que des lettres, des chiffres et des tirets et doivent commencer par une lettre. Exemple : %{url}'
596
+ title: Titre
597
+ new:
598
+ create: Créer
599
+ title: Nouvelle élection
600
+ publish:
601
+ success: Élection publiée avec succès
602
+ unpublish:
603
+ success: Élection publiée avec succès
604
+ update:
605
+ invalid: Une erreur s'est produite lors de la mise à jour de cette élection
606
+ success: Élection mise à jour avec succès
607
+ admin_log:
608
+ voting:
609
+ create: "%{user_name} a créé l'élection %{resource_name}"
610
+ publish: "%{user_name} a publié l'élection %{resource_name}"
611
+ unpublish: "%{user_name} a annulé la publication de l'élection %{resource_name}"
612
+ content_blocks:
613
+ highlighted_votings:
614
+ name: Élections remarquables
615
+ pages:
616
+ home:
617
+ highlighted_votings:
618
+ active_votings: Votations en cours
619
+ see_all_votings: Voir toutes les votations
620
+ votings_button_title: Lien vers la page Votations où toutes les votations sont affichées
621
+ polling_stations:
622
+ actions:
623
+ confirm_destroy: Êtes-vous sûr(e) ?
624
+ destroy: Supprimer
625
+ edit: Modifier
626
+ new: Nouveau
627
+ title: Actions
628
+ votings:
629
+ count:
630
+ title:
631
+ one: "%{count} élection"
632
+ other: "%{count} élections"
633
+ filters:
634
+ active: Actifs
635
+ all: Tous
636
+ finished: Terminées
637
+ search: Rechercher
638
+ state: Statut
639
+ upcoming: À venir
640
+ filters_small_view:
641
+ close_modal: Fermer la fenêtre de dialogue
642
+ filter: Filtrer
643
+ filter_by: Filtrer par
644
+ unfold: Dérouler
645
+ index:
646
+ no_votings: Aucun vote ne correspond à votre recherche.
647
+ only_finished: À l'heure actuelle, il n'y a pas de votes planifiés, mais vous trouverez ici une liste de tous les votes passées.
648
+ title: Votations
649
+ orders:
650
+ label: 'Trier les votations par:'
651
+ random: Aléatoire
652
+ recent: Les plus récentes
653
+ show:
654
+ dates: Dates
655
+ votings_m:
656
+ badge_name:
657
+ finished: Passées
658
+ ongoing: En cours
659
+ upcoming: À venir
660
+ footer_button_text:
661
+ participate: Participer
662
+ view: Voir
663
+ vote: Voter
664
+ unspecified: Non précisées
665
+ voting_type:
666
+ hybrid: Hybride
667
+ in_person: En présentiel
668
+ online: En ligne
669
+ voting_types_label: Type de vote
259
670
  layouts:
260
671
  decidim:
261
672
  election_votes_header:
262
673
  exit: Quitter
674
+ votings:
675
+ index:
676
+ promoted_votings: Votations remarquables
677
+ promoted_voting:
678
+ more_info: Plus d'informations
679
+ vote: Voter