decidim-budgets 0.22.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -3
  3. data/app/assets/stylesheets/decidim/budgets/budget/_budget-list.scss +5 -0
  4. data/app/cells/decidim/budgets/base_cell.rb +22 -0
  5. data/app/cells/decidim/budgets/budget_cell.rb +21 -0
  6. data/app/cells/decidim/budgets/budget_information_modal/show.erb +28 -0
  7. data/app/cells/decidim/budgets/budget_information_modal_cell.rb +22 -0
  8. data/app/cells/decidim/budgets/budget_list_item/show.erb +22 -0
  9. data/app/cells/decidim/budgets/budget_list_item_cell.rb +40 -0
  10. data/app/cells/decidim/budgets/budget_m/data.erb +12 -0
  11. data/app/cells/decidim/budgets/budget_m/footer.erb +5 -0
  12. data/app/cells/decidim/budgets/budget_m_cell.rb +16 -0
  13. data/app/cells/decidim/budgets/budgets_header/show.erb +7 -0
  14. data/app/cells/decidim/budgets/budgets_header_cell.rb +14 -0
  15. data/app/cells/decidim/budgets/budgets_list/card_list.erb +7 -0
  16. data/app/cells/decidim/budgets/budgets_list/highlighted.erb +11 -0
  17. data/app/cells/decidim/budgets/budgets_list/show.erb +20 -0
  18. data/app/cells/decidim/budgets/budgets_list/voted.erb +43 -0
  19. data/app/cells/decidim/budgets/budgets_list_cell.rb +39 -0
  20. data/app/cells/decidim/budgets/limit_announcement_cell.rb +52 -0
  21. data/app/cells/decidim/budgets/project_list_item/project_data.erb +17 -3
  22. data/app/cells/decidim/budgets/project_list_item/project_data_vote_button.erb +2 -2
  23. data/app/cells/decidim/budgets/project_list_item/project_text.erb +11 -5
  24. data/app/cells/decidim/budgets/project_list_item/show.erb +3 -3
  25. data/app/cells/decidim/budgets/project_list_item_cell.rb +8 -28
  26. data/app/cells/decidim/budgets/project_m/data.erb +1 -1
  27. data/app/cells/decidim/budgets/project_m_cell.rb +4 -0
  28. data/app/cells/decidim/budgets/project_selected_status_cell.rb +28 -0
  29. data/app/cells/decidim/budgets/project_tags/show.erb +5 -0
  30. data/app/cells/decidim/budgets/project_tags_cell.rb +18 -0
  31. data/app/cells/decidim/budgets/project_voted_hint_cell.rb +33 -0
  32. data/app/cells/decidim/budgets/project_votes_count_cell.rb +44 -0
  33. data/app/commands/decidim/budgets/add_line_item.rb +7 -10
  34. data/app/commands/decidim/budgets/admin/create_budget.rb +48 -0
  35. data/app/commands/decidim/budgets/admin/create_project.rb +12 -7
  36. data/app/commands/decidim/budgets/admin/destroy_budget.rb +42 -0
  37. data/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb +26 -25
  38. data/app/commands/decidim/budgets/admin/update_budget.rb +48 -0
  39. data/app/commands/decidim/budgets/admin/update_project.rb +8 -1
  40. data/app/commands/decidim/budgets/checkout.rb +6 -6
  41. data/app/commands/decidim/budgets/remove_line_item.rb +3 -2
  42. data/app/controllers/concerns/decidim/budgets/needs_current_order.rb +14 -2
  43. data/app/controllers/concerns/decidim/budgets/orderable.rb +3 -7
  44. data/app/controllers/decidim/budgets/admin/application_controller.rb +10 -2
  45. data/app/controllers/decidim/budgets/admin/attachment_collections_controller.rb +1 -1
  46. data/app/controllers/decidim/budgets/admin/attachments_controller.rb +2 -2
  47. data/app/controllers/decidim/budgets/admin/budgets_controller.rb +82 -0
  48. data/app/controllers/decidim/budgets/admin/projects_controller.rb +7 -7
  49. data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +10 -2
  50. data/app/controllers/decidim/budgets/application_controller.rb +23 -0
  51. data/app/controllers/decidim/budgets/budgets_controller.rb +24 -0
  52. data/app/controllers/decidim/budgets/line_items_controller.rb +9 -5
  53. data/app/controllers/decidim/budgets/orders_controller.rb +20 -6
  54. data/app/controllers/decidim/budgets/projects_controller.rb +19 -18
  55. data/app/forms/decidim/budgets/admin/budget_form.rb +39 -0
  56. data/app/forms/decidim/budgets/admin/project_form.rb +14 -10
  57. data/app/forms/decidim/budgets/admin/project_import_proposals_form.rb +4 -0
  58. data/app/helpers/decidim/budgets/admin/application_helper.rb +13 -0
  59. data/app/helpers/decidim/budgets/application_helper.rb +10 -0
  60. data/app/helpers/decidim/budgets/projects_helper.rb +0 -4
  61. data/app/mailers/decidim/budgets/order_summary_mailer.rb +5 -3
  62. data/app/models/decidim/budgets/budget.rb +34 -0
  63. data/app/models/decidim/budgets/line_item.rb +4 -4
  64. data/app/models/decidim/budgets/order.rb +22 -19
  65. data/app/models/decidim/budgets/project.rb +34 -5
  66. data/app/permissions/decidim/budgets/admin/permissions.rb +23 -10
  67. data/app/permissions/decidim/budgets/permissions.rb +28 -6
  68. data/app/presenters/decidim/budgets/admin_log/budget_presenter.rb +42 -0
  69. data/app/queries/decidim/budgets/filtered_projects.rb +9 -1
  70. data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +3 -2
  71. data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +6 -5
  72. data/app/serializers/decidim/budgets/data_portability_budgets_order_serializer.rb +3 -2
  73. data/app/services/decidim/budgets/project_search.rb +12 -24
  74. data/app/types/decidim/budgets/budget_type.rb +24 -0
  75. data/app/types/decidim/budgets/budgets_type.rb +6 -6
  76. data/app/types/decidim/budgets/project_type.rb +2 -1
  77. data/app/views/decidim/budgets/admin/budgets/_form.html.erb +23 -0
  78. data/app/views/decidim/budgets/admin/budgets/edit.html.erb +7 -0
  79. data/app/views/decidim/budgets/admin/budgets/index.html.erb +58 -0
  80. data/app/views/decidim/budgets/admin/budgets/new.html.erb +7 -0
  81. data/app/views/decidim/budgets/admin/projects/_form.html.erb +12 -4
  82. data/app/views/decidim/budgets/admin/projects/edit.html.erb +2 -2
  83. data/app/views/decidim/budgets/admin/projects/index.html.erb +20 -7
  84. data/app/views/decidim/budgets/admin/projects/new.html.erb +2 -2
  85. data/app/views/decidim/budgets/admin/proposals_imports/new.html.erb +1 -1
  86. data/app/views/decidim/budgets/budgets/index.html.erb +5 -0
  87. data/app/views/decidim/budgets/order_summary_mailer/order_summary.html.erb +1 -0
  88. data/app/views/decidim/budgets/projects/_budget_confirm.html.erb +3 -3
  89. data/app/views/decidim/budgets/projects/_budget_summary.html.erb +19 -6
  90. data/app/views/decidim/budgets/projects/_filters.html.erb +6 -2
  91. data/app/views/decidim/budgets/projects/_linked_projects.html.erb +1 -1
  92. data/app/views/decidim/budgets/projects/_order_progress.html.erb +10 -6
  93. data/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +3 -3
  94. data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +36 -7
  95. data/app/views/decidim/budgets/projects/index.html.erb +12 -4
  96. data/app/views/decidim/budgets/projects/show.html.erb +17 -10
  97. data/config/locales/am-ET.yml +1 -0
  98. data/config/locales/ar.yml +2 -11
  99. data/config/locales/bg.yml +6 -0
  100. data/config/locales/ca.yml +102 -10
  101. data/config/locales/cs.yml +105 -13
  102. data/config/locales/da.yml +1 -0
  103. data/config/locales/de.yml +90 -9
  104. data/config/locales/el.yml +3 -9
  105. data/config/locales/en.yml +101 -9
  106. data/config/locales/eo.yml +1 -0
  107. data/config/locales/es-MX.yml +101 -9
  108. data/config/locales/es-PY.yml +101 -9
  109. data/config/locales/es.yml +102 -10
  110. data/config/locales/et.yml +1 -0
  111. data/config/locales/eu.yml +3 -8
  112. data/config/locales/fi-plain.yml +102 -10
  113. data/config/locales/fi.yml +103 -11
  114. data/config/locales/fr-CA.yml +100 -9
  115. data/config/locales/fr.yml +100 -9
  116. data/config/locales/gl.yml +2 -7
  117. data/config/locales/hr.yml +1 -0
  118. data/config/locales/hu.yml +2 -7
  119. data/config/locales/id-ID.yml +2 -6
  120. data/config/locales/is-IS.yml +0 -6
  121. data/config/locales/is.yml +114 -0
  122. data/config/locales/it.yml +71 -9
  123. data/config/locales/ja-JP.yml +1 -0
  124. data/config/locales/ja.yml +262 -0
  125. data/config/locales/ko-KR.yml +1 -0
  126. data/config/locales/ko.yml +1 -0
  127. data/config/locales/lt.yml +1 -0
  128. data/config/locales/{lv-LV.yml → lv.yml} +2 -10
  129. data/config/locales/mt.yml +1 -0
  130. data/config/locales/nl.yml +88 -10
  131. data/config/locales/no.yml +22 -9
  132. data/config/locales/om-ET.yml +1 -0
  133. data/config/locales/pl.yml +113 -22
  134. data/config/locales/pt-BR.yml +2 -7
  135. data/config/locales/pt.yml +3 -9
  136. data/config/locales/ro-RO.yml +3 -10
  137. data/config/locales/ru.yml +2 -9
  138. data/config/locales/sk.yml +2 -11
  139. data/config/locales/sl.yml +0 -4
  140. data/config/locales/so-SO.yml +1 -0
  141. data/config/locales/sr-CS.yml +0 -2
  142. data/config/locales/sv.yml +80 -9
  143. data/config/locales/ti-ER.yml +1 -0
  144. data/config/locales/tr-TR.yml +2 -7
  145. data/config/locales/uk.yml +2 -9
  146. data/config/locales/vi-VN.yml +1 -0
  147. data/config/locales/vi.yml +1 -0
  148. data/config/locales/zh-CN.yml +260 -0
  149. data/config/locales/zh-TW.yml +1 -0
  150. data/db/migrate/20200617105120_create_decidim_budgets.rb +15 -0
  151. data/db/migrate/20200629072626_rename_budget_to_budget_ammount.rb +7 -0
  152. data/db/migrate/20200629134013_add_budget_reference_to_project.rb +7 -0
  153. data/db/migrate/20200706142609_add_budget_reference_to_order.rb +7 -0
  154. data/db/migrate/20200714103519_move_budgets_to_own_model.rb +109 -0
  155. data/db/migrate/20200717140012_add_scope_to_budgets.rb +7 -0
  156. data/db/migrate/20200728075039_add_selected_at_to_project.rb +7 -0
  157. data/db/migrate/20200804175222_votes_enabled_to_votes_choices.rb +35 -0
  158. data/db/migrate/20200827154129_add_commentable_counter_cache_to_projects.rb +9 -0
  159. data/lib/decidim/budgets.rb +1 -0
  160. data/lib/decidim/budgets/admin_engine.rb +10 -5
  161. data/lib/decidim/budgets/component.rb +83 -38
  162. data/lib/decidim/budgets/engine.rb +8 -6
  163. data/lib/decidim/budgets/test/factories.rb +42 -13
  164. data/lib/decidim/budgets/version.rb +1 -1
  165. data/lib/decidim/budgets/workflows.rb +17 -0
  166. data/lib/decidim/budgets/workflows/all.rb +20 -0
  167. data/lib/decidim/budgets/workflows/base.rb +132 -0
  168. data/lib/decidim/budgets/workflows/one.rb +33 -0
  169. metadata +84 -17
  170. data/app/cells/decidim/budgets/project_list_item/project_data_number.erb +0 -3
  171. data/app/cells/decidim/budgets/project_list_item/project_data_votes.erb +0 -7
@@ -2,7 +2,6 @@ uk:
2
2
  activemodel:
3
3
  attributes:
4
4
  project:
5
- budget: Бюджет
6
5
  decidim_category_id: Категорія
7
6
  decidim_scope_id: Обсяг
8
7
  description: Опис
@@ -24,7 +23,6 @@ uk:
24
23
  destroy: Видалити
25
24
  edit: Редагувати
26
25
  import: Внести до проектів запозичені пропозиції
27
- new: Додати новий проект
28
26
  preview: Попередній перегляд
29
27
  title: Дії
30
28
  admin:
@@ -69,7 +67,6 @@ uk:
69
67
  title: Назва
70
68
  projects:
71
69
  budget_confirm:
72
- are_you_sure: Чи ви згодні? Підтвердивши свій голос, ви не зможете його потім змінити.
73
70
  cancel: Скасувати
74
71
  confirm: Підтвердити
75
72
  description: Ось проекти, які ви обрали складовими бюджету.
@@ -114,11 +111,6 @@ uk:
114
111
  other: обраних проектів
115
112
  view: Переглянути
116
113
  project:
117
- count:
118
- one: 1 людина підтримує
119
- few: "%{count} людей підтримує"
120
- many: "%{count} людей підтримують"
121
- other: "%{count} людей підтримують"
122
114
  view: Переглянути
123
115
  show:
124
116
  budget: Бюджет
@@ -140,7 +132,8 @@ uk:
140
132
  announcement: Оголошення
141
133
  comments_blocked: Коментарі вимкнено
142
134
  show_votes: Показати голоси
143
- votes_enabled: Голосування увімкнене
135
+ votes_choices:
136
+ enabled: Голосування увімкнене
144
137
  orders:
145
138
  checkout:
146
139
  error: При обробці вашого голосу сталася помилка
@@ -0,0 +1 @@
1
+ vi:
@@ -0,0 +1 @@
1
+ vi:
@@ -0,0 +1,260 @@
1
+ zh-CN:
2
+ activemodel:
3
+ attributes:
4
+ budget:
5
+ decidim_scope_id: 范围
6
+ description: 描述
7
+ title: 标题
8
+ total_budget: 预算总额
9
+ weight: 权重
10
+ project:
11
+ budget_amount: 预算金额
12
+ decidim_category_id: 类别
13
+ decidim_scope_id: 范围
14
+ description: 描述
15
+ proposal_ids: 有关提议
16
+ title: 标题
17
+ activerecord:
18
+ models:
19
+ decidim/budgets/project:
20
+ other: 项目
21
+ decidim:
22
+ budgets:
23
+ actions:
24
+ attachment_collections: 文件夹
25
+ attachments: 附件
26
+ confirm_destroy: 您确定要删除此项目吗?
27
+ destroy: 删除
28
+ edit: 编辑
29
+ edit_projects: 管理项目
30
+ import: 导入提案到项目
31
+ new: 新建 %{name}
32
+ preview: 预览
33
+ title: 行动
34
+ admin:
35
+ budgets:
36
+ create:
37
+ invalid: 创建此预算时出现问题
38
+ success: 预算创建成功
39
+ destroy:
40
+ invalid: 删除这个预算时出错
41
+ success: 预算已成功删除
42
+ edit:
43
+ title: 编辑预算
44
+ update: 更新预算
45
+ index:
46
+ title: 预算
47
+ new:
48
+ create: 创建预算
49
+ title: 新预算
50
+ update:
51
+ invalid: 更新这个预算时出现问题
52
+ success: 预算已成功更新
53
+ models:
54
+ budget:
55
+ name: 三. 预算
56
+ project:
57
+ name: 项目
58
+ projects:
59
+ create:
60
+ invalid: 创建此项目时出现问题
61
+ success: 项目创建成功
62
+ destroy:
63
+ success: 工程删除成功
64
+ edit:
65
+ title: 编辑项目
66
+ update: 更新
67
+ index:
68
+ finished_orders: 完成的投票
69
+ pending_orders: 待决投票
70
+ selected: 已选择
71
+ title: 项目
72
+ new:
73
+ create: 创建
74
+ title: 新建项目
75
+ update:
76
+ invalid: 更新此项目时出现问题
77
+ success: 项目已成功更新
78
+ proposals_imports:
79
+ create:
80
+ invalid: 将建议导入项目时遇到问题
81
+ success: "%{number} 个建议已成功导入到项目"
82
+ new:
83
+ create: 导入提案到项目
84
+ no_components: 在这个参与性空间中,没有其他提案组成部分可以将提案导入项目。
85
+ select_component: 请选择一个组件
86
+ admin_log:
87
+ budget:
88
+ create: "%{user_name} 在 %{space_name} 空间中创建了 %{resource_name} 预算"
89
+ delete: "%{user_name} 删除了 %{resource_name} 在 %{space_name} 空间的预算"
90
+ update: "%{user_name} 在 %{space_name} 空间中更新了 %{resource_name} 预算"
91
+ project:
92
+ create: "%{user_name} 在 %{space_name} 空间中创建了 %{resource_name} 项目"
93
+ delete: "%{user_name} 在 %{space_name} 空间中删除了 %{resource_name} 项目"
94
+ update: "%{user_name} 在 %{resource_name} 空间更新 %{space_name} 项目"
95
+ budget:
96
+ view: 查看所有预算项目
97
+ budget_information_modal:
98
+ back_to: 返回 %{component_name}
99
+ close_modal: 关闭模式
100
+ continue: 继续
101
+ more_information: 更多信息
102
+ budgets_list:
103
+ cancel_order:
104
+ more_than_one: 删除您对 %{name} 的投票并开始
105
+ only_one: 删除您的投票并重新开始
106
+ finished_message: 您已经完成投票过程。感谢您的参与!
107
+ highlighted_cta: 对 %{name} 投票
108
+ if_change_opinion: 如果你改变了主意,你可以:
109
+ my_budgets: 我的预算
110
+ voted_on: 您已对 %{links} 投票
111
+ limit_announcement:
112
+ cant_vote: 您不能对此预算进行投票。 <a href="%{landing_path}">请尝试另一个预算</a>。
113
+ limit_reached: 您在 %{links}有活跃的投票。要对此预算进行投票,您必须 <a href="%{landing_path}">删除您的投票并开始于</a> 开始投票。
114
+ models:
115
+ budget:
116
+ fields:
117
+ name: 名称
118
+ projects_count: 项目计数
119
+ total_budget: 预算总额
120
+ project:
121
+ fields:
122
+ title: 标题
123
+ order_summary_mailer:
124
+ order_summary:
125
+ selected_projects: '您选择的项目是:'
126
+ subject: 您已经在 %{space_name} 参与性空间上投票
127
+ voted_on_space: 您在 %{budget_name} 的参与性空间中投票了 %{space_name} 的预算。
128
+ projects:
129
+ budget_confirm:
130
+ are_you_sure: 如果你改变主意,你可以稍后更改你的投票。
131
+ cancel: 取消
132
+ confirm: 确认
133
+ description: 这些是你选择作为预算一部分的项目。
134
+ title: 确认投票
135
+ budget_excess:
136
+ close: 关闭
137
+ description: 此项目超出了最大预算,无法添加。 如果你想要,你可以删除一个你已经选择添加的项目,或者选择你的首选项投票。
138
+ ok: 好的
139
+ title: 超出最大预算
140
+ budget_summary:
141
+ are_you_sure: 您确定要取消您的投票吗?
142
+ assigned: '已指派:'
143
+ cancel_order: 删除您的投票并开始
144
+ checked_out:
145
+ description: 您已经投票给了预算。如果您改变了主意,您可以 %{cancel_link}。
146
+ title: 预算投票完成
147
+ description: 你认为我们应该为哪些项目分配预算? 给您想要的项目分配至少 %{minimum_budget} ,并且以您的首选项投票来定义预算。
148
+ description_minimum_projects_rule: 你认为我们应该为哪些项目分配预算? 选择至少 %{minimum_number} 个项目,您想要并以您的首选项投票来定义预算。
149
+ title: 您决定预算
150
+ count:
151
+ projects_count:
152
+ other: "%{count} 个项目"
153
+ filters:
154
+ category: 类别
155
+ scope: 范围
156
+ search: 搜索
157
+ status: 状态
158
+ status_values:
159
+ all: 所有的
160
+ not_selected: 未选择
161
+ selected: 已选择
162
+ filters_small_view:
163
+ close_modal: 关闭模式
164
+ filter: 筛选器
165
+ filter_by: 筛选方式
166
+ unfold: 展开...
167
+ order_progress:
168
+ vote: 投票
169
+ order_selected_projects:
170
+ remove: 删除
171
+ selected_projects:
172
+ other: 已选择的项目
173
+ view: 查看
174
+ orders:
175
+ highest_cost: 最高成本
176
+ label: 项目订购方式
177
+ lowest_cost: 最低成本
178
+ most_voted: 最多投票
179
+ random: 随机顺序
180
+ selected: 已选择
181
+ project:
182
+ add: 将项目 %{resource_name} 添加到您的投票
183
+ remove: 从您的投票中删除项目 %{resource_name}
184
+ selected: 已选择
185
+ view: 查看
186
+ votes:
187
+ other: 投票
188
+ you_voted: 您投票了
189
+ project_budget_button:
190
+ add: 添加到您的投票
191
+ add_descriptive: 将项目 %{resource_name} 添加到您的投票
192
+ added: 添加到您的投票
193
+ added_descriptive: 项目 %{resource_name} 添加到您的投票
194
+ projects_for: '%{name} 的项目'
195
+ show:
196
+ budget: 三. 预算
197
+ view_all_projects: 查看所有项目
198
+ components:
199
+ budgets:
200
+ actions:
201
+ vote: 投票
202
+ name: 预算
203
+ settings:
204
+ global:
205
+ announcement: 通 知
206
+ comments_enabled: 评论已启用
207
+ comments_max_length: 评论最大长度 (默认值留0)
208
+ form:
209
+ errors:
210
+ budget_voting_rule_only_one: 只能启用一个投票规则
211
+ budget_voting_rule_required: 需要一个投票规则
212
+ landing_page_content: 预算登陆页
213
+ more_information_modal: 更多信息模式
214
+ projects_per_page: 每页项目数
215
+ resources_permissions_enabled: 每次会议都可以设置动作权限
216
+ scope_id: 范围
217
+ scopes_enabled: 范围已启用
218
+ title: 标题
219
+ total_budget: 预算总额
220
+ vote_minimum_budget_projects_number: 要投票的项目最小数量
221
+ vote_rule_minimum_budget_projects_enabled: '启用规则:要投票的项目最小数量'
222
+ vote_rule_threshold_percent_enabled: '启用规则:最小预算百分比'
223
+ vote_threshold_percent: 投票阈值百分比
224
+ workflow: 工作流
225
+ workflow_choices:
226
+ all: '投票:允许参与者在所有预算中投票。'
227
+ one: '一次投票:允许与会者在任何预算中投票,但只能在一个预算中投票。'
228
+ step:
229
+ announcement: 通 知
230
+ comments_blocked: 评论已阻止
231
+ highlighted_heading: 高亮标题
232
+ landing_page_content: 预算登陆页
233
+ list_heading: 列表标题
234
+ more_information_modal: 更多信息模式
235
+ show_votes: 显示投票
236
+ title: 标题
237
+ votes: 表 决
238
+ votes_choices:
239
+ disabled: 投票已禁用
240
+ finished: 投票结束
241
+ events:
242
+ budgets:
243
+ budget_published:
244
+ email_intro: '%{resource_title} 的预算现在为 %{participatory_space_title}激活。您可以从这个页面查看:'
245
+ email_outro: 您收到此通知是因为您正在关注 %{participatory_space_title}。您可以停止收到跟随上一个链接的通知。
246
+ email_subject: '%{resource_title} 的预算现在在 %{participatory_space_title} 处于活动状态。'
247
+ notification_title: <a href="%{resource_path}">%{resource_title}</a> 预算现在已经在 %{participatory_space_title} 中生效。
248
+ orders:
249
+ checkout:
250
+ error: 处理您的投票时出现问题
251
+ success: 您的投票已被接受
252
+ destroy:
253
+ error: 取消投票时出现问题
254
+ success: 您的投票已成功取消
255
+ resource_links:
256
+ included_proposals:
257
+ project_proposal: '本项目中的建议:'
258
+ index:
259
+ confirmed_orders_count: 所得票数
260
+ total_budget: 预算总额
@@ -0,0 +1 @@
1
+ zh-TW:
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateDecidimBudgets < ActiveRecord::Migration[5.0]
4
+ def change
5
+ create_table :decidim_budgets_budgets do |t|
6
+ t.jsonb :title
7
+ t.integer :weight, null: false, default: 0
8
+ t.jsonb :description
9
+ t.integer :total_budget, default: 0
10
+ t.references :decidim_component, index: true
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameBudgetToBudgetAmmount < ActiveRecord::Migration[5.2]
4
+ def change
5
+ rename_column :decidim_budgets_projects, :budget, :budget_amount
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddBudgetReferenceToProject < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_reference :decidim_budgets_projects, :decidim_budgets_budget, foreign_key: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddBudgetReferenceToOrder < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_reference :decidim_budgets_orders, :decidim_budgets_budget, foreign_key: true
6
+ end
7
+ end
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MoveBudgetsToOwnModel < ActiveRecord::Migration[5.2]
4
+ class Component < ApplicationRecord
5
+ self.table_name = :decidim_components
6
+ end
7
+
8
+ class Budget < ApplicationRecord
9
+ self.table_name = :decidim_budgets_budgets
10
+ end
11
+
12
+ class Project < ApplicationRecord
13
+ self.table_name = :decidim_budgets_projects
14
+ end
15
+
16
+ class Order < ApplicationRecord
17
+ self.table_name = :decidim_budgets_orders
18
+ end
19
+
20
+ def up
21
+ Project.reset_column_information
22
+ Order.reset_column_information
23
+
24
+ budget_components.each do |component|
25
+ resource = create_budget_resource_from(component)
26
+
27
+ add_budget_references_to_projects(resource)
28
+ add_budget_reference_to_orders(resource)
29
+ end
30
+
31
+ remove_column :decidim_budgets_projects, :decidim_component_id
32
+ remove_column :decidim_budgets_orders, :decidim_component_id
33
+ end
34
+
35
+ def down
36
+ add_column :decidim_budgets_projects, :decidim_component_id, :integer, index: true
37
+ add_column :decidim_budgets_orders, :decidim_component_id, :integer, index: true
38
+
39
+ Budget.find_each do |resource|
40
+ revert_budget_to_component(resource)
41
+ if resource
42
+ add_component_reference_to_projects(resource)
43
+ add_component_reference_to_orders(resource)
44
+ end
45
+ end
46
+ end
47
+
48
+ # up methods
49
+ def budget_components
50
+ @budget_components ||= Component.where(manifest_name: "budgets")
51
+ end
52
+
53
+ def create_budget_resource_from(component)
54
+ component_total_budget = if component["settings"].dig("global", "total_budget")
55
+ component["settings"]["global"]["total_budget"]
56
+ else
57
+ 100_000_000
58
+ end
59
+
60
+ Budget.create!(
61
+ decidim_component_id: component.id,
62
+ total_budget: component_total_budget,
63
+ title: component.name
64
+ )
65
+ end
66
+
67
+ def add_budget_references_to_projects(resource)
68
+ # rubocop:disable Rails/SkipsModelValidations
69
+ Project.where(decidim_component_id: resource.decidim_component_id)
70
+ .update_all(decidim_budgets_budget_id: resource.id)
71
+ # rubocop:enable Rails/SkipsModelValidations
72
+ end
73
+
74
+ def add_budget_reference_to_orders(resource)
75
+ # rubocop:disable Rails/SkipsModelValidations
76
+ Order.where(decidim_component_id: resource.decidim_component_id)
77
+ .update_all(decidim_budgets_budget_id: resource.id)
78
+ # rubocop:enable Rails/SkipsModelValidations
79
+ end
80
+
81
+ # down methods
82
+
83
+ def revert_budget_to_component(resource)
84
+ component = Component.find_by(id: resource.decidim_component_id, manifest_name: "budgets")
85
+ component_settings = if resource.total_budget && component["settings"].try(:key?, "global")
86
+ component["settings"]["global"].merge!(total_budget: resource.total_budget)
87
+ component["settings"]
88
+ end
89
+
90
+ component.update!(
91
+ settings: component_settings,
92
+ name: resource.title
93
+ )
94
+ end
95
+
96
+ def add_component_reference_to_orders(resource)
97
+ # rubocop:disable Rails/SkipsModelValidations
98
+ Order.where(decidim_budgets_budget_id: resource.id)
99
+ .update_all(decidim_component_id: resource.decidim_component_id)
100
+ # rubocop:enable Rails/SkipsModelValidations
101
+ end
102
+
103
+ def add_component_reference_to_projects(resource)
104
+ # rubocop:disable Rails/SkipsModelValidations
105
+ Project.where(decidim_budgets_budget_id: resource.id)
106
+ .update_all(decidim_component_id: resource.decidim_component_id)
107
+ # rubocop:enable Rails/SkipsModelValidations
108
+ end
109
+ end