decidim-proposals 0.29.3 → 0.30.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +13 -1
  3. data/app/cells/decidim/proposals/highlighted_proposals_for_component_cell.rb +1 -1
  4. data/app/cells/decidim/proposals/participatory_text_proposal_cell.rb +1 -1
  5. data/app/cells/decidim/proposals/proposal_g/show.erb +13 -0
  6. data/app/cells/decidim/proposals/proposal_g_cell.rb +13 -0
  7. data/app/cells/decidim/proposals/proposal_history_cell.rb +107 -0
  8. data/app/cells/decidim/proposals/proposal_l/show.erb +37 -0
  9. data/app/cells/decidim/proposals/proposal_l_cell.rb +9 -0
  10. data/app/cells/decidim/proposals/proposal_metadata_cell.rb +2 -2
  11. data/app/cells/decidim/proposals/proposal_vote/show.erb +75 -0
  12. data/app/cells/decidim/proposals/proposal_vote_cell.rb +43 -0
  13. data/app/commands/decidim/proposals/accept_coauthorship.rb +62 -0
  14. data/app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb +14 -0
  15. data/app/commands/decidim/proposals/admin/create_proposal.rb +6 -14
  16. data/app/commands/decidim/proposals/admin/create_proposal_note.rb +20 -11
  17. data/app/commands/decidim/proposals/admin/import_proposals.rb +60 -7
  18. data/app/commands/decidim/proposals/admin/merge_proposals.rb +2 -2
  19. data/app/commands/decidim/proposals/admin/proposal_notes_methods.rb +48 -0
  20. data/app/commands/decidim/proposals/admin/reply_proposal_note.rb +92 -0
  21. data/app/commands/decidim/proposals/admin/split_proposals.rb +2 -2
  22. data/app/commands/decidim/proposals/admin/update_proposal.rb +10 -16
  23. data/app/commands/decidim/proposals/admin/update_proposal_taxonomies.rb +34 -0
  24. data/app/commands/decidim/proposals/cancel_coauthorship.rb +32 -0
  25. data/app/commands/decidim/proposals/create_collaborative_draft.rb +1 -2
  26. data/app/commands/decidim/proposals/create_proposal.rb +1 -2
  27. data/app/commands/decidim/proposals/invite_coauthor.rb +45 -0
  28. data/app/commands/decidim/proposals/publish_collaborative_draft.rb +1 -2
  29. data/app/commands/decidim/proposals/reject_coauthorship.rb +54 -0
  30. data/app/commands/decidim/proposals/update_collaborative_draft.rb +1 -2
  31. data/app/commands/decidim/proposals/update_proposal.rb +1 -2
  32. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +5 -1
  33. data/app/controllers/concerns/decidim/proposals/admin/needs_interpolations.rb +40 -0
  34. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +46 -5
  35. data/app/controllers/decidim/proposals/admin/proposal_notes_controller.rb +18 -0
  36. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +41 -85
  37. data/app/controllers/decidim/proposals/admin/proposals_imports_controller.rb +2 -2
  38. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +2 -4
  39. data/app/controllers/decidim/proposals/invite_coauthors_controller.rb +87 -0
  40. data/app/controllers/decidim/proposals/proposals_controller.rb +7 -32
  41. data/app/controllers/decidim/proposals/versions_controller.rb +1 -1
  42. data/app/events/decidim/proposals/accepted_coauthorship_event.rb +8 -0
  43. data/app/events/decidim/proposals/admin/proposal_assigned_to_valuator_event.rb +27 -0
  44. data/app/events/decidim/proposals/admin/proposal_note_created_event.rb +5 -0
  45. data/app/events/decidim/proposals/coauthor_accepted_invite_event.rb +49 -0
  46. data/app/events/decidim/proposals/coauthor_invited_event.rb +45 -0
  47. data/app/events/decidim/proposals/coauthor_rejected_invite_event.rb +8 -0
  48. data/app/events/decidim/proposals/rejected_coauthorship_event.rb +8 -0
  49. data/app/events/decidim/proposals/update_proposal_taxonomies_event.rb +9 -0
  50. data/app/forms/decidim/proposals/admin/proposal_answer_form.rb +16 -0
  51. data/app/forms/decidim/proposals/admin/proposal_base_form.rb +3 -31
  52. data/app/forms/decidim/proposals/admin/proposal_form.rb +11 -6
  53. data/app/forms/decidim/proposals/admin/proposals_import_form.rb +0 -5
  54. data/app/forms/decidim/proposals/collaborative_draft_form.rb +0 -8
  55. data/app/forms/decidim/proposals/proposal_form.rb +5 -32
  56. data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +25 -0
  57. data/app/helpers/decidim/proposals/admin/proposals_helper.rb +0 -1
  58. data/app/helpers/decidim/proposals/application_helper.rb +23 -15
  59. data/app/helpers/decidim/proposals/collaborative_draft_helper.rb +7 -7
  60. data/app/helpers/decidim/proposals/map_helper.rb +0 -18
  61. data/app/helpers/decidim/proposals/proposal_votes_helper.rb +15 -2
  62. data/app/helpers/decidim/proposals/proposals_helper.rb +3 -1
  63. data/app/jobs/decidim/proposals/admin/proposal_answer_job.rb +20 -0
  64. data/app/models/decidim/proposals/collaborative_draft.rb +13 -3
  65. data/app/models/decidim/proposals/proposal.rb +71 -5
  66. data/app/models/decidim/proposals/proposal_note.rb +11 -0
  67. data/app/models/decidim/proposals/proposal_state.rb +1 -1
  68. data/app/packs/entrypoints/decidim_proposals.js +1 -0
  69. data/app/packs/entrypoints/decidim_proposals_geocoding.js +2 -0
  70. data/app/packs/src/decidim/proposals/admin/proposals.js +16 -1
  71. data/app/packs/src/decidim/proposals/exit_handler.js +73 -0
  72. data/app/packs/stylesheets/decidim/proposals/proposals.scss +248 -3
  73. data/app/permissions/decidim/proposals/admin/permissions.rb +2 -5
  74. data/app/permissions/decidim/proposals/permissions.rb +42 -0
  75. data/app/presenters/decidim/proposals/admin_log/proposal_presenter.rb +1 -1
  76. data/app/presenters/decidim/proposals/proposal_presenter.rb +1 -1
  77. data/app/queries/decidim/proposals/filtered_proposals.rb +2 -2
  78. data/app/queries/decidim/proposals/metrics/accepted_proposals_metric_manage.rb +2 -2
  79. data/app/queries/decidim/proposals/metrics/endorsements_metric_manage.rb +10 -10
  80. data/app/queries/decidim/proposals/metrics/proposal_followers_metric_measure.rb +4 -4
  81. data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +6 -6
  82. data/app/queries/decidim/proposals/metrics/proposals_metric_manage.rb +6 -6
  83. data/app/queries/decidim/proposals/metrics/votes_metric_manage.rb +6 -6
  84. data/app/services/decidim/proposals/proposal_builder.rb +1 -2
  85. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +3 -3
  86. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_note.html.erb +28 -0
  87. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_note_reply.html.erb +9 -0
  88. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +4 -28
  89. data/app/views/decidim/proposals/admin/proposal_states/_form.html.erb +1 -1
  90. data/app/views/decidim/proposals/admin/proposals/_actions.html.erb +21 -0
  91. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +3 -2
  92. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +17 -24
  93. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +12 -28
  94. data/app/views/decidim/proposals/admin/proposals/_proposals-thead.html.erb +45 -0
  95. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_apply_answer_template.html.erb +22 -0
  96. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +15 -11
  97. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_taxonomy_change.html.erb +23 -0
  98. data/app/views/decidim/proposals/admin/proposals/index.html.erb +17 -48
  99. data/app/views/decidim/proposals/admin/proposals/manage_trash.html.erb +18 -0
  100. data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +1 -1
  101. data/app/views/decidim/proposals/admin/proposals/show.html.erb +14 -26
  102. data/app/views/decidim/proposals/admin/proposals/update_attribute.js.erb +1 -1
  103. data/app/views/decidim/proposals/admin/proposals_imports/new.html.erb +0 -3
  104. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_actions.html.erb +9 -0
  105. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_draft_aside.html.erb +0 -15
  106. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +4 -6
  107. data/app/views/decidim/proposals/collaborative_drafts/index.html.erb +6 -2
  108. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +27 -11
  109. data/app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb +29 -9
  110. data/app/views/decidim/proposals/proposals/_actions.html.erb +4 -7
  111. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +17 -22
  112. data/app/views/decidim/proposals/proposals/_exit_modal.html.erb +17 -0
  113. data/app/views/decidim/proposals/proposals/_notification_alert_box.html.erb +1 -0
  114. data/app/views/decidim/proposals/proposals/_proposal_actions.html.erb +19 -0
  115. data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +9 -32
  116. data/app/views/decidim/proposals/proposals/_proposal_voting_rules.html.erb +33 -0
  117. data/app/views/decidim/proposals/proposals/_proposals.html.erb +1 -1
  118. data/app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb +2 -2
  119. data/app/views/decidim/proposals/proposals/_remaining_votes_notification.html.erb +12 -0
  120. data/app/views/decidim/proposals/proposals/_update_proposal_voting_rules.html.erb +6 -0
  121. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +12 -8
  122. data/app/views/decidim/proposals/proposals/_votes_count.html.erb +2 -1
  123. data/app/views/decidim/proposals/proposals/_voting_rules.html.erb +1 -7
  124. data/app/views/decidim/proposals/proposals/index.html.erb +3 -18
  125. data/app/views/decidim/proposals/proposals/index.js.erb +1 -1
  126. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +3 -1
  127. data/app/views/decidim/proposals/proposals/show.html.erb +35 -15
  128. data/config/locales/ar.yml +15 -73
  129. data/config/locales/bg.yml +12 -89
  130. data/config/locales/bs-BA.yml +2 -13
  131. data/config/locales/ca.yml +209 -84
  132. data/config/locales/cs.yml +210 -81
  133. data/config/locales/de.yml +213 -89
  134. data/config/locales/el.yml +12 -84
  135. data/config/locales/en.yml +206 -81
  136. data/config/locales/es-MX.yml +213 -88
  137. data/config/locales/es-PY.yml +213 -88
  138. data/config/locales/es.yml +214 -89
  139. data/config/locales/eu.yml +288 -164
  140. data/config/locales/fi-plain.yml +213 -87
  141. data/config/locales/fi.yml +213 -87
  142. data/config/locales/fr-CA.yml +116 -97
  143. data/config/locales/fr.yml +116 -97
  144. data/config/locales/ga-IE.yml +1 -21
  145. data/config/locales/gl.yml +8 -45
  146. data/config/locales/hu.yml +12 -68
  147. data/config/locales/id-ID.yml +9 -43
  148. data/config/locales/is-IS.yml +0 -19
  149. data/config/locales/it.yml +11 -77
  150. data/config/locales/ja.yml +165 -106
  151. data/config/locales/lt.yml +13 -85
  152. data/config/locales/lv.yml +10 -52
  153. data/config/locales/nl.yml +10 -59
  154. data/config/locales/no.yml +10 -44
  155. data/config/locales/pl.yml +11 -88
  156. data/config/locales/pt-BR.yml +9 -74
  157. data/config/locales/pt.yml +10 -56
  158. data/config/locales/ro-RO.yml +12 -72
  159. data/config/locales/ru.yml +0 -23
  160. data/config/locales/sk.yml +10 -52
  161. data/config/locales/sr-CS.yml +2 -14
  162. data/config/locales/sv.yml +127 -86
  163. data/config/locales/tr-TR.yml +10 -53
  164. data/config/locales/uk.yml +0 -23
  165. data/config/locales/zh-CN.yml +10 -53
  166. data/config/locales/zh-TW.yml +12 -86
  167. data/db/migrate/20171220084719_add_published_at_to_proposals.rb +1 -1
  168. data/db/migrate/20181016132225_add_organization_as_author.rb +1 -1
  169. data/db/migrate/20200120215928_move_proposal_endorsements_to_core_endorsements.rb +1 -1
  170. data/db/migrate/20200827154156_add_commentable_counter_cache_to_proposals.rb +3 -3
  171. data/db/migrate/20210310102839_add_followable_counter_cache_to_proposals.rb +1 -1
  172. data/db/migrate/20240110203504_create_default_proposal_states.rb +1 -1
  173. data/db/migrate/20240404202756_add_valuation_assignments_count_to_decidim_proposals_proposals.rb +1 -1
  174. data/db/migrate/20240617091140_add_email_on_assigned_proposals_to_users.rb +7 -0
  175. data/db/migrate/20240617170052_add_parent_relation_to_decidim_proposal_notes.rb +7 -0
  176. data/db/migrate/20240828103755_add_deleted_at_to_decidim_proposals_proposals.rb +8 -0
  177. data/decidim-proposals.gemspec +1 -1
  178. data/lib/decidim/api/functions/proposal_finder_helper.rb +12 -0
  179. data/lib/decidim/api/functions/proposal_list_helper.rb +12 -0
  180. data/lib/decidim/api/proposal_type.rb +17 -25
  181. data/lib/decidim/api/proposals_type.rb +4 -19
  182. data/lib/decidim/proposals/admin_engine.rb +12 -3
  183. data/lib/decidim/proposals/admin_filter.rb +3 -6
  184. data/lib/decidim/proposals/component.rb +4 -5
  185. data/lib/decidim/proposals/download_your_data_proposal_serializer.rb +15 -0
  186. data/lib/decidim/proposals/engine.rb +5 -0
  187. data/lib/decidim/proposals/import/proposal_creator.rb +4 -4
  188. data/lib/decidim/proposals/proposal_serializer.rb +12 -29
  189. data/lib/decidim/proposals/seeds.rb +21 -17
  190. data/lib/decidim/proposals/test/factories.rb +2 -1
  191. data/lib/decidim/proposals/version.rb +1 -1
  192. data/lib/decidim/proposals.rb +4 -0
  193. data/lib/tasks/proposals/upgrade/decidim_proposals_upgrade_tasks.rake +0 -22
  194. metadata +65 -34
  195. data/app/commands/decidim/proposals/admin/update_proposal_category.rb +0 -70
  196. data/app/commands/decidim/proposals/admin/update_proposal_scope.rb +0 -75
  197. data/app/events/decidim/proposals/admin/update_proposal_category_event.rb +0 -11
  198. data/app/events/decidim/proposals/admin/update_proposal_scope_event.rb +0 -11
  199. data/app/jobs/decidim/proposals/admin/import_proposals_job.rb +0 -91
  200. data/app/mailers/decidim/proposals/admin/import_proposals_mailer.rb +0 -30
  201. data/app/views/decidim/proposals/admin/import_proposals_mailer/notify_failure.html.erb +0 -1
  202. data/app/views/decidim/proposals/admin/import_proposals_mailer/notify_success.html.erb +0 -2
  203. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb +0 -15
  204. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +0 -21
  205. data/app/views/decidim/proposals/collaborative_drafts/_actions.html.erb +0 -7
  206. data/config/locales/ca-IT.yml +0 -945
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class DownloadYourDataProposalSerializer < Decidim::Proposals::ProposalSerializer
6
+ # Serializes a Proposal for download your data feature
7
+ #
8
+ # Remove the author information as it is the same of the user that
9
+ # requested the data
10
+ def serialize
11
+ super.except!(:author)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -22,6 +22,11 @@ module Decidim
22
22
  end
23
23
  resource :proposal_vote, only: [:create, :destroy]
24
24
  resources :versions, only: [:show]
25
+ resources :invite_coauthors, only: [:index, :create, :update, :destroy] do
26
+ collection do
27
+ delete :cancel
28
+ end
29
+ end
25
30
  end
26
31
  resources :collaborative_drafts, except: [:destroy] do
27
32
  member do
@@ -45,7 +45,7 @@ module Decidim
45
45
 
46
46
  def resource
47
47
  @resource ||= Decidim::Proposals::Proposal.new(
48
- category:,
48
+ taxonomies:,
49
49
  scope:,
50
50
  title:,
51
51
  body:,
@@ -57,9 +57,9 @@ module Decidim
57
57
  )
58
58
  end
59
59
 
60
- def category
61
- id = data.has_key?(:category) ? data[:category]["id"] : data[:"category/id"].to_i
62
- Decidim::Category.find_by(id:)
60
+ def taxonomies
61
+ id = data.has_key?(:taxonomies) ? data[:taxonomies]["ids"] : data[:"taxonomies/ids"]&.split(",")&.map(&:to_i)
62
+ Decidim::Taxonomy.where(id:)
63
63
  end
64
64
 
65
65
  def scope
@@ -22,14 +22,7 @@ module Decidim
22
22
  author: {
23
23
  **author_fields
24
24
  },
25
- category: {
26
- id: proposal.category.try(:id),
27
- name: proposal.category.try(:name) || empty_translatable
28
- },
29
- scope: {
30
- id: proposal.scope.try(:id),
31
- name: proposal.scope.try(:name) || empty_translatable
32
- },
25
+ taxonomies:,
33
26
  participatory_space: {
34
27
  id: proposal.participatory_space.id,
35
28
  url: Decidim::ResourceLocatorPresenter.new(proposal.participatory_space).url
@@ -41,6 +34,7 @@ module Decidim
41
34
  latitude: proposal.latitude,
42
35
  longitude: proposal.longitude,
43
36
  state: proposal.state.to_s,
37
+ state_published_at: proposal.state_published_at,
44
38
  reference: proposal.reference,
45
39
  answer: ensure_translatable(proposal.answer),
46
40
  answered_at: proposal.answered_at,
@@ -52,7 +46,7 @@ module Decidim
52
46
  },
53
47
  comments: proposal.comments_count,
54
48
  attachments: proposal.attachments.size,
55
- followers: proposal.follows.size,
49
+ follows_count: proposal.follows_count,
56
50
  published_at: proposal.published_at,
57
51
  url:,
58
52
  meeting_urls: meetings,
@@ -63,7 +57,14 @@ module Decidim
63
57
  url: original_proposal_url
64
58
  },
65
59
  withdrawn: proposal.withdrawn?,
66
- withdrawn_at: proposal.withdrawn_at
60
+ withdrawn_at: proposal.withdrawn_at,
61
+ created_at: proposal.created_at,
62
+ updated_at: proposal.updated_at,
63
+ created_in_meeting: proposal.created_in_meeting,
64
+ coauthorships_count: proposal.coauthorships_count,
65
+ cost: proposal.cost,
66
+ cost_report: proposal.cost_report,
67
+ execution_period: proposal.execution_period
67
68
  }
68
69
  end
69
70
 
@@ -72,10 +73,6 @@ module Decidim
72
73
  attr_reader :proposal
73
74
  alias resource proposal
74
75
 
75
- def component
76
- proposal.component
77
- end
78
-
79
76
  def meetings
80
77
  proposal.linked_resources(:meetings, "proposals_from_meeting").map do |meeting|
81
78
  Decidim::ResourceLocatorPresenter.new(meeting).url
@@ -83,7 +80,7 @@ module Decidim
83
80
  end
84
81
 
85
82
  def related_proposals
86
- proposal.linked_resources(:proposals, "copied_from_component").map do |proposal|
83
+ proposal.linked_resources(:proposals, %w(copied_from_component merged_from_component splitted_from_component)).map do |proposal|
87
84
  Decidim::ResourceLocatorPresenter.new(proposal).url
88
85
  end
89
86
  end
@@ -141,23 +138,9 @@ module Decidim
141
138
  end
142
139
  end
143
140
 
144
- def profile_url(author)
145
- return "" if author.respond_to?(:deleted?) && author.deleted?
146
-
147
- Decidim::Core::Engine.routes.url_helpers.profile_url(author.nickname, host:)
148
- end
149
-
150
141
  def meeting_url(meeting)
151
142
  Decidim::EngineRouter.main_proxy(meeting.component).meeting_url(id: meeting.id, host:)
152
143
  end
153
-
154
- def root_url
155
- Decidim::Core::Engine.routes.url_helpers.root_url(host:)
156
- end
157
-
158
- def host
159
- resource.organization.host
160
- end
161
144
  end
162
145
  end
163
146
  end
@@ -20,10 +20,13 @@ module Decidim
20
20
  5.times do |n|
21
21
  proposal = create_proposal!(component:)
22
22
 
23
- emendation = create_emendation!(proposal:) if proposal.state.nil?
23
+ if proposal.state.nil? && component.settings.amendments_enabled?
24
+ emendation = create_emendation!(proposal:)
25
+ create_proposal_votes!(proposal: emendation)
26
+ end
24
27
 
25
28
  (n % 3).times do |_m|
26
- create_proposal_votes!(proposal:, emendation:)
29
+ create_proposal_votes!(proposal:)
27
30
  end
28
31
 
29
32
  (n % 3).times do
@@ -60,7 +63,9 @@ module Decidim
60
63
  settings: {
61
64
  vote_limit: 0,
62
65
  attachments_allowed: [true, false].sample,
63
- collaborative_drafts_enabled: true
66
+ amendments_enabled: participatory_space.id.odd?,
67
+ collaborative_drafts_enabled: true,
68
+ geocoding_enabled: [true, false].sample
64
69
  },
65
70
  step_settings:
66
71
  }
@@ -81,10 +86,8 @@ module Decidim
81
86
 
82
87
  params = {
83
88
  component:,
84
- category: participatory_space.categories.sample,
85
- scope: random_scope(participatory_space:),
86
- title: { en: ::Faker::Lorem.sentence(word_count: 2) },
87
- body: { en: ::Faker::Lorem.paragraphs(number: 2).join("\n") },
89
+ title: Decidim::Faker::Localized.sentence(word_count: 2),
90
+ body: Decidim::Faker::Localized.paragraph(sentence_count: 1),
88
91
  proposal_state:,
89
92
  answer:,
90
93
  answered_at: proposal_state.present? ? Time.current : nil,
@@ -92,6 +95,14 @@ module Decidim
92
95
  published_at: Time.current
93
96
  }
94
97
 
98
+ if component.settings.geocoding_enabled?
99
+ params = params.merge({
100
+ address: "#{::Faker::Address.street_address} #{::Faker::Address.zip} #{::Faker::Address.city}",
101
+ latitude: ::Faker::Address.latitude,
102
+ longitude: ::Faker::Address.longitude
103
+ })
104
+ end
105
+
95
106
  proposal = Decidim.traceability.perform_action!(
96
107
  "publish",
97
108
  Decidim::Proposals::Proposal,
@@ -186,10 +197,8 @@ module Decidim
186
197
 
187
198
  params = {
188
199
  component: proposal.component,
189
- category: participatory_space.categories.sample,
190
- scope: random_scope(participatory_space:),
191
- title: { en: "#{proposal.title["en"]} #{::Faker::Lorem.sentence(word_count: 1)}" },
192
- body: { en: "#{proposal.body["en"]} #{::Faker::Lorem.sentence(word_count: 3)}" },
200
+ title: Decidim::Faker::Localized.literal(proposal.title[I18n.locale]),
201
+ body: Decidim::Faker::Localized.paragraph(sentence_count: 3),
193
202
  proposal_state: Decidim::Proposals::ProposalState.where(component: proposal.component, token: :evaluating).first,
194
203
  answer: nil,
195
204
  answered_at: Time.current,
@@ -218,11 +227,10 @@ module Decidim
218
227
  emendation
219
228
  end
220
229
 
221
- def create_proposal_votes!(proposal:, emendation: nil)
230
+ def create_proposal_votes!(proposal:)
222
231
  author = find_or_initialize_user_by(email: random_email(suffix: "vote"))
223
232
 
224
233
  Decidim::Proposals::ProposalVote.create!(proposal:, author:) unless proposal.published_state? && proposal.rejected?
225
- Decidim::Proposals::ProposalVote.create!(proposal: emendation, author:) if emendation
226
234
  end
227
235
 
228
236
  def create_proposal_notes!(proposal:)
@@ -249,8 +257,6 @@ module Decidim
249
257
  draft = Decidim.traceability.perform_action!("create", Decidim::Proposals::CollaborativeDraft, author) do
250
258
  draft = Decidim::Proposals::CollaborativeDraft.new(
251
259
  component:,
252
- category: participatory_space.categories.sample,
253
- scope: random_scope(participatory_space:),
254
260
  title: ::Faker::Lorem.sentence(word_count: 2),
255
261
  body: ::Faker::Lorem.paragraphs(number: 2).join("\n"),
256
262
  state:,
@@ -280,8 +286,6 @@ module Decidim
280
286
  Decidim::Proposals::CollaborativeDraft.all.sample,
281
287
  Decidim::User.where(organization:).all.sample,
282
288
  component:,
283
- category: participatory_space.categories.sample,
284
- scope: random_scope(participatory_space:),
285
289
  title: ::Faker::Lorem.sentence(word_count: 2),
286
290
  body: ::Faker::Lorem.paragraphs(number: 2).join("\n")
287
291
  )
@@ -306,6 +306,7 @@ FactoryBot.define do
306
306
  body { generate_localized_description(:proposal_body, skip_injection:) }
307
307
  component { create(:proposal_component, skip_injection:) }
308
308
  published_at { Time.current }
309
+ deleted_at { nil }
309
310
  address { "#{Faker::Address.street_name}, #{Faker::Address.city}" }
310
311
  latitude { Faker::Address.latitude }
311
312
  longitude { Faker::Address.longitude }
@@ -573,7 +574,7 @@ FactoryBot.define do
573
574
  valuator_role do
574
575
  space = proposal.component.participatory_space
575
576
  organization = space.organization
576
- build :participatory_process_user_role, role: :valuator, skip_injection:, user: build(:user, organization:, skip_injection:)
577
+ build(:participatory_process_user_role, role: :valuator, skip_injection:, user: build(:user, organization:, skip_injection:))
577
578
  end
578
579
  end
579
580
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds decidim-proposals version.
5
5
  module Proposals
6
6
  def self.version
7
- "0.29.3"
7
+ "0.30.0.rc1"
8
8
  end
9
9
  end
10
10
  end
@@ -11,7 +11,11 @@ module Decidim
11
11
  # This namespace holds the logic of the `Proposals` component. This component
12
12
  # allows users to create proposals in a participatory process.
13
13
  module Proposals
14
+ autoload :ProposalListHelper, "decidim/api/functions/proposal_list_helper"
15
+ autoload :ProposalFinderHelper, "decidim/api/functions/proposal_finder_helper"
16
+
14
17
  autoload :ProposalSerializer, "decidim/proposals/proposal_serializer"
18
+ autoload :DownloadYourDataProposalSerializer, "decidim/proposals/download_your_data_proposal_serializer"
15
19
  autoload :CommentableProposal, "decidim/proposals/commentable_proposal"
16
20
  autoload :CommentableCollaborativeDraft, "decidim/proposals/commentable_collaborative_draft"
17
21
  autoload :MarkdownToProposals, "decidim/proposals/markdown_to_proposals"
@@ -15,28 +15,6 @@ namespace :decidim_proposals do
15
15
  end
16
16
  end
17
17
 
18
- desc "Fix proposal states created by import from other component bug"
19
- task fix_state: :environment do
20
- states_ids_for_reset = []
21
- Decidim::Proposals::Proposal.unscoped.includes(:proposal_state).where.not(decidim_proposals_proposal_state_id: nil).find_each(batch_size: 100) do |proposal|
22
- next if proposal.decidim_component_id == proposal.proposal_state.decidim_component_id
23
-
24
- states_ids_for_reset.push(proposal.proposal_state.id)
25
- new_state = Decidim::Proposals::ProposalState.where(component: proposal.component, token: proposal.proposal_state.token).first
26
- if new_state.present?
27
- states_ids_for_reset.push(new_state.id)
28
- proposal.update_columns(decidim_proposals_proposal_state_id: new_state.id) # rubocop:disable Rails/SkipsModelValidations
29
- else
30
- # if the state is not found on the proposal component, the state is custom and should be removed
31
- proposal.update_columns(decidim_proposals_proposal_state_id: nil) # rubocop:disable Rails/SkipsModelValidations
32
- end
33
- end
34
- states_ids_for_reset.uniq.each do |state_id|
35
- Decidim::Proposals::ProposalState.reset_counters(state_id, :proposals)
36
- end
37
- puts "FINISHED"
38
- end
39
-
40
18
  desc "Removes all proposal valuator records of which the role assignment does not exists"
41
19
  task remove_valuator_orphan_records: :environment do
42
20
  if Decidim.module_installed?("participatory_processes")