decidim-verifications 0.23.1 → 0.24.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/commands/decidim/verifications/authorize_user.rb +30 -1
  4. data/app/commands/decidim/verifications/csv_census/admin/create_census_data.rb +2 -0
  5. data/app/commands/decidim/verifications/id_documents/admin/confirm_user_offline_authorization.rb +2 -2
  6. data/app/controllers/decidim/verifications/id_documents/admin/pending_authorizations_controller.rb +1 -1
  7. data/app/events/decidim/verifications/managed_user_error_event.rb +39 -0
  8. data/app/forms/decidim/verifications/sms/mobile_phone_form.rb +1 -1
  9. data/app/models/decidim/verifications/conflict.rb +8 -0
  10. data/app/models/decidim/verifications/csv_census/data.rb +1 -0
  11. data/app/queries/decidim/verifications/authorizations.rb +3 -2
  12. data/app/queries/decidim/verifications/authorizations_before_date.rb +5 -7
  13. data/app/services/decidim/authorization_handler.rb +1 -1
  14. data/app/views/decidim/verifications/authorizations/index.html.erb +3 -3
  15. data/app/views/dummy_authorization/_form.html.erb +2 -2
  16. data/config/locales/ar.yml +0 -9
  17. data/config/locales/ca.yml +13 -5
  18. data/config/locales/cs.yml +35 -25
  19. data/config/locales/de.yml +15 -7
  20. data/config/locales/el.yml +0 -9
  21. data/config/locales/en.yml +14 -6
  22. data/config/locales/es-MX.yml +14 -6
  23. data/config/locales/es-PY.yml +14 -6
  24. data/config/locales/es.yml +14 -6
  25. data/config/locales/eu.yml +0 -9
  26. data/config/locales/fi-plain.yml +13 -5
  27. data/config/locales/fi.yml +13 -5
  28. data/config/locales/fr-CA.yml +13 -5
  29. data/config/locales/fr.yml +13 -5
  30. data/config/locales/gl.yml +44 -15
  31. data/config/locales/hu.yml +0 -8
  32. data/config/locales/id-ID.yml +0 -9
  33. data/config/locales/is-IS.yml +0 -3
  34. data/config/locales/it.yml +0 -9
  35. data/config/locales/ja.yml +0 -9
  36. data/config/locales/lv.yml +0 -9
  37. data/config/locales/nl.yml +10 -6
  38. data/config/locales/no.yml +0 -9
  39. data/config/locales/pl.yml +17 -7
  40. data/config/locales/pt-BR.yml +0 -9
  41. data/config/locales/pt.yml +0 -9
  42. data/config/locales/ro-RO.yml +0 -9
  43. data/config/locales/ru.yml +0 -3
  44. data/config/locales/si-LK.yml +1 -0
  45. data/config/locales/sk.yml +0 -9
  46. data/config/locales/sv.yml +0 -9
  47. data/config/locales/sw-KE.yml +1 -0
  48. data/config/locales/tr-TR.yml +68 -42
  49. data/config/locales/uk.yml +0 -3
  50. data/config/locales/zh-CN.yml +0 -9
  51. data/db/migrate/20201028161118_create_decidim_verifications_conflicts.rb +15 -0
  52. data/lib/decidim/verifications/default_action_authorizer.rb +5 -5
  53. data/lib/decidim/verifications/test/factories.rb +7 -0
  54. data/lib/decidim/verifications/version.rb +1 -1
  55. metadata +20 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1582995d9571886912086b020cbbc8fc97433344d819893999428d811758d44
4
- data.tar.gz: 1240a2093719ffa1f905263e20b32b00435f2bee6ee4c2aab4bfe93484363c18
3
+ metadata.gz: 69ca2fe7a531443391ec8cac4606997eac88dbdf9ade3d0139d7196c3b694330
4
+ data.tar.gz: 35d4b1a265e2c22c3f78ea78f470ebaf9b4988fe7abefbd6fe8ce55aca7a02db
5
5
  SHA512:
6
- metadata.gz: 46ac1836d4058ef700a1fdc2df12194929c64f05fb9ca0f6e22575ec84257f7da96b7adbd632ac5c2e3497d975ee9020a56a84465bbebfc1416538e1f6935858
7
- data.tar.gz: 257f9eed3bf1ff2786b95281f7a522dd435bd078f7e99fb8df79da5ecf457bb9872dde7bec740c3a745fcbe2c2555802d7a91d27576e9adf3cdbee5b2205a6ad
6
+ metadata.gz: 94989daac8af406e9f48583236ae23675d7f3463f78d49b49f856a65603da7bd29df740fb91d1ca099bd3752247d7ba2a902757472499bbcd3e8ecbc68e031d5
7
+ data.tar.gz: b8a9d52101f5ee4e6b6e9c654f8dc5f0173b2303b3a208fcad22714eb18b4bec270a65beb7b84230a2badefe35e31b93181070dd342669e0b32d144c176523aa
data/README.md CHANGED
@@ -166,7 +166,7 @@ on the context where the authorization is being performed.
166
166
 
167
167
  For example, you can require authorization for supporting proposals in a participatory
168
168
  process, and also restrict it to users with postal codes 12345 and 12346. The
169
- [example authorization handler](https://github.com/decidim/decidim/blob/master/decidim-generators/lib/decidim/generators/app_templates/dummy_authorization_handler.rb)
169
+ [example authorization handler](https://github.com/decidim/decidim/blob/develop/decidim-generators/lib/decidim/generators/app_templates/dummy_authorization_handler.rb)
170
170
  included in this module allows to do that. As an admin user, you should visit
171
171
  the proposals componenent permissions screen, choose the `Example authorization`
172
172
  as the authorization handler name for the `vote` action and enter "12345, 12346"
@@ -204,8 +204,8 @@ Decidim::Verifications.register_workflow(:my_verification) do |workflow|
204
204
  end
205
205
  ```
206
206
 
207
- Check the [example authorization handler](https://github.com/decidim/decidim/blob/master/decidim-generators/lib/decidim/generators/app_templates/dummy_authorization_handler.rb)
208
- and the [DefaultActionAuthorizer class](https://github.com/decidim/decidim/blob/master/decidim-verifications/lib/decidim/verifications/default_action_authorizer.rb)
207
+ Check the [example authorization handler](https://github.com/decidim/decidim/blob/develop/decidim-generators/lib/decidim/generators/app_templates/dummy_authorization_handler.rb)
208
+ and the [DefaultActionAuthorizer class](https://github.com/decidim/decidim/blob/develop/decidim-verifications/lib/decidim/verifications/default_action_authorizer.rb)
209
209
  for additional technical details.
210
210
 
211
211
  ## How Handlers work
@@ -241,8 +241,8 @@ See [Decidim](https://github.com/decidim/decidim).
241
241
 
242
242
  See [Decidim](https://github.com/decidim/decidim).
243
243
 
244
- [authorization handler base class]: https://github.com/decidim/decidim/blob/master/decidim-verifications/app/services/decidim/authorization_handler.rb
245
- [example SMS gateway]: https://github.com/decidim/decidim/blob/master/decidim-verifications/lib/decidim/verifications/sms/example_gateway.rb
244
+ [authorization handler base class]: https://github.com/decidim/decidim/blob/develop/decidim-verifications/app/services/decidim/authorization_handler.rb
245
+ [example SMS gateway]: https://github.com/decidim/decidim/blob/develop/decidim-verifications/lib/decidim/verifications/sms/example_gateway.rb
246
246
 
247
247
  [Decidim Barcelona]: https://github.com/AjuntamentdeBarcelona/decidim-barcelona/blob/master/app/services/census_authorization_handler.rb
248
248
  [Decidim Terrassa]: https://github.com/AjuntamentDeTerrassa/decidim-terrassa/blob/master/app/services/census_authorization_handler.rb
@@ -18,7 +18,12 @@ module Decidim
18
18
  #
19
19
  # Returns nothing.
20
20
  def call
21
- return broadcast(:invalid) unless handler.valid?
21
+ if handler.invalid?
22
+ conflict = create_verification_conflict
23
+ notify_admins(conflict) if conflict.present?
24
+
25
+ return broadcast(:invalid)
26
+ end
22
27
 
23
28
  Authorization.create_or_update_from(handler)
24
29
 
@@ -28,6 +33,30 @@ module Decidim
28
33
  private
29
34
 
30
35
  attr_reader :handler
36
+
37
+ def notify_admins(conflict)
38
+ Decidim::EventsManager.publish(
39
+ event: "decidim.events.verifications.managed_user_error_event",
40
+ event_class: Decidim::Verifications::ManagedUserErrorEvent,
41
+ resource: conflict,
42
+ affected_users: Decidim::User.where(admin: true)
43
+ )
44
+ end
45
+
46
+ def create_verification_conflict
47
+ authorization = Decidim::Authorization.find_by(unique_id: handler.unique_id)
48
+ return if authorization.blank?
49
+
50
+ conflict = Decidim::Verifications::Conflict.find_or_initialize_by(
51
+ current_user: handler.user,
52
+ managed_user: authorization.user,
53
+ unique_id: handler.unique_id
54
+ )
55
+
56
+ conflict.update(times: conflict.times + 1)
57
+
58
+ conflict
59
+ end
31
60
  end
32
61
  end
33
62
  end
@@ -20,7 +20,9 @@ module Decidim
20
20
  def call
21
21
  return broadcast(:invalid) unless @form.file
22
22
 
23
+ # rubocop:disable Rails/SkipsModelValidations
23
24
  CsvDatum.insert_all(@organization, @form.data.values)
25
+ # rubocop:enable Rails/SkipsModelValidations
24
26
  RemoveDuplicatesJob.perform_later(@organization)
25
27
 
26
28
  broadcast(:ok)
@@ -58,8 +58,8 @@ module Decidim
58
58
  .new(organization: form.current_organization, name: "id_documents", granted: false)
59
59
  .query
60
60
  .where("verification_metadata->'rejected' IS NULL")
61
- .where("verification_metadata->>'verification_type' = 'offline'")
62
- .find_by(user: authorization_user)
61
+ .where(user: authorization_user)
62
+ .find { |auth| auth.verification_metadata["verification_type"] == "offline" }
63
63
  end
64
64
 
65
65
  def authorization_user
@@ -22,7 +22,7 @@ module Decidim
22
22
  .new(organization: current_organization, name: "id_documents", granted: false)
23
23
  .query
24
24
  .where("verification_metadata->'rejected' IS NULL")
25
- .where("verification_metadata->>'verification_type' = 'online'")
25
+ .select { |auth| auth.verification_metadata["verification_type"] == "online" }
26
26
  end
27
27
 
28
28
  def has_offline_method?
@@ -0,0 +1,39 @@
1
+ # frozen-string_literal: true
2
+
3
+ module Decidim
4
+ module Verifications
5
+ class ManagedUserErrorEvent < Decidim::Events::SimpleEvent
6
+ delegate :profile_path, :profile_url, :name, to: :updated_user
7
+
8
+ def i18n_scope
9
+ "decidim.events.verifications.verify_with_managed_user"
10
+ end
11
+
12
+ def resource_path
13
+ profile_path
14
+ end
15
+
16
+ def resource_url
17
+ profile_url
18
+ end
19
+
20
+ def resource_title
21
+ updated_user.name
22
+ end
23
+
24
+ def default_i18n_options
25
+ super.merge({ managed_user_path: managed_user.profile_path, managed_user_name: managed_user.name })
26
+ end
27
+
28
+ private
29
+
30
+ def updated_user
31
+ @updated_user ||= Decidim::UserPresenter.new(resource.current_user)
32
+ end
33
+
34
+ def managed_user
35
+ @managed_user ||= Decidim::UserPresenter.new(resource.managed_user)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -26,7 +26,7 @@ module Decidim
26
26
  def mobile_phone_number
27
27
  return unless super
28
28
 
29
- super.gsub(/[^\+0-9]/, "")
29
+ super.gsub(/[^+0-9]/, "")
30
30
  end
31
31
 
32
32
  # The verification metadata to validate in the next step.
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim::Verifications
4
+ class Conflict < ApplicationRecord
5
+ belongs_to :current_user, class_name: "User"
6
+ belongs_to :managed_user, class_name: "User"
7
+ end
8
+ end
@@ -15,6 +15,7 @@ module Decidim
15
15
  # Returns nothing
16
16
  class Data
17
17
  attr_reader :errors, :values
18
+
18
19
  def initialize(file)
19
20
  @file = file
20
21
  @values = []
@@ -26,9 +26,10 @@ module Decidim
26
26
  scope = scope.where(name: name) unless name.nil?
27
27
  scope = scope.where(user: user) unless user.nil?
28
28
 
29
- if granted == true
29
+ case granted
30
+ when true
30
31
  scope = scope.where.not(granted_at: nil)
31
- elsif granted == false
32
+ when false
32
33
  scope = scope.where(granted_at: nil)
33
34
  end
34
35
 
@@ -34,13 +34,11 @@ module Decidim
34
34
 
35
35
  query = query.where("#{Decidim::Authorization.table_name}.created_at < ?", date) unless date.nil?
36
36
 
37
- query = if granted
38
- query.where.not(granted_at: nil)
39
- else
40
- query.where(granted_at: nil)
41
- end
42
-
43
- query
37
+ if granted
38
+ query.where.not(granted_at: nil)
39
+ else
40
+ query.where(granted_at: nil)
41
+ end
44
42
  end
45
43
 
46
44
  private
@@ -48,7 +48,7 @@ module Decidim
48
48
  #
49
49
  # Returns a String.
50
50
  def to_partial_path
51
- handler_name.sub!(/_handler$/, "") + "/form"
51
+ "#{handler_name.sub!(/_handler$/, "")}/form"
52
52
  end
53
53
 
54
54
  # Any data that the developer would like to inject to the `metadata` field
@@ -8,7 +8,7 @@
8
8
  <div class="card card--list">
9
9
  <% @granted_authorizations.each do |authorization| %>
10
10
  <% if authorization.expired? %>
11
- <%= link_to authorization_method(authorization).root_path(url_params), title: t(".expired_verification"), class: "card--list__item" do %>
11
+ <%= link_to authorization_method(authorization).root_path(**url_params), title: t(".expired_verification"), class: "card--list__item" do %>
12
12
  <% render partial: "granted_authorization", locals: { authorization: authorization } %>
13
13
  <% end %>
14
14
  <% elsif authorization.renewable? %>
@@ -29,7 +29,7 @@
29
29
  <% if @pending_authorizations.any? %>
30
30
  <div class="card card--list">
31
31
  <% @pending_authorizations.each do |authorization| %>
32
- <%= link_to authorization_method(authorization).resume_authorization_path(url_params) do %>
32
+ <%= link_to authorization_method(authorization).resume_authorization_path(**url_params) do %>
33
33
  <div class="card--list__item">
34
34
  <div class="card--list__text">
35
35
  <%= icon "reload", class: "card--list__icon", aria_label: t(".pending_verification"), role: "img" %>
@@ -56,7 +56,7 @@
56
56
  <% if unauthorized_methods.any? %>
57
57
  <div class="card card--list">
58
58
  <% unauthorized_methods.each do |unauthorized_method| %>
59
- <%= link_to unauthorized_method.root_path(url_params) do %>
59
+ <%= link_to unauthorized_method.root_path(**url_params) do %>
60
60
  <div class="card--list__item">
61
61
  <div class="card--list__text">
62
62
  <%= icon "lock-unlocked", class: "card--list__icon", aria_label: t(".unauthorized_verification"), role: "img" %>
@@ -1,10 +1,10 @@
1
1
  <% if request["postal_codes"].present?
2
2
  postal_codes = request["postal_codes"].split(",") %>
3
- <p><%= t("extra_explanation.postal_codes", scope: "decidim.verifications.dummy_authorization", postal_codes: postal_codes.join(", "), count: postal_codes.count) %></p>
3
+ <p><%= t("extra_explanation.postal_codes", scope: "decidim.verifications.dummy_authorization", postal_codes: postal_codes.join(", "), count: postal_codes.count, user_postal_code: request["user_postal_code"]) %></p>
4
4
  <% end %>
5
5
 
6
6
  <% if request["scope"] && (scope = Decidim::Scope.find(request["scope"]&.to_i)) %>
7
- <p><%= t("extra_explanation.scope", scope: "decidim.verifications.dummy_authorization", scope_name: translated_attribute(scope.name)) %></p>
7
+ <p><%= t("extra_explanation.scope", scope: "decidim.verifications.dummy_authorization", scope_name: translated_attribute(scope.name), user_scope_name: request["user_scope_name"]) %></p>
8
8
  <% end %>
9
9
 
10
10
  <div class="partial-demo">
@@ -24,14 +24,6 @@ ar:
24
24
  full_address: العنوان الكامل
25
25
  verification_code: شيفرة التأكيد
26
26
  decidim:
27
- admin:
28
- menu:
29
- authorization_workflows: التحقق
30
- admin_log:
31
- organization:
32
- update_id_documents_config: "%{user_name} بتحديث تكوين التحقق من وثائق الهوية"
33
- user:
34
- grant_id_documents_offline_verification: "%{user_name} التحقق من %{resource_name} باستخدام التحقق من مستندات الهوية دون اتصال"
35
27
  authorization_handlers:
36
28
  admin:
37
29
  csv_census:
@@ -103,7 +95,6 @@ ar:
103
95
  title: بيانات التعداد الحالية
104
96
  instructions:
105
97
  body: للقيام بذلك ، يجب عليك إدخال إدارة النظام وإضافة تصاريح csv_census إلى المؤسسة
106
- title: تحتاج إلى تنشيط التعداد CSV لهذه المنظمة
107
98
  new:
108
99
  file: ".csv ملف مع بيانات رسائل البريد الإلكتروني"
109
100
  submit: رفع ملف
@@ -34,16 +34,16 @@ ca:
34
34
  confirm: La revocació d'autoritzacions anteriors a aquesta data no es pot desfer. Segur que vols continuar?
35
35
  confirm_all: La revocació de totes les autoritzacions no es pot desfer. Segur que vols continuar?
36
36
  destroy_nok: S'ha produït un error al revocar les autoritzacions.
37
- destroy_ok: Totes les autoritzacions coincidents s'han revocat correctament!
37
+ destroy_ok: Totes les autoritzacions coincidents s'han revocat correctament.
38
38
  info: Hi ha un total de %{count} participants verificades.
39
39
  no_data: No hi ha participants verificades
40
- title: Revocació de les autoritzacions
41
- authorization_workflows: Verificacions
40
+ title: Revocació d'autoritzacions
41
+ authorization_workflows: Autoritzacions
42
42
  admin_log:
43
43
  organization:
44
- update_id_documents_config: "%{user_name} ha actualitzat la configuració de verificació mitjançant documents d'identitat"
44
+ update_id_documents_config: "%{user_name} ha actualitzat la configuració de Documents d'Identitat"
45
45
  user:
46
- grant_id_documents_offline_verification: "%{user_name} ha verificat %{resource_name} utilitzant la verificació presencial mitjançant documents d'identitat"
46
+ grant_id_documents_offline_verification: "%{user_name} ha verificat %{resource_name} utilitzant una autorització offline de Documents d'identitat"
47
47
  authorization_handlers:
48
48
  admin:
49
49
  csv_census:
@@ -75,6 +75,10 @@ ca:
75
75
  postal_letter:
76
76
  explanation: T'enviarem una carta postal amb un codi que hauràs d'introduir perquè puguem verificar la teva adreça
77
77
  name: Codi per carta postal
78
+ events:
79
+ verifications:
80
+ verify_with_managed_user:
81
+ notification_title: La participant <a href="%{resource_path}">%{resource_title}</a> ha intentat verificar-se amb les dades de la participant gestionada <a href="%{managed_user_path}">%{managed_user_name}</a>
78
82
  verifications:
79
83
  authorizations:
80
84
  authorization_metadata:
@@ -147,6 +151,10 @@ ca:
147
151
  one: La participació està restringida a les persones adscrites al codi postal %{postal_codes}.
148
152
  other: 'La participació està restringida a les persones adscrites a algun dels següents codis postals: %{postal_codes}.'
149
153
  scope: La participació està restringida a les persones verificades en l'àmbit de %{scope_name}.
154
+ user_postal_codes:
155
+ one: La participació està restringida a participants amb el codi postal %{postal_codes}, i el teu codi postal és %{user_postal_code}.
156
+ other: 'La participació està restringida a participants amb qualsevol dels codis postals següents: %{postal_codes}. El teu codi postal és %{user_postal_code}.'
157
+ user_scope: La participació està restringida a participants de l'àmbit %{scope_name}, i el teu àmbit és %{user_scope_name}.
150
158
  id_documents:
151
159
  admin:
152
160
  config:
@@ -7,10 +7,10 @@ cs:
7
7
  offline_explanation: Pokyny pro ověření offline
8
8
  online: Online
9
9
  id_document_information:
10
- document_number: Číslo dokumentu (s písmenem)
10
+ document_number: Číslo dokladu (jen číslice)
11
11
  document_type: Typ dokumentu
12
12
  id_document_upload:
13
- document_number: Číslo dokumentu (s písmenem)
13
+ document_number: Číslo dokladu (jen číslice)
14
14
  document_type: Typ dokumentu
15
15
  user: Uživatel
16
16
  verification_attachment: Naskenovaná kopie dokumentu
@@ -34,16 +34,16 @@ cs:
34
34
  confirm: Zrušení před datem autorizace nelze vrátit zpět. Jste si jisti, že chcete pokračovat?
35
35
  confirm_all: Zrušení všech autorizací nelze vrátit zpět. Jste si jisti, že chcete pokračovat?
36
36
  destroy_nok: Při rušení autorizace došlo k chybě.
37
- destroy_ok: Všechny odpovídající autorizace byly úspěšně zrušeny!
37
+ destroy_ok: Všechny odpovídající autorizace byly úspěšně zrušeny.
38
38
  info: Celkem je %{count} ověřených účastníků.
39
39
  no_data: Žádní ověření účastníci
40
- title: Zrušení ověření
41
- authorization_workflows: Ověření
40
+ title: Zrušení autorizace
41
+ authorization_workflows: Autorizace
42
42
  admin_log:
43
43
  organization:
44
- update_id_documents_config: "%{user_name} aktualizovala konfiguraci ověření dokumentů identit"
44
+ update_id_documents_config: "%{user_name} aktualizoval konfiguraci autorizace dokladů totožnosti"
45
45
  user:
46
- grant_id_documents_offline_verification: "%{user_name} ověřeno %{resource_name} pomocí ověření dokumentů offline"
46
+ grant_id_documents_offline_verification: "%{user_name} ověřil %{resource_name} pomocí offline autorizace dokladů totožnosti"
47
47
  authorization_handlers:
48
48
  admin:
49
49
  csv_census:
@@ -63,8 +63,8 @@ cs:
63
63
  - Označte písmeno jako odesláno.
64
64
  - Jakmile označíte odeslané písmeno, uživatel bude schopen kód zadat a ověřit.
65
65
  csv_census:
66
- explanation: Získejte ověření pomocí sčítání organizace
67
- name: Sčítání organizace
66
+ explanation: Získejte ověření pomocí členů organizace
67
+ name: Členové organizace
68
68
  direct: Přímo
69
69
  help: Pomoc
70
70
  id_documents:
@@ -74,7 +74,11 @@ cs:
74
74
  name: název
75
75
  postal_letter:
76
76
  explanation: Pošleme vám poštovní dopis s kódem, který budete muset zadat, abychom mohli ověřit vaši adresu
77
- name: Kód poštovním dopisem
77
+ name: Kód v listovní zásilce
78
+ events:
79
+ verifications:
80
+ verify_with_managed_user:
81
+ notification_title: Účastník <a href="%{resource_path}">%{resource_title}</a> se pokusil ověřit údaji spravovaného účastníka <a href="%{managed_user_path}">%{managed_user_name}</a>
78
82
  verifications:
79
83
  authorizations:
80
84
  authorization_metadata:
@@ -90,7 +94,7 @@ cs:
90
94
  first_login:
91
95
  actions:
92
96
  another_dummy_authorization_handler: Ověřte proti jinému příkladu pověření pro autorizaci
93
- csv_census: Ověřte sčítání organizace
97
+ csv_census: Ověřte prostřednictvím členů organizace
94
98
  dummy_authorization_handler: Ověřte proti příkladu pověření autorizace
95
99
  dummy_authorization_workflow: Ověřte proti pracovnímu postupu autorizace
96
100
  id_documents: Získejte ověření odesláním dokladu totožnosti
@@ -118,28 +122,28 @@ cs:
118
122
  admin:
119
123
  census:
120
124
  create:
121
- error: Při importu sčítání došlo k chybě.
125
+ error: Při importu členů organizace došlo k chybě.
122
126
  success: Úspěšně importováno %{count} položek (%{errors} chyb)
123
127
  destroy_all:
124
- success: Všechna data sčítání byly smazány
128
+ success: Všechna data členů organizace byly smazány
125
129
  destroy:
126
- confirm: Odstranit veškeré sčítání nelze vrátit zpět. Jste si jistý, že chcete pokračovat?
127
- title: Smazat všechna data sčítání
130
+ confirm: Odstranění veškerých kontaktů členů organizace nelze vrátit zpět. Jste si jistý, že chcete pokračovat?
131
+ title: Smazat všechna data členů organizace
128
132
  index:
129
133
  data: Celkem bylo načteno celkem %{count} záznamů. Poslední nahraje datum %{due_date}
130
- empty: Neexistují údaje o sčítání. Pomocí níže uvedeného formuláře jej importujte pomocí souboru CSV.
131
- title: Aktuální údaje o sčítání
134
+ empty: Neexistují data o členech organizace. Pomocí níže uvedeného formuláře je importujte souborem CSV.
135
+ title: Aktuální údaje o členech organizace
132
136
  instructions:
133
- body: Chcete-li to provést, musíte vstoupit do správy systému a přidat oprávnění csv_census organizaci
134
- title: Pro tuto organizaci musíte aktivovat csv sčítání
137
+ body: Chcete-li to provést, musíte vstoupit do správy systému a přidat oprávnění prostřednictvím souboru csv s e-maily členů organizace
138
+ title: Musíte aktivovat CSV s kontakty členů organizace
135
139
  new:
136
140
  file: ".csv soubor s daty e-mailů"
137
- info: 'Must být souborem ve formátu CSV s pouze jedním sloupcem s e-mailovou adresou:'
141
+ info: 'Must být soubor ve formátu CSV s pouze jedním sloupcem s e-mailovou adresou:'
138
142
  submit: Nahrát soubor
139
- title: Nahrajte nové sčítání
143
+ title: Nahrajte nové členy organizace
140
144
  authorizations:
141
145
  new:
142
- error: Váš účet nebyl ověřen, nebo nejste v sčítání organizace.
146
+ error: Váš účet nebyl ověřen, nebo nejste členem organizace.
143
147
  success: Účet byl úspěšně ověřen.
144
148
  dummy_authorization:
145
149
  extra_explanation:
@@ -149,6 +153,12 @@ cs:
149
153
  many: 'Účast je omezena na uživatele s některým z následujících poštovních směrovacích čísel: %{postal_codes}.'
150
154
  other: 'Účast je omezena na uživatele s některým z následujících poštovních směrovacích čísel: %{postal_codes}.'
151
155
  scope: Účast je omezena na účastníky s rozsahem %{scope_name}.
156
+ user_postal_codes:
157
+ one: Účast je omezena na účastníky s poštovním kódem %{postal_codes} a vaše poštovní směrovací číslo je %{user_postal_code}.
158
+ few: 'Účast je omezena na účastníky s poštovním kódem %{postal_codes} a vaše poštovní směrovací číslo je %{user_postal_code}.'
159
+ many: 'Účast je omezena na účastníky s poštovními kódy %{postal_codes} a vaše poštovní směrovací číslo je %{user_postal_code}.'
160
+ other: 'Účast je omezena na účastníky s kterýmkoli z následujících poštovních kódů: %{postal_codes}. Vaše poštovní směrovací číslo je %{user_postal_code}.'
161
+ user_scope: Účast je omezena na účastníky s rozsahem %{scope_name} a váš rozsah je %{user_scope_name}.
152
162
  id_documents:
153
163
  admin:
154
164
  config:
@@ -168,7 +178,7 @@ cs:
168
178
  verify: Ověřte
169
179
  offline_confirmations:
170
180
  create:
171
- error: Ověření neodpovídá. Zkuste to znovu nebo řekněte uživateli, že ho změní
181
+ error: Ověření neodpovídá vloženým údajům. Zkuste to znovu, nebo řekněte uživateli, si je změní
172
182
  success: Uživatel úspěšně ověřen
173
183
  new:
174
184
  cancel: zrušení
@@ -176,7 +186,7 @@ cs:
176
186
  verify: Ověřte
177
187
  pending_authorizations:
178
188
  index:
179
- config: Config
189
+ config: Konfigurace
180
190
  offline_verification: Ověření offline
181
191
  title: Čekající ověření online
182
192
  verification_number: 'Ověření #%{n}'
@@ -207,7 +217,7 @@ cs:
207
217
  error: Při načítání dokumentu došlo k problému
208
218
  success: Dokument byl úspěšně obnoven
209
219
  dni: DNI
210
- nie: NIE
220
+ nie: Občanský průkaz
211
221
  passport: Cestovní pas
212
222
  postal_letter:
213
223
  admin: