decidim-meetings 0.27.4 → 0.27.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +13 -0
  3. data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +36 -0
  4. data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +1 -1
  5. data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +10 -2
  6. data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +2 -2
  7. data/app/cells/decidim/meetings/join_meeting_button/show.erb +1 -15
  8. data/app/cells/decidim/meetings/meeting_s_cell.rb +1 -1
  9. data/app/controllers/decidim/meetings/widgets_controller.rb +11 -1
  10. data/app/helpers/decidim/meetings/directory/application_helper.rb +1 -1
  11. data/app/packs/src/decidim/meetings/poll.component.js +27 -0
  12. data/app/permissions/decidim/meetings/permissions.rb +10 -0
  13. data/app/services/decidim/meetings/calendar/meeting_to_event.rb +6 -1
  14. data/app/views/decidim/meetings/admin/agenda/_form.html.erb +1 -1
  15. data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -1
  16. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
  17. data/app/views/decidim/meetings/meetings/index.html.erb +1 -1
  18. data/app/views/decidim/meetings/meetings/show.html.erb +4 -1
  19. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +13 -9
  20. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +8 -8
  21. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +2 -2
  22. data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +3 -0
  23. data/config/locales/ar.yml +0 -5
  24. data/config/locales/bg.yml +105 -0
  25. data/config/locales/ca.yml +11 -9
  26. data/config/locales/cs.yml +5 -3
  27. data/config/locales/de.yml +14 -9
  28. data/config/locales/el.yml +1 -6
  29. data/config/locales/en.yml +3 -1
  30. data/config/locales/es-MX.yml +12 -7
  31. data/config/locales/es-PY.yml +9 -4
  32. data/config/locales/es.yml +15 -13
  33. data/config/locales/eu.yml +105 -100
  34. data/config/locales/fi-plain.yml +9 -4
  35. data/config/locales/fi.yml +26 -21
  36. data/config/locales/fr-CA.yml +9 -4
  37. data/config/locales/fr.yml +6 -4
  38. data/config/locales/ga-IE.yml +0 -2
  39. data/config/locales/gl.yml +1 -7
  40. data/config/locales/he-IL.yml +1 -0
  41. data/config/locales/hu.yml +5 -4
  42. data/config/locales/id-ID.yml +1 -7
  43. data/config/locales/is-IS.yml +4 -3
  44. data/config/locales/it.yml +5 -8
  45. data/config/locales/ja.yml +10 -5
  46. data/config/locales/lb.yml +6 -10
  47. data/config/locales/lt.yml +25 -8
  48. data/config/locales/lv.yml +1 -7
  49. data/config/locales/nl.yml +0 -5
  50. data/config/locales/no.yml +0 -2
  51. data/config/locales/pl.yml +72 -5
  52. data/config/locales/pt-BR.yml +119 -7
  53. data/config/locales/pt.yml +1 -4
  54. data/config/locales/ro-RO.yml +2 -5
  55. data/config/locales/ru.yml +2 -8
  56. data/config/locales/sk.yml +2 -8
  57. data/config/locales/sl.yml +3 -0
  58. data/config/locales/sq-AL.yml +1 -0
  59. data/config/locales/sv.yml +5 -5
  60. data/config/locales/th-TH.yml +1 -0
  61. data/config/locales/tr-TR.yml +1 -3
  62. data/config/locales/uk.yml +2 -8
  63. data/config/locales/zh-CN.yml +0 -2
  64. data/config/locales/zh-TW.yml +0 -5
  65. data/decidim-meetings.gemspec +36 -0
  66. data/lib/decidim/meetings/component.rb +1 -1
  67. data/lib/decidim/meetings/engine.rb +4 -3
  68. data/lib/decidim/meetings/meeting_serializer.rb +2 -2
  69. data/lib/decidim/meetings/test/factories.rb +68 -30
  70. data/lib/decidim/meetings/user_answers_serializer.rb +1 -1
  71. data/lib/decidim/meetings/version.rb +1 -1
  72. metadata +25 -20
  73. data/config/environment.rb +0 -0
@@ -251,10 +251,8 @@ pt:
251
251
  select_user: Selecione o participante
252
252
  index:
253
253
  filter:
254
- accepted: Aceite
255
254
  all: Todos
256
- rejected: Rejeitados
257
- sent: Enviados
255
+ sent: Enviado
258
256
  filter_by: Filtrar por
259
257
  invite_attendee: Convidar participante
260
258
  invites: Convites
@@ -476,7 +474,6 @@ pt:
476
474
  contributions: Contagem de contribuições
477
475
  date: Data
478
476
  edit_meeting: Editar reunião
479
- going: Inscreveu-se para esta reunião
480
477
  leave: Cancele o seu registo
481
478
  leave_confirmation: Tem a certeza que quer cancelar o seu registo para esta reunião?
482
479
  link_available_soon: Ligação disponível em breve
@@ -226,7 +226,7 @@ ro:
226
226
  few: 'Întâlnirea nu poate fi eliminată deoarece are %{count} propuneri asociate:'
227
227
  other: 'Întâlnirea nu poate fi eliminată deoarece are %{count} propuneri asociate acestuia:'
228
228
  manage_poll: Gestionare sondaj
229
- new: Noua întâlnire
229
+ new: Întâlnire nouă
230
230
  preview: Previzualizare
231
231
  registrations: Înregistrări
232
232
  title: Acțiuni
@@ -284,9 +284,7 @@ ro:
284
284
  select_user: Selecteză un participant
285
285
  index:
286
286
  filter:
287
- accepted: Acceptat
288
287
  all: Toate
289
- rejected: Respins
290
288
  sent: Trimis
291
289
  filter_by: Filtrare după
292
290
  invite_attendee: Invită participantul
@@ -541,7 +539,6 @@ ro:
541
539
  contributions: Număr de contribuții
542
540
  date: Data
543
541
  edit_meeting: Editați ședința
544
- going: Te-ai înregistrat pentru această întâlnire
545
542
  leave: Anulează înregistrarea
546
543
  leave_confirmation: Sigur dorești să anulezi înregistrarea la această întâlnire?
547
544
  link_available_soon: Link disponibil în curând
@@ -658,7 +655,7 @@ ro:
658
655
  see_all: Afișează toate întâlnirile (%{count})
659
656
  upcoming_meetings: Întâlniri viitoare
660
657
  upcoming_meeting_for_card:
661
- upcoming_meeting: Întâlnire viitoare
658
+ upcoming_meeting: Şedinţa viitoare
662
659
  resource_links:
663
660
  meetings_through_proposals:
664
661
  meeting_result: 'Rezultate asociate:'
@@ -148,7 +148,6 @@ ru:
148
148
  confirm_destroy: Вы действительно хотите удалить эту встречу?
149
149
  destroy: Удалить
150
150
  edit: Редактировать
151
- new: Новая встреча
152
151
  preview: Предпросмотр
153
152
  registrations: Регистрации
154
153
  title: Действия
@@ -204,10 +203,7 @@ ru:
204
203
  select_user: Выберите участника
205
204
  index:
206
205
  filter:
207
- accepted: Принятые
208
- all: Все
209
- rejected: Отклоненные
210
- sent: Отправленные
206
+ sent: Отправлено
211
207
  filter_by: 'Отобрать по признаку:'
212
208
  invite_attendee: Пригласить участника
213
209
  invites: Приглашения
@@ -280,9 +276,6 @@ ru:
280
276
  value_types:
281
277
  organizer_presenter:
282
278
  not_found: 'Организатор не найден в базе данных (ID: %{id})'
283
- application_helper:
284
- filter_scope_values:
285
- all: Все
286
279
  calendar_modal:
287
280
  calendar_url: Ссылка на календарь
288
281
  close_window: Закрыть окно
@@ -328,6 +321,7 @@ ru:
328
321
  attendees: Количество участников
329
322
  close_meeting: Закрыть встречу
330
323
  contributions: Количество внесенных предложений
324
+ date: Дата
331
325
  meeting_minutes: Протокол встречи
332
326
  no_slots_available: Не осталось мест
333
327
  organizations: Участвующие организации
@@ -150,7 +150,6 @@ sk:
150
150
  confirm_destroy: Naozaj chcete túto schôdzku vymazať?
151
151
  destroy: Odstrániť
152
152
  edit: Upraviť
153
- new: Nové stretnutie
154
153
  preview: Náhľad
155
154
  registrations: Registrácia
156
155
  title: Akcia
@@ -206,9 +205,6 @@ sk:
206
205
  select_user: Vyberte používateľa
207
206
  index:
208
207
  filter:
209
- accepted: Prijal
210
- all: Všetko
211
- rejected: Odmietnuté
212
208
  sent: Odoslaná
213
209
  filter_by: Filtrovať podľa
214
210
  invite_attendee: Pozvať účastníka
@@ -291,9 +287,6 @@ sk:
291
287
  value_types:
292
288
  organizer_presenter:
293
289
  not_found: 'Organizátor nebol nájdený v databáze (ID:%{id})'
294
- application_helper:
295
- filter_scope_values:
296
- all: Všetko
297
290
  calendar_modal:
298
291
  calendar_url: URL kalendára
299
292
  close_window: Zatvorte okno
@@ -343,6 +336,7 @@ sk:
343
336
  back: Späť na zoznam
344
337
  close_meeting: Zatvorte schôdzku
345
338
  contributions: Počet príspevkov
339
+ date: dátum
346
340
  meeting_minutes: Zápisnica z porady
347
341
  no_slots_available: Žiadne sloty nie sú k dispozícii
348
342
  organizations: Účastnícke organizácie
@@ -406,7 +400,7 @@ sk:
406
400
  see_all: Zobraziť všetky (%{count})
407
401
  upcoming_meetings: Nadchádzajúce schôdzky
408
402
  upcoming_meeting_for_card:
409
- upcoming_meeting: Nadchádzajúce schôdzka
403
+ upcoming_meeting: Nadchádzajúce stretnutie
410
404
  resource_links:
411
405
  meetings_through_proposals:
412
406
  meeting_result: 'Súvisiace výsledky:'
@@ -14,6 +14,9 @@ sl:
14
14
  meetings:
15
15
  index:
16
16
  title: Sestanki
17
+ models:
18
+ meeting:
19
+ name: Sestanek
17
20
  directory:
18
21
  meetings:
19
22
  index:
@@ -0,0 +1 @@
1
+ sq:
@@ -32,6 +32,7 @@ sv:
32
32
  registration_terms: Registreringsvillkor
33
33
  registration_url: URL för anmälan
34
34
  registrations_enabled: Registreringar aktiverade
35
+ start_time: Starttid
35
36
  title: Titel
36
37
  transparent: Transparent
37
38
  type_of_meeting: Typ
@@ -39,6 +40,7 @@ sv:
39
40
  title: Titel
40
41
  visible: Synlig
41
42
  meeting_agenda_items:
43
+ description: Beskrivning
42
44
  duration: Varaktighet
43
45
  title: Titel
44
46
  meeting_registration_invite:
@@ -272,9 +274,7 @@ sv:
272
274
  select_user: Välj deltagare
273
275
  index:
274
276
  filter:
275
- accepted: Accepterad
276
- all: Allt
277
- rejected: Avvisad
277
+ all: Alla
278
278
  sent: Skickat
279
279
  filter_by: Filtrera efter
280
280
  invite_attendee: Bjud in deltagare
@@ -387,7 +387,7 @@ sv:
387
387
  filter_meeting_space_values:
388
388
  all: Alla
389
389
  filter_scope_values:
390
- all: Allt
390
+ all: Alla
391
391
  calendar_modal:
392
392
  calendar_url: Kalender-URL
393
393
  close_window: Stäng fönster
@@ -470,6 +470,7 @@ sv:
470
470
  all: Alla
471
471
  official: Officiell
472
472
  participants: Deltagare
473
+ user_groups: Grupper
473
474
  scope: Omfång
474
475
  search: Sök
475
476
  type: Typ
@@ -521,7 +522,6 @@ sv:
521
522
  contributions: Antal bidrag
522
523
  date: Datum
523
524
  edit_meeting: Redigera möte
524
- going: Du har anmält dig för detta möte
525
525
  leave: Avbryt din registrering
526
526
  leave_confirmation: Är du säker på att du vill avboka från detta möte?
527
527
  link_available_soon: Länk snart tillgänglig
@@ -0,0 +1 @@
1
+ th:
@@ -220,10 +220,8 @@ tr:
220
220
  select_user: Katılımcı seç
221
221
  index:
222
222
  filter:
223
- accepted: Kabul edilmiş
224
223
  all: Tümü
225
- rejected: Reddedildi
226
- sent: Gönderildi
224
+ sent: Gönderilen
227
225
  filter_by: Tarafından filtre
228
226
  invite_attendee: Katılımcı davet et
229
227
  invites: Davetler
@@ -129,7 +129,6 @@ uk:
129
129
  confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
130
130
  destroy: Видалити
131
131
  edit: Редагувати
132
- new: Додати зустріч
133
132
  preview: Попередній перегляд
134
133
  registrations: Реєстрації
135
134
  title: Дії
@@ -184,10 +183,7 @@ uk:
184
183
  select_user: Оберіть учасника
185
184
  index:
186
185
  filter:
187
- accepted: Прийняті
188
- all: Усі
189
- rejected: Відхилені
190
- sent: Надіслані
186
+ sent: Надіслано
191
187
  filter_by: 'Відібрати за ознакою:'
192
188
  invite_attendee: Запросити учасника
193
189
  invites: Запрошення
@@ -258,9 +254,6 @@ uk:
258
254
  value_types:
259
255
  organizer_presenter:
260
256
  not_found: 'Цього організатора не знайдено в базі даних (ID: %{id})'
261
- application_helper:
262
- filter_scope_values:
263
- all: Усі
264
257
  content_blocks:
265
258
  upcoming_meetings:
266
259
  upcoming_meetings: Прийдешні зустрічі
@@ -296,6 +289,7 @@ uk:
296
289
  attendees: Кількість учасників
297
290
  close_meeting: Закрити зустріч
298
291
  contributions: Кількість внесених пропозицій
292
+ date: Дата
299
293
  meeting_minutes: Протокол зустрічі
300
294
  no_slots_available: Не залишилось місць
301
295
  organizations: Організації, що приймають участь
@@ -208,9 +208,7 @@ zh-CN:
208
208
  select_user: 选择参与者
209
209
  index:
210
210
  filter:
211
- accepted: 已接受
212
211
  all: 所有的
213
- rejected: 已拒绝
214
212
  sent: 已发送
215
213
  filter_by: 筛选方式
216
214
  invite_attendee: 邀请参与者
@@ -276,9 +276,7 @@ zh-TW:
276
276
  select_user: 選擇參與者
277
277
  index:
278
278
  filter:
279
- accepted: 已接受
280
279
  all: 全部
281
- rejected: 已拒絕
282
280
  sent: 傳送
283
281
  filter_by: 篩選條件
284
282
  invite_attendee: 邀請的與會者
@@ -314,7 +312,6 @@ zh-TW:
314
312
  select_a_meeting_type: 請選擇一種會議類型。
315
313
  select_a_registration_type: 請選擇一種註冊類型
316
314
  select_an_iframe_access_level: 請選擇一個 iframe 存取級別
317
- show_embedded_iframe_help: '只有以下域名的部分服務允許將會議或直播活動嵌入: %{domains}'
318
315
  index:
319
316
  title: 會議
320
317
  new:
@@ -510,7 +507,6 @@ zh-TW:
510
507
  select_a_meeting_type: 請選擇一種會議類型。
511
508
  select_a_registration_type: 請選擇一種註冊類型
512
509
  select_an_iframe_access_level: 請選擇一個 iframe 存取級別
513
- show_embedded_iframe_help: '只有以下域名的部分服務允許將會議或直播活動嵌入: %{domains}'
514
510
  index:
515
511
  click_here: 查看所有會議
516
512
  new_meeting: 新會議
@@ -536,7 +532,6 @@ zh-TW:
536
532
  contributions: 貢獻次數
537
533
  date: 日期
538
534
  edit_meeting: 編輯會議
539
- going: 您已經註冊參加此會議
540
535
  leave: 取消您的註冊
541
536
  leave_confirmation: 您確定要取消此次會議的註冊嗎?
542
537
  link_available_soon: 連結即將推出
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require "decidim/meetings/version"
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.version = Decidim::Meetings.version
11
+ s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
12
+ s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
13
+ s.license = "AGPL-3.0"
14
+ s.homepage = "https://github.com/decidim/decidim"
15
+ s.required_ruby_version = "~> 3.0.0"
16
+
17
+ s.name = "decidim-meetings"
18
+ s.summary = "Decidim meetings module"
19
+ s.description = "A meetings component for decidim's participatory spaces."
20
+
21
+ s.files = Dir.chdir(__dir__) do
22
+ `git ls-files -z`.split("\x0").select do |f|
23
+ (File.expand_path(f) == __FILE__) ||
24
+ f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
25
+ end
26
+ end
27
+
28
+ s.add_dependency "decidim-core", Decidim::Meetings.version
29
+ s.add_dependency "decidim-forms", Decidim::Meetings.version
30
+ s.add_dependency "icalendar", "~> 2.5"
31
+
32
+ s.add_development_dependency "decidim-admin", Decidim::Meetings.version
33
+ s.add_development_dependency "decidim-assemblies", Decidim::Meetings.version
34
+ s.add_development_dependency "decidim-dev", Decidim::Meetings.version
35
+ s.add_development_dependency "decidim-participatory_processes", Decidim::Meetings.version
36
+ end
@@ -83,7 +83,7 @@ Decidim.register_component(:meetings) do |component|
83
83
  settings.attribute :announcement, type: :text, translated: true, editor: true
84
84
  settings.attribute :default_registration_terms, type: :text, translated: true, editor: true
85
85
  settings.attribute :comments_enabled, type: :boolean, default: true
86
- settings.attribute :comments_max_length, type: :integer, required: false
86
+ settings.attribute :comments_max_length, type: :integer, required: true
87
87
  settings.attribute :registration_code_enabled, type: :boolean, default: true
88
88
  settings.attribute :resources_permissions_enabled, type: :boolean, default: true
89
89
  settings.attribute :enable_pads_creation, type: :boolean, default: false
@@ -57,7 +57,7 @@ module Decidim
57
57
  # meeting for the given participatory space.
58
58
  Decidim.view_hooks.register(:upcoming_meeting_for_card, priority: Decidim::ViewHooks::LOW_PRIORITY) do |view_context|
59
59
  published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
60
- upcoming_meeting = Decidim::Meetings::Meeting.where(component: published_components).published.upcoming.order(:start_time, :end_time).first
60
+ upcoming_meeting = Decidim::Meetings::Meeting.where(component: published_components).not_hidden.except_withdrawn.published.upcoming.order(:start_time, :end_time).first
61
61
 
62
62
  next unless upcoming_meeting
63
63
 
@@ -71,8 +71,9 @@ module Decidim
71
71
 
72
72
  Decidim.view_hooks.register(:conference_venues, priority: Decidim::ViewHooks::HIGH_PRIORITY) do |view_context|
73
73
  published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
74
- meetings = Decidim::Meetings::Meeting.where(component: published_components).group_by(&:address)
75
- meetings_geocoded = Decidim::Meetings::Meeting.where(component: published_components).geocoded
74
+ meetings = Decidim::Meetings::Meeting.visible.not_hidden.published.where(component: published_components).group_by(&:address)
75
+ meetings_geocoded = Decidim::Meetings::Meeting.visible.not_hidden.published.where(component: published_components).geocoded
76
+
76
77
  next unless meetings.any?
77
78
 
78
79
  view_context.render(
@@ -32,8 +32,8 @@ module Decidim
32
32
  component: { id: component.id },
33
33
  title: meeting.title,
34
34
  description: meeting.description,
35
- start_time: meeting.start_time.to_s(:db),
36
- end_time: meeting.end_time.to_s(:db),
35
+ start_time: meeting.start_time,
36
+ end_time: meeting.end_time,
37
37
  attendees: meeting.attendees_count.to_i,
38
38
  contributions: meeting.contributions_count.to_i,
39
39
  organizations: meeting.attending_organizations,
@@ -6,9 +6,12 @@ require "decidim/participatory_processes/test/factories"
6
6
 
7
7
  FactoryBot.define do
8
8
  factory :meeting_component, parent: :component do
9
- name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :meetings).i18n_name }
9
+ transient do
10
+ skip_injection { false }
11
+ end
12
+ name { generate_component_name(participatory_space.organization.available_locales, :meetings, skip_injection: skip_injection) }
10
13
  manifest_name { :meetings }
11
- participatory_space { create(:participatory_process, :with_steps, organization: organization) }
14
+ participatory_space { create(:participatory_process, :with_steps, organization: organization, skip_injection: skip_injection) }
12
15
 
13
16
  trait :with_creation_enabled do
14
17
  settings do
@@ -20,10 +23,14 @@ FactoryBot.define do
20
23
  end
21
24
 
22
25
  factory :meeting, class: "Decidim::Meetings::Meeting" do
23
- title { generate_localized_title }
24
- description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
25
- location { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
26
- location_hints { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
26
+ transient do
27
+ skip_injection { false }
28
+ end
29
+
30
+ title { generate_localized_title(:meeting_title, skip_injection: skip_injection) }
31
+ description { generate_localized_description(:meeting_description, skip_injection: skip_injection) }
32
+ location { generate_localized_description(:meeting_location, skip_injection: skip_injection) }
33
+ location_hints { generate_localized_description(:meeting_location_hints, skip_injection: skip_injection) }
27
34
  address { Faker::Lorem.sentence(word_count: 3) }
28
35
  latitude { Faker::Address.latitude }
29
36
  longitude { Faker::Address.longitude }
@@ -33,10 +40,10 @@ FactoryBot.define do
33
40
  transparent { true }
34
41
  questionnaire { build(:questionnaire) }
35
42
  registration_form_enabled { true }
36
- registration_terms { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
43
+ registration_terms { generate_localized_description(:meeting_registration_terms, skip_injection: skip_injection) }
37
44
  registration_type { :on_this_platform }
38
45
  type_of_meeting { :in_person }
39
- component { build(:component, manifest_name: "meetings") }
46
+ component { build(:meeting_component) }
40
47
  iframe_access_level { :all }
41
48
  iframe_embed_type { :none }
42
49
 
@@ -71,7 +78,7 @@ FactoryBot.define do
71
78
  end
72
79
 
73
80
  trait :not_official do
74
- author { create(:user, organization: component.organization) if component }
81
+ author { create(:user, organization: component.organization, skip_injection: skip_injection) if component }
75
82
  end
76
83
 
77
84
  trait :with_services do
@@ -82,7 +89,7 @@ FactoryBot.define do
82
89
  end
83
90
 
84
91
  after(:build) do |meeting, evaluator|
85
- meeting.services = evaluator.services || build_list(:service, 2, meeting: meeting)
92
+ meeting.services = evaluator.services || build_list(:service, 2, meeting: meeting, skip_injection: evaluator.skip_injection)
86
93
  end
87
94
  end
88
95
 
@@ -90,15 +97,15 @@ FactoryBot.define do
90
97
 
91
98
  trait :user_group_author do
92
99
  author do
93
- create(:user, organization: component.organization) if component
100
+ create(:user, organization: component.organization, skip_injection: skip_injection) if component
94
101
  end
95
102
  user_group do
96
- create(:user_group, :verified, organization: component.organization, users: [author]) if component
103
+ create(:user_group, :verified, organization: component.organization, users: [author], skip_injection: skip_injection) if component
97
104
  end
98
105
  end
99
106
 
100
107
  trait :closed do
101
- closing_report { generate_localized_title }
108
+ closing_report { generate_localized_title(:meeting_closing_report, skip_injection: skip_injection) }
102
109
  attendees_count { rand(50) }
103
110
  contributions_count { rand(50) }
104
111
  attending_organizations { Array.new(3) { Faker::TvShows::GameOfThrones.house }.join(", ") }
@@ -117,7 +124,7 @@ FactoryBot.define do
117
124
  registrations_enabled { true }
118
125
  available_slots { 10 }
119
126
  reserved_slots { 4 }
120
- registration_terms { generate_localized_title }
127
+ registration_terms { generate_localized_title(:meeting_registration_terms, skip_injection: skip_injection) }
121
128
  end
122
129
 
123
130
  trait :past do
@@ -170,41 +177,53 @@ FactoryBot.define do
170
177
  end
171
178
 
172
179
  factory :registration, class: "Decidim::Meetings::Registration" do
180
+ transient do
181
+ skip_injection { false }
182
+ end
173
183
  meeting
174
184
  user
175
185
  end
176
186
 
177
187
  factory :agenda, class: "Decidim::Meetings::Agenda" do
188
+ transient do
189
+ skip_injection { false }
190
+ end
178
191
  meeting
179
- title { generate_localized_title }
192
+ title { generate_localized_title(:meeting_agenda_title, skip_injection: skip_injection) }
180
193
  visible { true }
181
194
 
182
195
  trait :with_agenda_items do
183
- after(:create) do |agenda, _evaluator|
184
- create_list(:agenda_item, 2, :with_children, agenda: agenda)
196
+ after(:create) do |agenda, evaluator|
197
+ create_list(:agenda_item, 2, :with_children, agenda: agenda, skip_injection: evaluator.skip_injection)
185
198
  end
186
199
  end
187
200
  end
188
201
 
189
202
  factory :agenda_item, class: "Decidim::Meetings::AgendaItem" do
203
+ transient do
204
+ skip_injection { false }
205
+ end
190
206
  agenda
191
- title { generate_localized_title }
192
- description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
207
+ title { generate_localized_title(:meeting_agenda_item_title, skip_injection: skip_injection) }
208
+ description { generate_localized_description(:meeting_agenda_item_description, skip_injection: skip_injection) }
193
209
  duration { 15 }
194
210
  position { 0 }
195
211
 
196
212
  trait :with_parent do
197
- parent { create(:agenda_item, agenda: agenda) }
213
+ parent { create(:agenda_item, agenda: agenda, skip_injection: skip_injection) }
198
214
  end
199
215
 
200
216
  trait :with_children do
201
217
  after(:create) do |agenda_item, evaluator|
202
- create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda)
218
+ create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda, skip_injection: evaluator.skip_injection)
203
219
  end
204
220
  end
205
221
  end
206
222
 
207
223
  factory :invite, class: "Decidim::Meetings::Invite" do
224
+ transient do
225
+ skip_injection { false }
226
+ end
208
227
  meeting
209
228
  user
210
229
  sent_at { 1.day.ago }
@@ -221,31 +240,41 @@ FactoryBot.define do
221
240
  end
222
241
 
223
242
  factory :service, class: "Decidim::Meetings::Service" do
243
+ transient do
244
+ skip_injection { false }
245
+ end
224
246
  meeting
225
- title { generate_localized_title }
226
- description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
247
+ title { generate_localized_title(:meeting_service_title, skip_injection: skip_injection) }
248
+ description { generate_localized_description(:meeting_service_description, skip_injection: skip_injection) }
227
249
  end
228
250
 
229
251
  factory :poll, class: "Decidim::Meetings::Poll" do
252
+ transient do
253
+ skip_injection { false }
254
+ end
230
255
  meeting
231
256
  end
232
257
 
233
258
  factory :meetings_poll_questionnaire, class: "Decidim::Meetings::Questionnaire" do
234
- questionnaire_for { build(:poll) }
259
+ transient do
260
+ skip_injection { false }
261
+ end
262
+ questionnaire_for { build(:poll, skip_injection: skip_injection) }
235
263
  end
236
264
 
237
265
  factory :meetings_poll_question, class: "Decidim::Meetings::Question" do
238
266
  transient do
267
+ skip_injection { false }
239
268
  options { [] }
240
269
  end
241
270
 
242
- body { generate_localized_title }
271
+ body { generate_localized_title(:meeting_poll_question_body, skip_injection: skip_injection) }
243
272
  position { 0 }
244
273
  status { 0 }
245
274
  question_type { Decidim::Meetings::Question::QUESTION_TYPES.first }
246
275
  questionnaire factory: :meetings_poll_questionnaire
247
276
  answer_options do
248
- Array.new(3).collect { build(:meetings_poll_answer_option, question: nil) }
277
+ Array.new(3).collect { build(:meetings_poll_answer_option, question: nil, skip_injection: skip_injection) }
249
278
  end
250
279
 
251
280
  trait :unpublished do
@@ -262,18 +291,27 @@ FactoryBot.define do
262
291
  end
263
292
 
264
293
  factory :meetings_poll_answer, class: "Decidim::Meetings::Answer" do
294
+ transient do
295
+ skip_injection { false }
296
+ end
265
297
  questionnaire factory: :meetings_poll_questionnaire
266
- question { create(:meetings_poll_question, questionnaire: questionnaire) }
267
- user { create(:user, organization: questionnaire.questionnaire_for.organization) }
298
+ question { create(:meetings_poll_question, questionnaire: questionnaire, skip_injection: skip_injection) }
299
+ user { create(:user, organization: questionnaire.questionnaire_for.organization, skip_injection: skip_injection) }
268
300
  end
269
301
 
270
302
  factory :meetings_poll_answer_option, class: "Decidim::Meetings::AnswerOption" do
271
- question { create(:meetings_poll_question) }
303
+ transient do
304
+ skip_injection { false }
305
+ end
306
+ question { create(:meetings_poll_question, skip_injection: skip_injection) }
272
307
  body { generate_localized_title }
273
308
  end
274
309
 
275
310
  factory :meetings_poll_answer_choice, class: "Decidim::Meetings::AnswerChoice" do
311
+ transient do
312
+ skip_injection { false }
313
+ end
276
314
  answer factory: :meetings_poll_answer
277
- answer_option { create(:meetings_poll_answer_option, question: answer.question) }
315
+ answer_option { create(:meetings_poll_answer_option, question: answer.question, skip_injection: skip_injection) }
278
316
  end
279
317
  end
@@ -17,7 +17,7 @@ module Decidim
17
17
  @answers.each_with_index.inject({}) do |serialized, (answer, idx)|
18
18
  serialized.update(
19
19
  answer_translated_attribute_name(:id) => [answer.id, answer.user.id].join("_"),
20
- answer_translated_attribute_name(:created_at) => answer.created_at.to_s(:db),
20
+ answer_translated_attribute_name(:created_at) => answer.created_at,
21
21
  answer_translated_attribute_name(:user_status) => answer_translated_attribute_name(answer.decidim_user_id.present? ? "registered" : "unregistered"),
22
22
  "#{idx + 1}. #{translated_attribute(answer.question.body)}" => normalize_body(answer)
23
23
  )
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-meetings version.
5
5
  module Meetings
6
6
  def self.version
7
- "0.27.4"
7
+ "0.27.6"
8
8
  end
9
9
  end
10
10
  end