decidim-lausanne-budgets 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +141 -0
- data/Rakefile +93 -0
- data/app/cells/decidim/lausanne/budgets/base_cell.rb +24 -0
- data/app/cells/decidim/lausanne/budgets/budget_cell.rb +23 -0
- data/app/cells/decidim/lausanne/budgets/budget_information_modal/show.erb +21 -0
- data/app/cells/decidim/lausanne/budgets/budget_information_modal_cell.rb +24 -0
- data/app/cells/decidim/lausanne/budgets/budget_list_item/show.erb +21 -0
- data/app/cells/decidim/lausanne/budgets/budget_list_item_cell.rb +43 -0
- data/app/cells/decidim/lausanne/budgets/budget_m/data.erb +12 -0
- data/app/cells/decidim/lausanne/budgets/budget_m/footer.erb +5 -0
- data/app/cells/decidim/lausanne/budgets/budget_m_cell.rb +18 -0
- data/app/cells/decidim/lausanne/budgets/budgets_header/show.erb +7 -0
- data/app/cells/decidim/lausanne/budgets/budgets_header_cell.rb +16 -0
- data/app/cells/decidim/lausanne/budgets/budgets_list/card_list.erb +7 -0
- data/app/cells/decidim/lausanne/budgets/budgets_list/highlighted.erb +11 -0
- data/app/cells/decidim/lausanne/budgets/budgets_list/show.erb +20 -0
- data/app/cells/decidim/lausanne/budgets/budgets_list/voted.erb +43 -0
- data/app/cells/decidim/lausanne/budgets/budgets_list_cell.rb +40 -0
- data/app/cells/decidim/lausanne/budgets/limit_announcement_cell.rb +47 -0
- data/app/cells/decidim/lausanne/budgets/project_cell.rb +23 -0
- data/app/cells/decidim/lausanne/budgets/project_list_item/project_data.erb +19 -0
- data/app/cells/decidim/lausanne/budgets/project_list_item/project_data_vote_button.erb +22 -0
- data/app/cells/decidim/lausanne/budgets/project_list_item/project_image.erb +5 -0
- data/app/cells/decidim/lausanne/budgets/project_list_item/project_text.erb +23 -0
- data/app/cells/decidim/lausanne/budgets/project_list_item/show.erb +5 -0
- data/app/cells/decidim/lausanne/budgets/project_list_item_cell.rb +75 -0
- data/app/cells/decidim/lausanne/budgets/project_m/data.erb +12 -0
- data/app/cells/decidim/lausanne/budgets/project_m/footer.erb +5 -0
- data/app/cells/decidim/lausanne/budgets/project_m_cell.rb +24 -0
- data/app/cells/decidim/lausanne/budgets/project_selected_status_cell.rb +30 -0
- data/app/cells/decidim/lausanne/budgets/project_tags/show.erb +4 -0
- data/app/cells/decidim/lausanne/budgets/project_tags_cell.rb +20 -0
- data/app/cells/decidim/lausanne/budgets/project_voted_hint_cell.rb +35 -0
- data/app/cells/decidim/lausanne/budgets/project_votes_count_cell.rb +46 -0
- data/app/commands/decidim/lausanne/budgets/add_line_item.rb +54 -0
- data/app/commands/decidim/lausanne/budgets/admin/create_budget.rb +50 -0
- data/app/commands/decidim/lausanne/budgets/admin/create_project.rb +71 -0
- data/app/commands/decidim/lausanne/budgets/admin/destroy_budget.rb +44 -0
- data/app/commands/decidim/lausanne/budgets/admin/destroy_project.rb +44 -0
- data/app/commands/decidim/lausanne/budgets/admin/import_proposals_to_budgets.rb +87 -0
- data/app/commands/decidim/lausanne/budgets/admin/update_budget.rb +50 -0
- data/app/commands/decidim/lausanne/budgets/admin/update_project.rb +79 -0
- data/app/commands/decidim/lausanne/budgets/cancel_order.rb +46 -0
- data/app/commands/decidim/lausanne/budgets/checkout.rb +43 -0
- data/app/commands/decidim/lausanne/budgets/command.rb +16 -0
- data/app/commands/decidim/lausanne/budgets/create_user_record.rb +39 -0
- data/app/commands/decidim/lausanne/budgets/remove_line_item.rb +40 -0
- data/app/commands/decidim/lausanne/budgets/update_user_record.rb +40 -0
- data/app/controllers/concerns/decidim/lausanne/budgets/needs_current_order.rb +52 -0
- data/app/controllers/concerns/decidim/lausanne/budgets/orderable.rb +54 -0
- data/app/controllers/decidim/lausanne/budgets/admin/application_controller.rb +34 -0
- data/app/controllers/decidim/lausanne/budgets/admin/attachment_collections_controller.rb +27 -0
- data/app/controllers/decidim/lausanne/budgets/admin/attachments_controller.rb +28 -0
- data/app/controllers/decidim/lausanne/budgets/admin/lausanne_budgets_controller.rb +105 -0
- data/app/controllers/decidim/lausanne/budgets/admin/projects_controller.rb +98 -0
- data/app/controllers/decidim/lausanne/budgets/admin/proposals_imports_controller.rb +43 -0
- data/app/controllers/decidim/lausanne/budgets/application_controller.rb +77 -0
- data/app/controllers/decidim/lausanne/budgets/lausanne_budgets_controller.rb +29 -0
- data/app/controllers/decidim/lausanne/budgets/line_items_controller.rb +63 -0
- data/app/controllers/decidim/lausanne/budgets/orders_controller.rb +59 -0
- data/app/controllers/decidim/lausanne/budgets/projects_controller.rb +103 -0
- data/app/controllers/decidim/lausanne/budgets/user_records_controller.rb +121 -0
- data/app/forms/decidim/lausanne/budgets/admin/component_form.rb +93 -0
- data/app/forms/decidim/lausanne/budgets/admin/lausanne_budget_form.rb +41 -0
- data/app/forms/decidim/lausanne/budgets/admin/project_form.rb +96 -0
- data/app/forms/decidim/lausanne/budgets/admin/project_import_proposals_form.rb +52 -0
- data/app/forms/decidim/lausanne/budgets/user_record_form.rb +61 -0
- data/app/helpers/decidim/lausanne/budgets/admin/application_helper.rb +15 -0
- data/app/helpers/decidim/lausanne/budgets/application_helper.rb +26 -0
- data/app/helpers/decidim/lausanne/budgets/projects_helper.rb +103 -0
- data/app/jobs/decidim/lausanne/budgets/send_order_summary_job.rb +17 -0
- data/app/mailers/decidim/lausanne/budgets/order_summary_mailer.rb +38 -0
- data/app/models/decidim/lausanne/budgets/application_record.rb +12 -0
- data/app/models/decidim/lausanne/budgets/lausanne_budget.rb +37 -0
- data/app/models/decidim/lausanne/budgets/line_item.rb +23 -0
- data/app/models/decidim/lausanne/budgets/order.rb +204 -0
- data/app/models/decidim/lausanne/budgets/project.rb +129 -0
- data/app/models/decidim/lausanne/budgets/user_record.rb +28 -0
- data/app/packs/entrypoints/decidim_lausanne_budgets.js +2 -0
- data/app/packs/images/decidim/lausanne/budgets/icon.svg +1 -0
- data/app/packs/images/decidim/lausanne/budgets/lausanneparticipe.gif +0 -0
- data/app/packs/src/decidim/lausanne/budgets/index.js +1 -0
- data/app/packs/src/decidim/lausanne/budgets/progressFixed.js.es6 +23 -0
- data/app/packs/src/decidim/lausanne/budgets/projects.js.es6 +66 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/_budgets.scss +13 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_budget-list.scss +195 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_budget-meter.scss +85 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_print.scss +73 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_progress.scss +25 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_proposal_link.scss +38 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_share_buttons.scss +15 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_user_record_form.scss +8 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_votation-progress.scss +100 -0
- data/app/packs/stylesheets/decidim/lausanne/budgets/budget/_voting-rules.scss +20 -0
- data/app/permissions/decidim/lausanne/budgets/admin/permissions.rb +49 -0
- data/app/permissions/decidim/lausanne/budgets/permissions.rb +63 -0
- data/app/presenters/decidim/lausanne/budgets/admin_log/budget_presenter.rb +44 -0
- data/app/presenters/decidim/lausanne/budgets/admin_log/project_presenter.rb +44 -0
- data/app/queries/decidim/lausanne/budgets/filtered_projects.rb +47 -0
- data/app/queries/decidim/lausanne/budgets/metrics/budget_followers_metric_measure.rb +34 -0
- data/app/queries/decidim/lausanne/budgets/metrics/budget_participants_metric_measure.rb +29 -0
- data/app/queries/decidim/lausanne/budgets/query.rb +16 -0
- data/app/serializers/decidim/lausanne/budgets/data_portability_budgets_order_serializer.rb +46 -0
- data/app/services/decidim/lausanne/budgets/project_search.rb +65 -0
- data/app/services/decidim/lausanne/budgets/project_search_rs.rb +13 -0
- data/app/views/decidim/lausanne/budgets/admin/lausanne_budgets/_form.html.erb +23 -0
- data/app/views/decidim/lausanne/budgets/admin/lausanne_budgets/edit.html.erb +7 -0
- data/app/views/decidim/lausanne/budgets/admin/lausanne_budgets/index.html.erb +75 -0
- data/app/views/decidim/lausanne/budgets/admin/lausanne_budgets/new.html.erb +7 -0
- data/app/views/decidim/lausanne/budgets/admin/projects/_form.html.erb +47 -0
- data/app/views/decidim/lausanne/budgets/admin/projects/edit.html.erb +7 -0
- data/app/views/decidim/lausanne/budgets/admin/projects/index.html.erb +82 -0
- data/app/views/decidim/lausanne/budgets/admin/projects/new.html.erb +7 -0
- data/app/views/decidim/lausanne/budgets/admin/projects/proposals_picker.html.erb +1 -0
- data/app/views/decidim/lausanne/budgets/admin/proposals_imports/new.html.erb +32 -0
- data/app/views/decidim/lausanne/budgets/lausanne_budgets/index.html.erb +5 -0
- data/app/views/decidim/lausanne/budgets/line_items/update_budget.js.erb +41 -0
- data/app/views/decidim/lausanne/budgets/order_summary_mailer/order_summary.html.erb +22 -0
- data/app/views/decidim/lausanne/budgets/orders/show.html.erb +71 -0
- data/app/views/decidim/lausanne/budgets/projects/_budget_confirm.html.erb +37 -0
- data/app/views/decidim/lausanne/budgets/projects/_budget_excess.html.erb +14 -0
- data/app/views/decidim/lausanne/budgets/projects/_budget_summary.html.erb +95 -0
- data/app/views/decidim/lausanne/budgets/projects/_count.html.erb +1 -0
- data/app/views/decidim/lausanne/budgets/projects/_filters.html.erb +34 -0
- data/app/views/decidim/lausanne/budgets/projects/_filters_small_view.html.erb +18 -0
- data/app/views/decidim/lausanne/budgets/projects/_linked_projects.html.erb +12 -0
- data/app/views/decidim/lausanne/budgets/projects/_order_progress.html.erb +32 -0
- data/app/views/decidim/lausanne/budgets/projects/_order_selected_projects.html.erb +27 -0
- data/app/views/decidim/lausanne/budgets/projects/_order_total_budget.html.erb +7 -0
- data/app/views/decidim/lausanne/budgets/projects/_project.html.erb +1 -0
- data/app/views/decidim/lausanne/budgets/projects/_project_budget_button.html.erb +46 -0
- data/app/views/decidim/lausanne/budgets/projects/_projects.html.erb +13 -0
- data/app/views/decidim/lausanne/budgets/projects/_user_record_form.html.erb +40 -0
- data/app/views/decidim/lausanne/budgets/projects/_votation_banner.html.erb +71 -0
- data/app/views/decidim/lausanne/budgets/projects/index.html.erb +36 -0
- data/app/views/decidim/lausanne/budgets/projects/index.js.erb +10 -0
- data/app/views/decidim/lausanne/budgets/projects/show.html.erb +81 -0
- data/app/views/decidim/lausanne/budgets/user_records/edit.html.erb +6 -0
- data/app/views/decidim/proposals/proposals/show.html.erb +172 -0
- data/app/views/layouts/lausanne_budgets/print.erb +12 -0
- data/config/assets.rb +11 -0
- data/config/initializers/social_share.rb +3 -0
- data/config/locales/fr.yml +381 -0
- data/config/routes.rb +7 -0
- data/db/migrate/20170127114122_create_lausanne_projects.rb +15 -0
- data/db/migrate/20170127114123_create_lausanne_user_records.rb +14 -0
- data/db/migrate/20170130095615_create_lausanne_orders.rb +16 -0
- data/db/migrate/20170130101825_create_lausanne_line_items.rb +12 -0
- data/db/migrate/20170215132708_add_lausanne_reference_to_projects.rb +13 -0
- data/db/migrate/20200617105120_create_decidim_lausanne_budgets.rb +15 -0
- data/db/migrate/20200629134013_add_lausanne_budget_reference_to_project.rb +7 -0
- data/db/migrate/20200706142609_add_lausanne_budget_reference_to_order.rb +7 -0
- data/db/migrate/20200714103519_move_lausanne_budgets_to_own_model.rb +109 -0
- data/db/migrate/20200717140012_add_lausanne_scope_to_budgets.rb +7 -0
- data/db/migrate/20200728075039_add_lausanne_selected_at_to_project.rb +7 -0
- data/db/migrate/20200804175222_lausanne_votes_enabled_to_votes_choices.rb +35 -0
- data/db/migrate/20200827154129_add_lausanne_commentable_counter_cache_to_projects.rb +9 -0
- data/db/migrate/20210310120613_add_lausanne_followable_counter_cache_to_budgets.rb +16 -0
- data/db/migrate/20210508180613_add_checkboxes_to_user_record.rb +9 -0
- data/db/migrate/20221001151237_add_excerpt_to_decidim_lausanne_budgets_project.rb +7 -0
- data/lib/decidim/lausanne/budgets/admin.rb +12 -0
- data/lib/decidim/lausanne/budgets/admin_engine.rb +40 -0
- data/lib/decidim/lausanne/budgets/component.rb +107 -0
- data/lib/decidim/lausanne/budgets/current_user_record_middleware.rb +17 -0
- data/lib/decidim/lausanne/budgets/engine.rb +57 -0
- data/lib/decidim/lausanne/budgets/project_serializer.rb +83 -0
- data/lib/decidim/lausanne/budgets/seeds/Exampledocument.pdf +0 -0
- data/lib/decidim/lausanne/budgets/seeds/city.jpeg +0 -0
- data/lib/decidim/lausanne/budgets/test/factories.rb +169 -0
- data/lib/decidim/lausanne/budgets/version.rb +15 -0
- data/lib/decidim/lausanne/budgets/workflows/all.rb +22 -0
- data/lib/decidim/lausanne/budgets/workflows/base.rb +140 -0
- data/lib/decidim/lausanne/budgets/workflows/one.rb +35 -0
- data/lib/decidim/lausanne/budgets/workflows.rb +19 -0
- data/lib/decidim/lausanne/budgets.rb +17 -0
- metadata +372 -0
@@ -0,0 +1,172 @@
|
|
1
|
+
<% add_decidim_meta_tags({
|
2
|
+
description: present(@proposal).body,
|
3
|
+
title: present(@proposal).title,
|
4
|
+
url: proposal_url(@proposal.id)
|
5
|
+
}) %>
|
6
|
+
|
7
|
+
<%
|
8
|
+
edit_link(
|
9
|
+
resource_locator(@proposal).edit,
|
10
|
+
:edit,
|
11
|
+
:proposal,
|
12
|
+
proposal: @proposal
|
13
|
+
)
|
14
|
+
%>
|
15
|
+
|
16
|
+
<%
|
17
|
+
extra_admin_link(
|
18
|
+
resource_locator(@proposal).show(anchor: "proposal-answer"),
|
19
|
+
:create,
|
20
|
+
:proposal_answer,
|
21
|
+
{ proposal: @proposal },
|
22
|
+
{ name: t(".answer"), icon: "comment-square" }
|
23
|
+
)
|
24
|
+
%>
|
25
|
+
|
26
|
+
<%= render partial: "voting_rules" %>
|
27
|
+
<% if component_settings.participatory_texts_enabled? %>
|
28
|
+
<div class="row column">
|
29
|
+
<div class="section text-medium">
|
30
|
+
<%= t(".back_to") %> <u><%= link_to translated_attribute(@participatory_text.title), main_component_path(current_component) %></u>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
<% end %>
|
34
|
+
<%= emendation_announcement_for @proposal %>
|
35
|
+
<div class="row column view-header">
|
36
|
+
|
37
|
+
<div class="m-bottom">
|
38
|
+
<%= link_to proposals_path, class: "small hollow" do %>
|
39
|
+
<%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
|
40
|
+
<%= t(".back_to_list") %>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<% if @proposal.emendation? %>
|
45
|
+
<h3 class="heading3"><%= t(".changes_at_title", title: present(@proposal.amendable).title(links: true, html_escape: true)) %></h3>
|
46
|
+
<% else %>
|
47
|
+
<h3 class="heading3"><%= present(@proposal).title(links: true, html_escape: true) %></h3>
|
48
|
+
<% end %>
|
49
|
+
<% unless component_settings.participatory_texts_enabled? %>
|
50
|
+
<%= cell("decidim/coauthorships", @proposal, has_actions: true, size: 3, context: { current_user: current_user }) %>
|
51
|
+
<% end %>
|
52
|
+
</div>
|
53
|
+
<div class="row">
|
54
|
+
<div class="columns mediumlarge-8 large-9">
|
55
|
+
<div class="section">
|
56
|
+
<% if @proposal.emendation? %>
|
57
|
+
<%= cell("decidim/diff", proposal_presenter.versions.last) %>
|
58
|
+
<% elsif not ["section","subsection"].include? @proposal.participatory_text_level %>
|
59
|
+
<%== cell("decidim/proposals/proposal_m", @proposal, full_badge: true).badge %>
|
60
|
+
<%= render_proposal_body(@proposal) %>
|
61
|
+
<% end %>
|
62
|
+
<% if component_settings.geocoding_enabled? %>
|
63
|
+
<%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @proposal } %>
|
64
|
+
<% end %>
|
65
|
+
<% if proposal_has_costs? && current_settings.answers_with_costs? %>
|
66
|
+
<%= cell("decidim/proposals/cost_report", @proposal) %>
|
67
|
+
<% end %>
|
68
|
+
<%= cell "decidim/proposals/proposal_tags", @proposal %>
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<%= cell("decidim/announcement", proposal_reason_callout_announcement, callout_class: proposal_reason_callout_class) if @proposal.answered? && @proposal.published_state? %>
|
72
|
+
<% lausanne_project = Decidim::Lausanne::Budgets::Project.joins(:resource_links_from).where(
|
73
|
+
decidim_resource_links: {to_id: @proposal.id, to_type: "Decidim::Proposals::Proposal"}
|
74
|
+
).first %>
|
75
|
+
<% if lausanne_project %>
|
76
|
+
<div class="vote_link">
|
77
|
+
<div class="vote_link__text">
|
78
|
+
<h3><%= t("decidim.lausanne.budgets.linked_project.cta.title") %></h3>
|
79
|
+
<p>
|
80
|
+
<%= raw t(
|
81
|
+
"decidim.lausanne.budgets.linked_project.cta.description",
|
82
|
+
link: resource_locator([lausanne_project.budget, lausanne_project]).url
|
83
|
+
) %>
|
84
|
+
</p>
|
85
|
+
</div>
|
86
|
+
<div style="display:flex;">
|
87
|
+
<%= link_to resource_locator([lausanne_project.budget, lausanne_project]).url, class: "vote_link__action button " do %>
|
88
|
+
<%= t("decidim.lausanne.budgets.linked_project.cta.action") %>
|
89
|
+
<% end %>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
<% end %>
|
93
|
+
<%= linked_resources_for @proposal, :results, "included_proposals" %>
|
94
|
+
<%= linked_resources_for @proposal, :meetings, "proposals_from_meeting" %>
|
95
|
+
<%= linked_resources_for @proposal, :proposals, "copied_from_component" %>
|
96
|
+
|
97
|
+
|
98
|
+
<%= cell "decidim/endorsers_list", @proposal %>
|
99
|
+
<%= amendments_for @proposal %>
|
100
|
+
</div>
|
101
|
+
<div class="columns section view-side mediumlarge-4 large-3">
|
102
|
+
<% if @proposal.amendable? && allowed_to?(:edit, :proposal, proposal: @proposal) %>
|
103
|
+
<%= link_to t(".edit_proposal"), edit_proposal_path(@proposal), class: "button hollow expanded button--sc" %>
|
104
|
+
<% else %>
|
105
|
+
<%= amend_button_for @proposal %>
|
106
|
+
<% end %>
|
107
|
+
|
108
|
+
<%= emendation_actions_for @proposal %>
|
109
|
+
|
110
|
+
<% if current_settings.votes_enabled? || show_endorsements_card? || current_user %>
|
111
|
+
<% if @proposal.withdrawn? %>
|
112
|
+
<div class="card">
|
113
|
+
<div class="card__content">
|
114
|
+
<% if lausanne_project %>
|
115
|
+
<%= link_to resource_locator([lausanne_project.budget, lausanne_project]).url, class: "primary button expanded" do %>
|
116
|
+
<%= t("decidim.lausanne.budgets.linked_project.button") %>
|
117
|
+
<% end %>
|
118
|
+
<% end %>
|
119
|
+
<% if current_settings.votes_enabled? %>
|
120
|
+
<%= render partial: "votes_count", locals: { proposal: @proposal, from_proposals_list: false } %>
|
121
|
+
<% end %>
|
122
|
+
</div>
|
123
|
+
</div>
|
124
|
+
<% else %>
|
125
|
+
<div class="card">
|
126
|
+
<div class="card__content">
|
127
|
+
<% if lausanne_project %>
|
128
|
+
<%= link_to resource_locator([lausanne_project.budget, lausanne_project]).url, class: "primary button expanded" do %>
|
129
|
+
<%= t("decidim.lausanne.budgets.linked_project.button") %>
|
130
|
+
<% end %>
|
131
|
+
<% end %>
|
132
|
+
<% if current_settings.votes_enabled? %>
|
133
|
+
<%= render partial: "votes_count", locals: { proposal: @proposal, from_proposals_list: false } %>
|
134
|
+
<%= render partial: "vote_button", locals: { proposal: @proposal, from_proposals_list: false } %>
|
135
|
+
<% end %>
|
136
|
+
<div class="row collapse buttons__row">
|
137
|
+
|
138
|
+
<% if endorsements_enabled? %>
|
139
|
+
<div class="column small-9 collapse">
|
140
|
+
<%= endorsement_buttons_cell(@proposal) %>
|
141
|
+
</div>
|
142
|
+
<% end %>
|
143
|
+
<div class="column collapse <%= endorsements_enabled? ? "small-3" : "" %>">
|
144
|
+
<%= link_to "#comments", class: "button small compact hollow secondary button--nomargin expanded" do %>
|
145
|
+
<span class="show-for-sr"><%= present(@proposal).title(html_escape: true) %></span>
|
146
|
+
<%= icon "comment-square", class: "icon--small", aria_label: t(".comments"), role: "img" %> <%= @proposal.comments_count %>
|
147
|
+
<% end %>
|
148
|
+
</div>
|
149
|
+
</div>
|
150
|
+
<br>
|
151
|
+
<%= follow_button_for(@proposal) %>
|
152
|
+
</div>
|
153
|
+
</div>
|
154
|
+
<% end %>
|
155
|
+
<% end %>
|
156
|
+
|
157
|
+
<%= amenders_list_for(@proposal) %>
|
158
|
+
|
159
|
+
<%= resource_reference(@proposal) %>
|
160
|
+
<%= resource_version(proposal_presenter, versions_path: proposal_versions_path(@proposal)) %>
|
161
|
+
<%= cell("decidim/fingerprint", @proposal) %>
|
162
|
+
<%= render partial: "decidim/shared/share_modal", locals: { resource: @proposal } %>
|
163
|
+
<%= embed_modal_for proposal_widget_url(@proposal, format: :js) %>
|
164
|
+
<%= cell "decidim/proposals/proposal_link_to_collaborative_draft", @proposal %>
|
165
|
+
<%= cell "decidim/proposals/proposal_link_to_rejected_emendation", @proposal %>
|
166
|
+
</div>
|
167
|
+
</div>
|
168
|
+
<%= attachments_for @proposal %>
|
169
|
+
|
170
|
+
<%= comments_for @proposal %>
|
171
|
+
|
172
|
+
<%= cell("decidim/flag_modal", @proposal) %>
|
data/config/assets.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
base_path = File.expand_path("..", __dir__)
|
4
|
+
|
5
|
+
Decidim::Webpacker.register_path("#{base_path}/app/packs")
|
6
|
+
|
7
|
+
Decidim::Webpacker.register_entrypoints(
|
8
|
+
decidim_lausanne_budgets: "#{base_path}/app/packs/entrypoints/decidim_lausanne_budgets.js"
|
9
|
+
)
|
10
|
+
|
11
|
+
Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/lausanne/budgets/budgets")
|
@@ -0,0 +1,381 @@
|
|
1
|
+
fr:
|
2
|
+
social_share_button:
|
3
|
+
whatsapp_app: Whatsapp
|
4
|
+
whatsapp_web: Whatsapp
|
5
|
+
activemodel:
|
6
|
+
attributes:
|
7
|
+
budget:
|
8
|
+
decidim_scope_id: Secteur
|
9
|
+
description: Description
|
10
|
+
title: Titre
|
11
|
+
total_budget: Budget total
|
12
|
+
weight: Rang d'affichage
|
13
|
+
user_record:
|
14
|
+
first_name: "Prénom"
|
15
|
+
last_name: "Nom de famille"
|
16
|
+
birthdate: "Date de naissance"
|
17
|
+
allow_process_data: "J'autorise que mes données personnelles soient comparées au registre des habitants dans le but de dépouiller les votes."
|
18
|
+
its_me: "Ces informations sont vérifidiques et m'appartiennent"
|
19
|
+
iam_lausanne: "Je suis résident.e à Lausanne"
|
20
|
+
project:
|
21
|
+
budget_amount: Montant du budget
|
22
|
+
decidim_category_id: Catégorie
|
23
|
+
decidim_scope_id: Périmètre d'application
|
24
|
+
description: Description
|
25
|
+
excerpt: Résumer
|
26
|
+
proposal_ids: Propositions liées
|
27
|
+
selected: Sélectionné pour l'implémentation
|
28
|
+
title: Titre
|
29
|
+
activerecord:
|
30
|
+
models:
|
31
|
+
decidim/lausanne/budgets/project:
|
32
|
+
one: Projet
|
33
|
+
other: Projets
|
34
|
+
decidim:
|
35
|
+
user_record:
|
36
|
+
create:
|
37
|
+
success: "Données personnelles enregistrées. Vous pouvez commencer à voter."
|
38
|
+
lausanne_budgets:
|
39
|
+
admin:
|
40
|
+
exports:
|
41
|
+
projects: Projets
|
42
|
+
models:
|
43
|
+
budget:
|
44
|
+
name: Budget
|
45
|
+
project:
|
46
|
+
name: Projet
|
47
|
+
lausanne_budgets:
|
48
|
+
create:
|
49
|
+
success: "Budget créé"
|
50
|
+
update:
|
51
|
+
success: "Budget mis à jour"
|
52
|
+
proposals_imports:
|
53
|
+
create:
|
54
|
+
success: Propositions importées
|
55
|
+
actions:
|
56
|
+
attachment_collections: Dossiers
|
57
|
+
attachments: Documents liés
|
58
|
+
confirm_destroy: Êtes-vous certain de vouloir supprimer ce projet?
|
59
|
+
destroy: Supprimer
|
60
|
+
edit: Modifier
|
61
|
+
edit_projects: Gérer les projets
|
62
|
+
import: Importer des propositions dans des projets
|
63
|
+
new: Nouveau %{name}
|
64
|
+
preview: Aperçu
|
65
|
+
title: Actions
|
66
|
+
models:
|
67
|
+
budget:
|
68
|
+
fields:
|
69
|
+
name: Nom
|
70
|
+
projects_count: Nombre de projets
|
71
|
+
total_budget: Budget total
|
72
|
+
project:
|
73
|
+
fields:
|
74
|
+
title: Titre
|
75
|
+
|
76
|
+
lausanne:
|
77
|
+
budgets:
|
78
|
+
admin:
|
79
|
+
lausanne_budgets:
|
80
|
+
create:
|
81
|
+
invalid: Un problème est survenu lors de la création de ce budget
|
82
|
+
success: Budget créé avec succès
|
83
|
+
destroy:
|
84
|
+
invalid: Un problème est survenu lors de la suppression de ce budget
|
85
|
+
success: Budget supprimé avec succès
|
86
|
+
edit:
|
87
|
+
title: Modifier le budget
|
88
|
+
update: Mettre à jour le budget
|
89
|
+
index:
|
90
|
+
finished_orders: Votes terminés
|
91
|
+
pending_orders: Votes en cours
|
92
|
+
title: Budgets
|
93
|
+
users_with_finished_orders: Utilisateurs ayant fini leur vote
|
94
|
+
users_with_pending_orders: Utilisateurs ayant des votes en attente
|
95
|
+
new:
|
96
|
+
create: Créer un budget
|
97
|
+
title: Nouveau budget
|
98
|
+
update:
|
99
|
+
invalid: Un problème est survenu lors de la mise à jour de ce budget
|
100
|
+
success: Budget mis à jour avec succès
|
101
|
+
|
102
|
+
projects:
|
103
|
+
create:
|
104
|
+
invalid: Il y a eu un problème lors de la création de ce projet
|
105
|
+
success: Projet créé avec succès
|
106
|
+
destroy:
|
107
|
+
success: Projet supprimé avec succès
|
108
|
+
edit:
|
109
|
+
title: Éditer un projet
|
110
|
+
update: Mettre à jour
|
111
|
+
index:
|
112
|
+
finished_orders: Votes terminés
|
113
|
+
pending_orders: Votes en cours
|
114
|
+
selected: Sélectionné
|
115
|
+
title: Projets
|
116
|
+
new:
|
117
|
+
create: Créer
|
118
|
+
title: Nouveau projet
|
119
|
+
update:
|
120
|
+
invalid: Il y a eu un problème lors de la mise à jour de ce projet
|
121
|
+
success: Projet mis à jour avec succès
|
122
|
+
proposals_imports:
|
123
|
+
create:
|
124
|
+
invalid: Un problème est survenu lors de l'importation des propositions dans des projets
|
125
|
+
success: "%{number} propositions importées avec succès dans des projets"
|
126
|
+
new:
|
127
|
+
create: Importer des propositions dans des projets
|
128
|
+
no_components: Il n'y a pas d'autres modules de proposition dans cet espace participatif pour importer les propositions dans des projets.
|
129
|
+
select_component: Veuillez sélectionner un module
|
130
|
+
title: Importer des propositions
|
131
|
+
admin_log:
|
132
|
+
budget:
|
133
|
+
create: "%{user_name} a créé le budget %{resource_name} dans l'espace %{space_name}"
|
134
|
+
delete: "%{user_name} a supprimé le budget %{resource_name} dans l'espace %{space_name}"
|
135
|
+
update: "%{user_name} a mis à jour le budget %{resource_name} dans l'espace %{space_name}"
|
136
|
+
project:
|
137
|
+
create: "%{user_name} a créé le projet %{resource_name} dans l'espace %{space_name}"
|
138
|
+
delete: "%{user_name} a supprimé le projet %{resource_name} dans l'espace %{space_name}"
|
139
|
+
update: "%{user_name} a mis à jour le projet %{resource_name} dans l'espace %{space_name}"
|
140
|
+
budget:
|
141
|
+
view: Retour aux projets
|
142
|
+
budget_information_modal:
|
143
|
+
back_to: Retour à %{component_name}
|
144
|
+
close_modal: Fermer la fenêtre de dialogue
|
145
|
+
continue: Continuer
|
146
|
+
more_information: Plus d'information
|
147
|
+
budgets_list:
|
148
|
+
cancel_order:
|
149
|
+
more_than_one: supprimer votre vote sur %{name} et recommencer
|
150
|
+
only_one: supprimer votre vote et recommencez.
|
151
|
+
finished_message: Vous avez terminé le processus de vote. Merci de votre participation !
|
152
|
+
highlighted_cta: Voter pour %{name}
|
153
|
+
if_change_opinion: Si vous avez changé d'avis, vous pouvez
|
154
|
+
my_budgets: Mes Budgets
|
155
|
+
voted_on: Vous avez voté sur %{links}
|
156
|
+
limit_announcement:
|
157
|
+
cant_vote: Vous ne pouvez pas voter sur ce budget. <a href="%{landing_path}">Essayez sur un autre budget</a>.
|
158
|
+
limit_reached: Vous avez des votes actifs dans %{links}. Pour voter sur ce budget, vous devez <a href="%{landing_path}">supprimer votre vote et recommencer</a>.
|
159
|
+
order_summary_mailer:
|
160
|
+
order_summary:
|
161
|
+
selected_projects: "Les projets que vous avez sélectionnés sont :"
|
162
|
+
subject: Vous avez voté sur l'espace participatif %{space_name}
|
163
|
+
voted_on_space: Vous avez voté sur le budget %{budget_name} pour l'espace participatif %{space_name}.
|
164
|
+
voted_on_space_with_scope: Vous avez voté sur le budget %{budget_name} pour l'espace participatif %{space_name} sur %{scope_name} (%{scope_type}).
|
165
|
+
linked_project:
|
166
|
+
cta:
|
167
|
+
title: "Participe au vote"
|
168
|
+
description: |
|
169
|
+
Ce projet te tiens à coeur?<br />Tu peux voter <a href="%{link}">ici</a>
|
170
|
+
action: "Voter"
|
171
|
+
button: "Voter"
|
172
|
+
projects:
|
173
|
+
user_record_form:
|
174
|
+
title: "Récolte de données personnelles"
|
175
|
+
close: "Fermer"
|
176
|
+
explanations: |
|
177
|
+
Pour pouvoir récolter les votes, nous devons récolter vos données personnelles
|
178
|
+
afin de les comparer au registre des habitants.<br />
|
179
|
+
Ces données seront utilisées pour le dépouillement des votes.
|
180
|
+
budget_confirm:
|
181
|
+
are_you_sure: Si vous changez d'avis, vous pourrez modifier votre vote plus tard.
|
182
|
+
cancel: Annuler
|
183
|
+
confirm: Confirmer
|
184
|
+
description: Voici les projets que vous avez choisis pour le budget.
|
185
|
+
title: Confirmez votre vote
|
186
|
+
budget_excess:
|
187
|
+
budget_excess:
|
188
|
+
description: Ce projet dépasse le budget maximum et ne peut pas être ajouté. Si vous le souhaitez, vous pouvez supprimer un projet que vous avez déjà sélectionné puis voter de nouveau selon vos préférences.
|
189
|
+
title: Budget maximum dépassé
|
190
|
+
close: Fermer
|
191
|
+
description: Ce projet dépasse le budget maximum et ne peut pas être ajouté. Si vous le souhaitez, vous pouvez supprimer un projet que vous avez déjà sélectionné puis voter de nouveau selon vos préférences.
|
192
|
+
ok: D'accord
|
193
|
+
projects_excess:
|
194
|
+
description: Vous avez dépassé le nombre maximum de projets à sélectionner, ce projet ne peut donc être ajouté. Si vous le souhaitez, vous pouvez supprimer un projet que vous avez déjà sélectionné puis voter de nouveau selon vos préférences.
|
195
|
+
title: Nombre maximum de projets dépassé
|
196
|
+
banner:
|
197
|
+
terminate_session: |
|
198
|
+
J'ai terminé, fermer ma session
|
199
|
+
checked_out: Vote terminé
|
200
|
+
pending_order: "Vote en cours: "
|
201
|
+
finalize: Finaliser le vote
|
202
|
+
user_data_help: |
|
203
|
+
Saisissez vos informations personnelles pour pouvoir voter — même sans compte
|
204
|
+
user_data_action: Commencer à voter
|
205
|
+
cancel_order:
|
206
|
+
one: Retirer mon vote
|
207
|
+
other: Retirer mes votes
|
208
|
+
confirmation: "Confirmation"
|
209
|
+
checked_out:
|
210
|
+
description: Vous avez déjà voté pour le budget. Si vous avez changé d'avis, vous pouvez %{cancel_link}.
|
211
|
+
title: Vote du budget terminé
|
212
|
+
minimum_projects_rule:
|
213
|
+
description: A quels projets pensez-vous que nous devrions allouer un budget ? Sélectionnez au moins %{minimum_number} projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
214
|
+
instruction:
|
215
|
+
zero: "Vous pouvez finaliser votre vote"
|
216
|
+
one: "1 projet restant"
|
217
|
+
other: "%{count} projets restants"
|
218
|
+
projects_rule:
|
219
|
+
description: A quels projets pensez-vous que nous devrions allouer un budget ? Sélectionnez entre %{minimum_number} et %{maximum_number} projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
220
|
+
instruction: "<li>Sélectionnez entre %{minimum_number} et %{maximum_number} projets que vous souhaitez et votez selon vos préférences pour définir le budget.</li>"
|
221
|
+
projects_rule_maximum_only:
|
222
|
+
description: A quels projets pensez-vous que nous devrions allouer un budget ? Sélectionnez au maximum %{maximum_number} projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
223
|
+
instruction: "<li>Sélectionnez au maximum %{maximum_number} projets que vous souhaitez et votez selon vos préférences pour définir le budget.</li>"
|
224
|
+
rules:
|
225
|
+
title: Règles du vote
|
226
|
+
title: Vous décidez du budget
|
227
|
+
total_budget: Budget total
|
228
|
+
total_projects: Nombre total de votes
|
229
|
+
vote_threshold_percent_rule:
|
230
|
+
description: À quels projets pensez-vous que nous devrions allouer un budget ? Assignez au moins %{minimum_budget} aux projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
231
|
+
instruction: "Assignez au moins %{minimum_budget} aux projets que vous soutenez et votez selon vos préférences pour définir le budget"
|
232
|
+
budget_summary:
|
233
|
+
checked_out_sucess: "Vous avez voté"
|
234
|
+
start_voting: J'ai compris, commencer à voter
|
235
|
+
update_user_record: "Mettre à jour ses informations"
|
236
|
+
are_you_sure: Êtes-vous certain de vouloir annuler votre vote ?
|
237
|
+
assigned: "Affecté à :"
|
238
|
+
cancel_order: supprimer votre vote et recommencer
|
239
|
+
checked_out:
|
240
|
+
description: Vous avez déjà voté pour le budget. Si vous avez changé d'avis, vous pouvez %{cancel_link}.
|
241
|
+
title: Vote du budget terminé
|
242
|
+
minimum_projects_rule:
|
243
|
+
description: A quels projets pensez-vous que nous devrions allouer un budget ? Sélectionnez au moins %{minimum_number} projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
244
|
+
instruction: "<li>Sélectionnez au moins %{minimum_number} projets que vous souhaitez voir se réaliser et votez selon vos préférences pour définir le budget.</li>"
|
245
|
+
projects_rule:
|
246
|
+
description: A quels projets pensez-vous que nous devrions allouer un budget ? Sélectionnez entre %{minimum_number} et %{maximum_number} projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
247
|
+
instruction: "<li>Sélectionnez entre %{minimum_number} et %{maximum_number} projets que vous souhaitez et votez selon vos préférences pour définir le budget.</li>"
|
248
|
+
projects_rule_maximum_only:
|
249
|
+
description: A quels projets pensez-vous que nous devrions allouer un budget ? Sélectionnez au maximum %{maximum_number} projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
250
|
+
instruction: "<li>Sélectionnez au maximum %{maximum_number} projets que vous souhaitez et votez selon vos préférences pour définir le budget.</li>"
|
251
|
+
user_record: Vos données personnelles
|
252
|
+
rules:
|
253
|
+
title: Règles du vote
|
254
|
+
extra_rule: "<li>Seul les lausannois.es enregistré.es au registre des habitants peuvent voter</li>"
|
255
|
+
title: Vous décidez du budget
|
256
|
+
total_budget: Budget total
|
257
|
+
total_projects: Nombre total de votes
|
258
|
+
vote_threshold_percent_rule:
|
259
|
+
description: À quels projets pensez-vous que nous devrions allouer un budget ? Assignez au moins %{minimum_budget} aux projets que vous soutenez et votez selon vos préférences pour définir le budget.
|
260
|
+
instruction: "<li>Assignez au moins %{minimum_budget} aux projets que vous soutenez et votez selon vos préférences pour définir le budget.</li>"
|
261
|
+
count:
|
262
|
+
projects_count:
|
263
|
+
one: 1 projet
|
264
|
+
other: "%{count} projets"
|
265
|
+
filters:
|
266
|
+
category: Catégorie
|
267
|
+
scope: Périmètre d'application
|
268
|
+
search: Rechercher
|
269
|
+
status: Statut
|
270
|
+
status_values:
|
271
|
+
all: Tous
|
272
|
+
not_selected: Non sélectionné
|
273
|
+
selected: Sélectionné
|
274
|
+
filters_small_view:
|
275
|
+
close_modal: Fermez la fenêtre
|
276
|
+
filter: Filtrer
|
277
|
+
filter_by: Filtrer par
|
278
|
+
unfold: Voir la suite
|
279
|
+
order_progress:
|
280
|
+
vote: Voter
|
281
|
+
order_selected_projects:
|
282
|
+
remove: Supprimer
|
283
|
+
selected_projects:
|
284
|
+
one: projet sélectionné
|
285
|
+
other: projets sélectionnés
|
286
|
+
view: Voir
|
287
|
+
orders:
|
288
|
+
highest_cost: Prix décroissant
|
289
|
+
label: Trier les projets par
|
290
|
+
lowest_cost: Prix croissant
|
291
|
+
most_voted: Les plus votés
|
292
|
+
asc: Nom de projet
|
293
|
+
random: Ordre aléatoire
|
294
|
+
selected: Sélectionné
|
295
|
+
project:
|
296
|
+
add: Ajouter le projet %{resource_name} à votre vote
|
297
|
+
remove: Retirer le projet %{resource_name} de votre vote
|
298
|
+
selected: Sélectionné
|
299
|
+
view: Voir
|
300
|
+
votes:
|
301
|
+
one: vote
|
302
|
+
other: votes
|
303
|
+
you_voted: Vous avez voté pour
|
304
|
+
vote:
|
305
|
+
add: "Nous avons enregistrer votre vote"
|
306
|
+
remove: "Nous avons retirer votre vote"
|
307
|
+
project_budget_button:
|
308
|
+
add: Ajouter à votre vote
|
309
|
+
add_descriptive: Ajouter le projet %{resource_name} à votre vote
|
310
|
+
added: Ajouté à votre vote
|
311
|
+
added_descriptive: Projet %{resource_name} ajouté à votre vote
|
312
|
+
projects_for: Projets pour %{name}
|
313
|
+
show:
|
314
|
+
budget: Budget
|
315
|
+
view_all_projects: Voir tous les projets
|
316
|
+
components:
|
317
|
+
lausanne_budgets:
|
318
|
+
actions:
|
319
|
+
vote: Voter
|
320
|
+
name: Budgets Publiques
|
321
|
+
settings:
|
322
|
+
global:
|
323
|
+
announcement: Annonce
|
324
|
+
comments_enabled: Activer le module de commentaire
|
325
|
+
comments_max_length: Longueur max des commentaires (laisser 0 pour la valeur par défaut)
|
326
|
+
form:
|
327
|
+
errors:
|
328
|
+
budget_voting_rule_only_one: Une seule règle de vote doit être activée
|
329
|
+
budget_voting_rule_required: Une règle de vote est requise
|
330
|
+
landing_page_content: Page d'accueil des budgets
|
331
|
+
more_information_modal: Plus d’informations
|
332
|
+
projects_per_page: Projets par page
|
333
|
+
resources_permissions_enabled: Les autorisations d'actions peuvent être définies pour chaque projet
|
334
|
+
scope_id: Secteur
|
335
|
+
scopes_enabled: Secteurs activés
|
336
|
+
title: Titre
|
337
|
+
total_budget: Budget total
|
338
|
+
vote_minimum_budget_projects_number: Nombre minimum de projets à voter
|
339
|
+
vote_rule_minimum_budget_projects_enabled: "Activer la règle : Nombre minimum de projets à voter"
|
340
|
+
vote_rule_selected_projects_enabled: "Activer la règle : Nombre minimum et maximum de projets à voter"
|
341
|
+
vote_rule_threshold_percent_enabled: "Activer la règle : Pourcentage de budget minimum"
|
342
|
+
vote_selected_projects_maximum: Nombre maximum de projets à sélectionner
|
343
|
+
vote_selected_projects_minimum: Nombre minimum de projets à sélectionner
|
344
|
+
vote_threshold_percent: Pourcentage du budget à atteindre pour voter
|
345
|
+
workflow: Processus
|
346
|
+
workflow_choices:
|
347
|
+
all: "Voter sur tous les budgets : autorise les participants à voter sur tous les budgets."
|
348
|
+
one: "Voter sur un seul budget : autorise les participants à voter sur un seul budget parmi les budgets proposés."
|
349
|
+
step:
|
350
|
+
announcement: Annonce
|
351
|
+
comments_blocked: Commentaires bloqués
|
352
|
+
highlighted_heading: En-tête en surbrillance
|
353
|
+
landing_page_content: Page d'accueil des budgets
|
354
|
+
list_heading: En-tête de la liste des budgets
|
355
|
+
more_information_modal: Plus d’informations
|
356
|
+
show_votes: Afficher les votes
|
357
|
+
title: Titre
|
358
|
+
votes: Vote
|
359
|
+
votes_choices:
|
360
|
+
disabled: Vote désactivé
|
361
|
+
enabled: Votes activés
|
362
|
+
finished: Vote terminé
|
363
|
+
events:
|
364
|
+
budgets:
|
365
|
+
budget_published:
|
366
|
+
email_intro: "Le budget %{resource_title} est maintenant actif pour %{participatory_space_title}. Vous pouvez le voir sur cette page :"
|
367
|
+
email_outro: Vous recevez cette notification car vous suivez « %{participatory_space_title} ». Vous pouvez cesser de le suivre en allant sur le lien précédent.
|
368
|
+
email_subject: Le budget %{resource_title} est maintenant actif pour %{participatory_space_title}.
|
369
|
+
notification_title: Le budget <a href="%{resource_path}">%{resource_title}</a> est maintenant actif pour %{participatory_space_title}.
|
370
|
+
orders:
|
371
|
+
checkout:
|
372
|
+
error: Une erreur s'est produite lors du traitement de votre vote
|
373
|
+
success: Votre vote a été enregistré avec succès
|
374
|
+
destroy:
|
375
|
+
error: Une erreur s'est produite lors de l'annulation de votre vote
|
376
|
+
success: Votre vote a été annulé avec succès
|
377
|
+
resource_links:
|
378
|
+
included_proposals:
|
379
|
+
project_proposal: "Propositions incluses dans ce projet:"
|
380
|
+
index:
|
381
|
+
confirmed_orders_count: Nombre de votes
|
data/config/routes.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateLausanneProjects < ActiveRecord::Migration[5.0]
|
4
|
+
def change
|
5
|
+
create_table :loz_budgets_projects do |t|
|
6
|
+
t.jsonb :title
|
7
|
+
t.jsonb :description
|
8
|
+
t.bigint :budget_amount, null: false
|
9
|
+
t.references :decidim_component, index: true
|
10
|
+
t.references :decidim_scope, index: true
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
class CreateLausanneUserRecords < ActiveRecord::Migration[5.0]
|
5
|
+
def change
|
6
|
+
create_table :decidim_lausanne_user_records do |t|
|
7
|
+
t.string :last_name, null: false
|
8
|
+
t.string :first_name, null: false
|
9
|
+
t.string :birthdate, null: false
|
10
|
+
t.references :decidim_user, index: false, null: true
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateLausanneOrders < ActiveRecord::Migration[5.0]
|
4
|
+
def change
|
5
|
+
create_table :decidim_lausanne_budgets_orders do |t|
|
6
|
+
t.references :decidim_user, index: true
|
7
|
+
t.references :loz_user_record, index: true
|
8
|
+
t.references :decidim_component, index: true
|
9
|
+
t.datetime :checked_out_at
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
|
14
|
+
add_index :decidim_lausanne_budgets_orders, [:loz_user_record_id, :decidim_component_id], unique: true, name: "decidim_lausanne_budgets_order_user_record_component_unique"
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateLausanneLineItems < ActiveRecord::Migration[5.0]
|
4
|
+
def change
|
5
|
+
create_table :decidim_lausanne_budgets_line_items do |t|
|
6
|
+
t.references :decidim_order, index: true
|
7
|
+
t.references :decidim_project, index: true
|
8
|
+
end
|
9
|
+
|
10
|
+
add_index :decidim_lausanne_budgets_line_items, [:decidim_order_id, :decidim_project_id], unique: true, name: "decidim_lausanne_budgets_line_items_order_project_unique"
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class AddLausanneReferenceToProjects < ActiveRecord::Migration[5.0]
|
4
|
+
class Project < ApplicationRecord
|
5
|
+
self.table_name = :loz_budgets_projects
|
6
|
+
end
|
7
|
+
|
8
|
+
def change
|
9
|
+
add_column :loz_budgets_projects, :reference, :string
|
10
|
+
Project.find_each(&:save)
|
11
|
+
change_column_null :loz_budgets_projects, :reference, true
|
12
|
+
end
|
13
|
+
end
|