From 34ee8c1c4867a3367f9bd415eb0365f657c9d470 Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 29 Dec 2016 16:21:42 +0100 Subject: [PATCH 01/23] Makes Budgets editable, and makes their description editable with html --- app/controllers/admin/budgets_controller.rb | 12 +++++++++- app/models/budget.rb | 5 ++-- app/views/admin/budgets/_form.html.erb | 16 +++++++++++++ app/views/admin/budgets/edit.html.erb | 7 ++++++ app/views/admin/budgets/new.html.erb | 26 ++------------------- app/views/admin/budgets/show.html.erb | 6 ++--- config/locales/activerecord.en.yml | 5 ++++ config/locales/activerecord.es.yml | 7 +++++- config/locales/admin.en.yml | 13 +++++------ config/locales/admin.es.yml | 9 ++++--- config/locales/en.yml | 2 ++ config/locales/es.yml | 2 ++ 12 files changed, 67 insertions(+), 43 deletions(-) create mode 100644 app/views/admin/budgets/_form.html.erb create mode 100644 app/views/admin/budgets/edit.html.erb diff --git a/app/controllers/admin/budgets_controller.rb b/app/controllers/admin/budgets_controller.rb index e5e73a346..e7e462fc8 100644 --- a/app/controllers/admin/budgets_controller.rb +++ b/app/controllers/admin/budgets_controller.rb @@ -15,7 +15,17 @@ class Admin::BudgetsController < Admin::BaseController end def new - @budget = Budget.new + end + + def edit + end + + def update + if @budget.update(budget_params) + redirect_to admin_budget_path(@budget), notice: t('admin.budgets.update.notice') + else + render :edit + end end def create diff --git a/app/models/budget.rb b/app/models/budget.rb index 4d6f1341f..26c32e5f9 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -1,9 +1,10 @@ class Budget < ActiveRecord::Base include Sanitizable + include Measurable - VALID_PHASES = %W{on_hold accepting selecting balloting finished} - CURRENCY_SYMBOLS = %W{€ $ £ ¥} + VALID_PHASES = %W{on_hold accepting selecting balloting finished}.freeze + CURRENCY_SYMBOLS = %W{€ $ £ ¥}.freeze validates :name, presence: true validates :phase, inclusion: { in: VALID_PHASES } diff --git a/app/views/admin/budgets/_form.html.erb b/app/views/admin/budgets/_form.html.erb new file mode 100644 index 000000000..615e0ae67 --- /dev/null +++ b/app/views/admin/budgets/_form.html.erb @@ -0,0 +1,16 @@ +<%= form_for [:admin, @budget] do |f| %> + + <%= f.text_field :name, maxlength: Budget.title_max_length %> + + <%= f.cktext_area :description, maxlength: Budget.description_max_length, ckeditor: { language: I18n.locale } %> + +
+
+ <%= f.select :phase, budget_phases_select_options %> +
+
+ <%= f.select :currency_symbol, budget_currency_symbol_select_options %> +
+
+ <%= f.submit t("shared.send"), class: "button success" %> +<% end %> diff --git a/app/views/admin/budgets/edit.html.erb b/app/views/admin/budgets/edit.html.erb new file mode 100644 index 000000000..6fd1e3e1f --- /dev/null +++ b/app/views/admin/budgets/edit.html.erb @@ -0,0 +1,7 @@ +
+
+

<%= t("admin.budgets.edit.title") %>

+ + <%= render '/admin/budgets/form' %> +
+
diff --git a/app/views/admin/budgets/new.html.erb b/app/views/admin/budgets/new.html.erb index 9ca0f34a5..3fa0fac89 100644 --- a/app/views/admin/budgets/new.html.erb +++ b/app/views/admin/budgets/new.html.erb @@ -2,28 +2,6 @@

<%= t("admin.budgets.new.title") %>

- <%= form_for [:admin, @budget] do |f| %> - - <%= f.label :name, t("admin.budgets.new.name") %> - <%= f.text_field :name, - label: false, - maxlength: 30, - placeholder: t("admin.budgets.new.name") %> - - <%= f.label :description, t("admin.budgets.new.description") %> - <%= f.text_area :description, rows: 3, maxlength: 6000, label: false, placeholder: t("admin.budgets.new.description") %> - -
-
- <%= f.label :description, t("admin.budgets.new.phase") %> - <%= f.select :phase, budget_phases_select_options, {label: false} %> -
-
- <%= f.label :description, t("admin.budgets.new.currency") %> - <%= f.select :currency_symbol, budget_currency_symbol_select_options, {label: false} %> -
-
- <%= f.submit t("admin.budgets.new.create"), class: "button success" %> - <% end %> + <%= render '/admin/budgets/form' %>
- \ No newline at end of file + diff --git a/app/views/admin/budgets/show.html.erb b/app/views/admin/budgets/show.html.erb index 847aa2f60..4468f7599 100644 --- a/app/views/admin/budgets/show.html.erb +++ b/app/views/admin/budgets/show.html.erb @@ -1,8 +1,8 @@
-

<%= @budget.name %>

+

<%= @budget.name %> <%= link_to(t('shared.edit'), edit_admin_budget_path(@budget)) %>

- <%= simple_format(text_with_links(@budget.description), {}, sanitize: false) %> + <%= @budget.description %>

<%= t('admin.budgets.show.phase') %>: <%= t("budget.phase.#{@budget.phase}") %> | @@ -13,4 +13,4 @@

<%= render "groups", groups: @budget.groups %> -
\ No newline at end of file +
diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 8ba93bb99..9feabbb8a 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -41,6 +41,11 @@ en: one: "Spending proposal" other: "Spending proposals" attributes: + budget: + name: "Name" + descripcion: "Description" + phase: "Phase" + currency_symbol: "Currency" budget/investment: administrator_id: "Administrator" description: "Description" diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 46888ad5a..631d18741 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -41,6 +41,11 @@ es: one: "Propuesta de inversión" other: "Propuestas de inversión" attributes: + budget: + name: "Nombre" + description: "Descripción" + phase: "Fase" + currency_symbol: "Divisa" budget/investment: administrator_id: "Administrador" description: "Descripción" @@ -111,4 +116,4 @@ es: attributes: document_number: not_in_census: 'No verificado por Padrón' - already_voted: 'Ya ha votado esta propuesta' \ No newline at end of file + already_voted: 'Ya ha votado esta propuesta' diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index 2684b8c27..51d3fa841 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -68,23 +68,22 @@ en: finished: Finished create: notice: New participatory budget created successfully! + update: + notice: Participatory budget updated successfully + edit: + title: Edit Participatory budget new: title: New participatory budget - create: Create budget - name: Budget's name - description: Description - phase: Phase - currency: Currency show: phase: Current phase currency: Currency groups: Groups of budget headings form: - group: Group's name + group: Group name no_groups: No groups created yet. Each user will be able to vote in only one heading per group. add_group: Add new group create_group: Create group - heading: Heading's name + heading: Heading name add_heading: Add heading amount: Amount save_heading: Save heading diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index bc37013cc..cef210035 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -68,13 +68,12 @@ es: finished: Terminados create: notice: ¡Nueva campaña de presupuestos participativos creada con éxito! + update: + notice: Campaña de presupuestos participativos actualizada + edit: + title: Editar campaña de presupuestos participativos new: title: Nuevo presupuesto ciudadano - create: Crear presupuesto - name: Nombre del presupuesto - description: Descripción - phase: Fase - currency: Divisa show: phase: Fase actual currency: Divisa diff --git a/config/locales/en.yml b/config/locales/en.yml index 298a3c513..4ec62ddf9 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -441,6 +441,8 @@ en: collective: Collective flag: Flag as inappropriate hide: Hide + send: Send + edit: Editar print: print_button: Print this info search: Search diff --git a/config/locales/es.yml b/config/locales/es.yml index bf1e656c0..d082d4783 100755 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -445,6 +445,8 @@ es: print_button: Imprimir esta información search: Buscar show: Mostrar + send: Enviar + edit: Editar suggest: debate: found: From 9d0e736878bc28794c2b9b0c2c50e4d8e527036b Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 29 Dec 2016 16:22:14 +0100 Subject: [PATCH 02/23] budget description now returns html --- app/views/budgets/show.html.erb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb index 66207ac7c..ce4e46c71 100644 --- a/app/views/budgets/show.html.erb +++ b/app/views/budgets/show.html.erb @@ -9,7 +9,8 @@

<%= @budget.name %> <%= t("budgets.phases.#{@budget.phase}") %>

-

<%= @budget.description %>

+ + <%= @budget.description %>
From 110a4091f8cfce5e98ddcc5279b056fe8420705f Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 29 Dec 2016 17:30:21 +0100 Subject: [PATCH 03/23] Adds budget investment location --- app/controllers/budgets/investments_controller.rb | 2 +- app/views/budgets/investments/_form.html.erb | 5 +++++ app/views/budgets/investments/_investment_show.html.erb | 9 +++++++-- config/locales/budgets.en.yml | 7 +++++-- config/locales/budgets.es.yml | 4 +++- .../20161229153505_add_location_to_budget_investments.rb | 5 +++++ db/schema.rb | 5 +++-- 7 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 db/migrate/20161229153505_add_location_to_budget_investments.rb diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index 490b4047d..0084e71db 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -80,7 +80,7 @@ module Budgets end def investment_params - params.require(:budget_investment).permit(:title, :description, :external_url, :heading_id, :terms_of_service) + params.require(:budget_investment).permit(:title, :description, :external_url, :heading_id, :terms_of_service, :location) end def load_ballot diff --git a/app/views/budgets/investments/_form.html.erb b/app/views/budgets/investments/_form.html.erb index 93461a873..8e7643285 100644 --- a/app/views/budgets/investments/_form.html.erb +++ b/app/views/budgets/investments/_form.html.erb @@ -24,6 +24,11 @@ <%= f.text_field :external_url, placeholder: t("budget.investments.form.external_url"), label: false %> +
+ <%= f.label :location, t("budget.investments.form.location") %> + <%= f.text_field :location, placeholder: t("budget.investments.form.location"), label: false %> +
+ <% unless current_user.manager? %>
diff --git a/app/views/budgets/investments/_investment_show.html.erb b/app/views/budgets/investments/_investment_show.html.erb index b3cc81ba6..28659533d 100644 --- a/app/views/budgets/investments/_investment_show.html.erb +++ b/app/views/budgets/investments/_investment_show.html.erb @@ -26,10 +26,15 @@

- <%= t("budget.investments.show.code") %> - <%= investment.id %> + <%= t("budget.investments.show.code_html", code: investment.id) %>

+ <% if investment.location.present? %> +

+ <%= t("budget.investments.show.location_html", location: investment.location) %> +

+ <% end %> + <%= safe_html_with_links investment.description.html_safe %> <% if investment.external_url.present? %> diff --git a/config/locales/budgets.en.yml b/config/locales/budgets.en.yml index f88cb6dea..31744d14f 100644 --- a/config/locales/budgets.en.yml +++ b/config/locales/budgets.en.yml @@ -36,7 +36,7 @@ en: none: Whole City all: All scopes index: - name: Budget's name + name: Budget name phase: Phase title: Participatory budgets investments: @@ -46,6 +46,7 @@ en: description: Description external_url: Link to additional documentation heading: Choose if a proposed citywide or district + location: "Location" submit_buttons: create: Create new: Create @@ -96,7 +97,9 @@ en: author_deleted: User deleted price_explanation: Price explanation unfeasibility_explanation: Unfeasibility explanation - code: 'Investment project code:' + code_html: 'Investment project code: %{code}' + location_html: 'Location: %{location}' + location: Location share: Share wrong_price_format: Only integer numbers investment: diff --git a/config/locales/budgets.es.yml b/config/locales/budgets.es.yml index bc23711a9..97e2be653 100644 --- a/config/locales/budgets.es.yml +++ b/config/locales/budgets.es.yml @@ -46,6 +46,7 @@ es: description: Descripción detallada external_url: Enlace a documentación adicional heading: "Elige si es una propuesta para toda la ciudad o para un distrito" + location: "Localización de la propuesta" submit_buttons: create: Crear new: Crear @@ -96,7 +97,8 @@ es: author_deleted: Usuario eliminado price_explanation: Informe de coste unfeasibility_explanation: Informe de inviabilidad - code: 'Código propuesta de gasto:' + code_html: 'Código propuesta de gasto: %{code}' + location_html: 'Localización: %{location}' share: Compartir wrong_price_format: Solo puede incluir caracteres numéricos investment: diff --git a/db/migrate/20161229153505_add_location_to_budget_investments.rb b/db/migrate/20161229153505_add_location_to_budget_investments.rb new file mode 100644 index 000000000..a58ee4fdd --- /dev/null +++ b/db/migrate/20161229153505_add_location_to_budget_investments.rb @@ -0,0 +1,5 @@ +class AddLocationToBudgetInvestments < ActiveRecord::Migration + def change + add_column :budget_investments, :location, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index bff0fef16..2d68c3d11 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161221172447) do +ActiveRecord::Schema.define(version: 20161229153505) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -142,6 +142,7 @@ ActiveRecord::Schema.define(version: 20161221172447) do t.integer "budget_id" t.integer "group_id" t.boolean "selected", default: false + t.string "location" end add_index "budget_investments", ["administrator_id"], name: "index_budget_investments_on_administrator_id", using: :btree @@ -572,7 +573,7 @@ ActiveRecord::Schema.define(version: 20161221172447) do t.boolean "email_digest", default: true t.boolean "email_on_direct_message", default: true t.boolean "official_position_badge", default: false - t.datetime "password_changed_at", default: '2016-12-21 17:55:08', null: false + t.datetime "password_changed_at", default: '2016-11-02 13:51:14', null: false t.boolean "created_from_signature", default: false end From f64e59bbf6e5be3d8e3aa9622c668226dea6afe9 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Thu, 29 Dec 2016 17:44:16 +0100 Subject: [PATCH 04/23] fixes ul tag on order links submenu --- app/views/shared/_order_links.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/shared/_order_links.html.erb b/app/views/shared/_order_links.html.erb index 5769b56eb..22081bcdc 100644 --- a/app/views/shared/_order_links.html.erb +++ b/app/views/shared/_order_links.html.erb @@ -1,4 +1,4 @@ -
- <%= f.submit t("shared.send"), class: "button success" %> + <%= f.submit t("admin.budgets.new.submit"), class: "button success" %> <% end %> diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index 51d3fa841..078cee398 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -61,7 +61,7 @@ en: budgets: index: title: Participatory budgets - new_link: Create new + new_link: Create new budget info_link: Info filters: open: Open @@ -74,6 +74,7 @@ en: title: Edit Participatory budget new: title: New participatory budget + submit: Create budget show: phase: Current phase currency: Currency diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index cef210035..c1a8b752e 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -61,7 +61,7 @@ es: budgets: index: title: Presupuestos participativos - new_link: Crear nuevo + new_link: Crear nuevo presupuesto info_link: Info filters: open: Abiertos @@ -74,6 +74,7 @@ es: title: Editar campaña de presupuestos participativos new: title: Nuevo presupuesto ciudadano + submit: Crear presupuesto show: phase: Fase actual currency: Divisa diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb index 170a86cec..11cc34aa8 100644 --- a/spec/features/admin/budgets_spec.rb +++ b/spec/features/admin/budgets_spec.rb @@ -80,7 +80,7 @@ feature 'Admin budgets' do scenario 'Create budget' do visit admin_budgets_path - click_link 'Create new' + click_link 'Create new budget' fill_in 'budget_name', with: 'M30 - Summer campaign' fill_in 'budget_description', with: 'Budgeting for summer 2017 maintenance and improvements of the road M-30' @@ -97,7 +97,7 @@ feature 'Admin budgets' do click_button 'Create budget' expect(page).to_not have_content 'New participatory budget created successfully!' - expect(page).to have_css("label.error", text: "Budget's name") + expect(page).to have_css("label.error", text: "Name") end end From f32a77bae9ffa1c33fa8f0fca7c2142057f594e7 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Fri, 30 Dec 2016 01:13:04 +0100 Subject: [PATCH 08/23] removes unused i18n keys --- config/locales/en.yml | 1 - config/locales/es.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 18e3800d2..83988ab85 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -441,7 +441,6 @@ en: collective: Collective flag: Flag as inappropriate hide: Hide - send: Send edit: Editar print: print_button: Print this info diff --git a/config/locales/es.yml b/config/locales/es.yml index 2028abb92..8fd9b2c37 100755 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -445,7 +445,6 @@ es: print_button: Imprimir esta información search: Buscar show: Mostrar - send: Enviar edit: Editar suggest: debate: From 181749b4f65a7891eed8a5bb828bf4a0a7dee2c5 Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 30 Dec 2016 18:41:35 +0100 Subject: [PATCH 09/23] Removes valuating boolean from budgets --- db/migrate/20161230172816_remove_valuating_from_budgets.rb | 5 +++++ db/schema.rb | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20161230172816_remove_valuating_from_budgets.rb diff --git a/db/migrate/20161230172816_remove_valuating_from_budgets.rb b/db/migrate/20161230172816_remove_valuating_from_budgets.rb new file mode 100644 index 000000000..4b6e97e7f --- /dev/null +++ b/db/migrate/20161230172816_remove_valuating_from_budgets.rb @@ -0,0 +1,5 @@ +class RemoveValuatingFromBudgets < ActiveRecord::Migration + def change + remove_column :budgets, :valuating, :bool + end +end diff --git a/db/schema.rb b/db/schema.rb index 2d68c3d11..cc646e6e1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161229153505) do +ActiveRecord::Schema.define(version: 20161230172816) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -164,7 +164,6 @@ ActiveRecord::Schema.define(version: 20161229153505) do t.text "description" t.string "currency_symbol", limit: 10 t.string "phase", limit: 15, default: "on_hold" - t.boolean "valuating", default: false t.datetime "created_at", null: false t.datetime "updated_at", null: false end From fa50e3f215cde353e7021a168e3d8a71b5229f56 Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 30 Dec 2016 18:43:15 +0100 Subject: [PATCH 10/23] Adds new phases to budget and fixes specs --- app/models/budget.rb | 28 ++++++++++++++++++++------- spec/factories.rb | 14 +++++++++++++- spec/features/budgets/ballots_spec.rb | 2 +- spec/features/budgets/votes_spec.rb | 2 +- spec/models/budget/investment_spec.rb | 4 ++-- spec/models/budget_spec.rb | 12 +++++++++--- 6 files changed, 47 insertions(+), 15 deletions(-) diff --git a/app/models/budget.rb b/app/models/budget.rb index 26c32e5f9..ab32fee39 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -3,7 +3,7 @@ class Budget < ActiveRecord::Base include Sanitizable include Measurable - VALID_PHASES = %W{on_hold accepting selecting balloting finished}.freeze + VALID_PHASES = %W{accepting reviewing selecting valuating balloting reviewing_ballots finished}.freeze CURRENCY_SYMBOLS = %W{€ $ £ ¥}.freeze validates :name, presence: true @@ -15,35 +15,49 @@ class Budget < ActiveRecord::Base has_many :groups, dependent: :destroy has_many :headings, through: :groups - scope :on_hold, -> { where(phase: "on_hold") } + scope :on_hold, -> { where(phase: ["reviewing", "valuating", "reviewing_ballots"]) } scope :accepting, -> { where(phase: "accepting") } + scope :reviewing, -> { where(phase: "reviewing") } scope :selecting, -> { where(phase: "selecting") } + scope :valuating, -> { where(phase: "valuating") } scope :balloting, -> { where(phase: "balloting") } + scope :reviewing_ballots, -> { where(phase: "reviewing_ballots") } scope :finished, -> { where(phase: "finished") } scope :current, -> { where.not(phase: "finished") } - scope :valuating, -> { where(valuating: true) } - - def on_hold? - phase == "on_hold" - end def accepting? phase == "accepting" end + def reviewing? + phase == "reviewing" + end + def selecting? phase == "selecting" end + def valuating? + phase == "valuating" + end + def balloting? phase == "balloting" end + def reviewing_ballots? + phase == "reviewing_ballots" + end + def finished? phase == "finished" end + def on_hold? + reviewing? || valuating? || reviewing_ballots? + end + def current? !finished? end diff --git a/spec/factories.rb b/spec/factories.rb index f52481d78..1ee6f6046 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -195,20 +195,32 @@ FactoryGirl.define do factory :budget do sequence(:name) { |n| "Budget #{n}" } currency_symbol "€" - phase 'on_hold' + phase 'accepting' trait :accepting do phase 'accepting' end + trait :reviewing do + phase 'reviewing' + end + trait :selecting do phase 'selecting' end + trait :valuating do + phase 'valuating' + end + trait :balloting do phase 'balloting' end + trait :reviewing_ballots do + phase 'reviewing_ballots' + end + trait :finished do phase 'finished' end diff --git a/spec/features/budgets/ballots_spec.rb b/spec/features/budgets/ballots_spec.rb index e1d8ab4a8..362706ffb 100644 --- a/spec/features/budgets/ballots_spec.rb +++ b/spec/features/budgets/ballots_spec.rb @@ -582,7 +582,7 @@ feature 'Ballots' do end scenario "Balloting is disabled when budget isn't in the balotting phase", :js do - budget.update(phase: 'on_hold') + budget.update(phase: 'accepting') bi1 = create(:budget_investment, :selected, heading: california, price: 600) diff --git a/spec/features/budgets/votes_spec.rb b/spec/features/budgets/votes_spec.rb index 3c92bf658..c31545428 100644 --- a/spec/features/budgets/votes_spec.rb +++ b/spec/features/budgets/votes_spec.rb @@ -88,7 +88,7 @@ feature 'Votes' do scenario 'Disable voting on spending proposals', :js do login_as(@manuela) - budget.update(phase: "on_hold") + budget.update(phase: "reviewing") investment = create(:budget_investment, budget: budget, heading: heading) visit budget_investments_path(budget, heading_id: heading.id) diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index 13f17e0c4..512198601 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -318,8 +318,8 @@ describe Budget::Investment do expect(investment.reason_for_not_being_ballotable_by(user, ballot)).to eq(:organization) end - it "rejects votes when voting is not allowed (via admin setting)" do - budget.phase = "on_hold" + it "rejects votes when voting is not allowed (wrong phase)" do + budget.phase = "reviewing" expect(investment.reason_for_not_being_ballotable_by(user, ballot)).to eq(:no_ballots_allowed) end diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index b238717ef..667af1344 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -15,18 +15,24 @@ describe Budget do end it "produces auxiliary methods" do - budget.phase = "on_hold" - expect(budget).to be_on_hold - budget.phase = "accepting" expect(budget).to be_accepting + budget.phase = "reviewing" + expect(budget).to be_reviewing + budget.phase = "selecting" expect(budget).to be_selecting + budget.phase = "valuating" + expect(budget).to be_valuating + budget.phase = "balloting" expect(budget).to be_balloting + budget.phase = "reviewing_ballots" + expect(budget).to be_reviewing_ballots + budget.phase = "finished" expect(budget).to be_finished end From cb4803f2f9ef3504df52c46c381ea564421e4ca6 Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 12:33:43 +0100 Subject: [PATCH 11/23] Replaces %w by %W --- app/models/budget.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/budget.rb b/app/models/budget.rb index ab32fee39..d03515ae7 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -3,8 +3,8 @@ class Budget < ActiveRecord::Base include Sanitizable include Measurable - VALID_PHASES = %W{accepting reviewing selecting valuating balloting reviewing_ballots finished}.freeze - CURRENCY_SYMBOLS = %W{€ $ £ ¥}.freeze + VALID_PHASES = %w(accepting reviewing selecting valuating balloting reviewing_ballots finished).freeze + CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze validates :name, presence: true validates :phase, inclusion: { in: VALID_PHASES } From f6e4443437ccef00fa07549c3d8801e0a73d5da8 Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 12:34:15 +0100 Subject: [PATCH 12/23] Removes sanitizable from budget, replacing it by custom impl --- app/models/budget.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/budget.rb b/app/models/budget.rb index d03515ae7..d25861e2f 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -1,6 +1,5 @@ class Budget < ActiveRecord::Base - include Sanitizable include Measurable VALID_PHASES = %w(accepting reviewing selecting valuating balloting reviewing_ballots finished).freeze @@ -16,6 +15,7 @@ class Budget < ActiveRecord::Base has_many :headings, through: :groups scope :on_hold, -> { where(phase: ["reviewing", "valuating", "reviewing_ballots"]) } + before_validation :sanitize_descriptions scope :accepting, -> { where(phase: "accepting") } scope :reviewing, -> { where(phase: "reviewing") } scope :selecting, -> { where(phase: "selecting") } @@ -84,5 +84,15 @@ class Budget < ActiveRecord::Base def formatted_heading_amount_spent(heading) formatted_amount(amount_spent(heading)) end + + private + + def sanitize_descriptions + s = WYSIWYGSanitizer.new + VALID_PHASES.each do |phase| + sanitized = s.sanitize(self.send("description_#{phase}")) + self.send("description_#{phase}=", sanitized) + end + end end From c17dcf1bab67ad5f7f589d2167cd476bfe2efc6a Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 12:50:40 +0100 Subject: [PATCH 13/23] replaces array of strings with %w --- app/models/budget.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/budget.rb b/app/models/budget.rb index d25861e2f..7fee2eee2 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -14,8 +14,9 @@ class Budget < ActiveRecord::Base has_many :groups, dependent: :destroy has_many :headings, through: :groups - scope :on_hold, -> { where(phase: ["reviewing", "valuating", "reviewing_ballots"]) } before_validation :sanitize_descriptions + + scope :on_hold, -> { where(phase: %w(reviewing valuating reviewing_ballots")) } scope :accepting, -> { where(phase: "accepting") } scope :reviewing, -> { where(phase: "reviewing") } scope :selecting, -> { where(phase: "selecting") } From d80dedaad8d31248dc6a331ad95092e2735ff46b Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 12:51:17 +0100 Subject: [PATCH 14/23] Adds sanitized descriptions for all phases to budget model --- app/models/budget.rb | 4 ++++ ...0161230174744_change_budget_description.rb | 12 +++++++++++ db/schema.rb | 20 ++++++++++++------- spec/factories.rb | 7 +++++++ spec/models/budget_spec.rb | 13 ++++++++++++ 5 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 db/migrate/20161230174744_change_budget_description.rb diff --git a/app/models/budget.rb b/app/models/budget.rb index 7fee2eee2..425750956 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -27,6 +27,10 @@ class Budget < ActiveRecord::Base scope :current, -> { where.not(phase: "finished") } + def description + self.send("description_#{self.phase}").try(:html_safe) + end + def accepting? phase == "accepting" end diff --git a/db/migrate/20161230174744_change_budget_description.rb b/db/migrate/20161230174744_change_budget_description.rb new file mode 100644 index 000000000..80de9dcf4 --- /dev/null +++ b/db/migrate/20161230174744_change_budget_description.rb @@ -0,0 +1,12 @@ +class ChangeBudgetDescription < ActiveRecord::Migration + def change + remove_column :budgets, :description, :text + add_column :budgets, :description_accepting, :text + add_column :budgets, :description_reviewing, :text + add_column :budgets, :description_selecting, :text + add_column :budgets, :description_valuating, :text + add_column :budgets, :description_balloting, :text + add_column :budgets, :description_reviewing_ballots, :text + add_column :budgets, :description_finished, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index cc646e6e1..2bd9bfa1f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161230172816) do +ActiveRecord::Schema.define(version: 20161230174744) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -160,12 +160,18 @@ ActiveRecord::Schema.define(version: 20161230172816) do add_index "budget_valuator_assignments", ["investment_id"], name: "index_budget_valuator_assignments_on_investment_id", using: :btree create_table "budgets", force: :cascade do |t| - t.string "name", limit: 30 - t.text "description" - t.string "currency_symbol", limit: 10 - t.string "phase", limit: 15, default: "on_hold" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "name", limit: 30 + t.string "currency_symbol", limit: 10 + t.string "phase", limit: 15, default: "on_hold" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.text "description_accepting" + t.text "description_reviewing" + t.text "description_selecting" + t.text "description_valuating" + t.text "description_balloting" + t.text "description_reviewing_ballots" + t.text "description_finished" end create_table "campaigns", force: :cascade do |t| diff --git a/spec/factories.rb b/spec/factories.rb index 1ee6f6046..e058adf15 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -196,6 +196,13 @@ FactoryGirl.define do sequence(:name) { |n| "Budget #{n}" } currency_symbol "€" phase 'accepting' + description_accepting "This budget is accepting" + description_reviewing "This budget is reviewing" + description_selecting "This budget is selecting" + description_valuating "This budget is valuating" + description_balloting "This budget is balloting" + description_reviewing_ballots "This budget is reviewing ballots" + description_finished "This budget is finished" trait :accepting do phase 'accepting' diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index 667af1344..04ebc419e 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -1,6 +1,19 @@ require 'rails_helper' describe Budget do + + describe "description" do + it "changes depending on the phase" do + budget = create(:budget) + + Budget::VALID_PHASES.each do |phase| + budget.phase = phase + expect(budget.description).to eq(budget.send("description_#{phase}")) + expect(budget.description).to be_html_safe + end + end + end + describe "phase" do let(:budget) { create(:budget) } From ecb3461a972f18298b847a5024f09fcc7c94c4c8 Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 13:16:22 +0100 Subject: [PATCH 15/23] Renames Budget::VALID_PHASES to just PHASES --- app/helpers/budgets_helper.rb | 2 +- app/models/budget.rb | 6 +++--- spec/models/budget_spec.rb | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/helpers/budgets_helper.rb b/app/helpers/budgets_helper.rb index aa6684b2d..0e3594b0a 100644 --- a/app/helpers/budgets_helper.rb +++ b/app/helpers/budgets_helper.rb @@ -1,7 +1,7 @@ module BudgetsHelper def budget_phases_select_options - Budget::VALID_PHASES.map { |ph| [ t("budget.phase.#{ph}"), ph ] } + Budget::PHASES.map { |ph| [ t("budget.phase.#{ph}"), ph ] } end def budget_currency_symbol_select_options diff --git a/app/models/budget.rb b/app/models/budget.rb index 425750956..186a1aa4e 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -2,11 +2,11 @@ class Budget < ActiveRecord::Base include Measurable - VALID_PHASES = %w(accepting reviewing selecting valuating balloting reviewing_ballots finished).freeze + PHASES = %w(accepting reviewing selecting valuating balloting reviewing_ballots finished).freeze CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze validates :name, presence: true - validates :phase, inclusion: { in: VALID_PHASES } + validates :phase, inclusion: { in: PHASES } validates :currency_symbol, presence: true has_many :investments, dependent: :destroy @@ -94,7 +94,7 @@ class Budget < ActiveRecord::Base def sanitize_descriptions s = WYSIWYGSanitizer.new - VALID_PHASES.each do |phase| + PHASES.each do |phase| sanitized = s.sanitize(self.send("description_#{phase}")) self.send("description_#{phase}=", sanitized) end diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index 04ebc419e..17f4de4ff 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -6,7 +6,7 @@ describe Budget do it "changes depending on the phase" do budget = create(:budget) - Budget::VALID_PHASES.each do |phase| + Budget::PHASES.each do |phase| budget.phase = phase expect(budget.description).to eq(budget.send("description_#{phase}")) expect(budget.description).to be_html_safe @@ -18,7 +18,7 @@ describe Budget do let(:budget) { create(:budget) } it "is validated" do - Budget::VALID_PHASES.each do |phase| + Budget::PHASES.each do |phase| budget.phase = phase expect(budget).to be_valid end From 9e4b2fda894516081788a82588f09219705b259e Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 15:03:58 +0100 Subject: [PATCH 16/23] Adds phases to form --- app/controllers/admin/budgets_controller.rb | 4 +++- app/models/budget.rb | 4 ++++ app/views/admin/budgets/_form.html.erb | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/budgets_controller.rb b/app/controllers/admin/budgets_controller.rb index e7e462fc8..0b373c0bd 100644 --- a/app/controllers/admin/budgets_controller.rb +++ b/app/controllers/admin/budgets_controller.rb @@ -40,7 +40,9 @@ class Admin::BudgetsController < Admin::BaseController private def budget_params - params.require(:budget).permit(:name, :description, :phase, :currency_symbol) + descriptions = Budget::PHASES.map{|p| "description_#{p}"}.map(&:to_sym) + valid_attributes = [:name, :phase, :currency_symbol] + descriptions + params.require(:budget).permit(*valid_attributes) end end diff --git a/app/models/budget.rb b/app/models/budget.rb index 186a1aa4e..e2acf1de8 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -31,6 +31,10 @@ class Budget < ActiveRecord::Base self.send("description_#{self.phase}").try(:html_safe) end + def self.description_max_length + 2000 + end + def accepting? phase == "accepting" end diff --git a/app/views/admin/budgets/_form.html.erb b/app/views/admin/budgets/_form.html.erb index 03507afa0..ff61aed54 100644 --- a/app/views/admin/budgets/_form.html.erb +++ b/app/views/admin/budgets/_form.html.erb @@ -2,7 +2,9 @@ <%= f.text_field :name, maxlength: Budget.title_max_length %> - <%= f.cktext_area :description, maxlength: Budget.description_max_length, ckeditor: { language: I18n.locale } %> + <% Budget::PHASES.each do |phase| %> + <%= f.cktext_area "description_#{phase}", maxlength: Budget.description_max_length, ckeditor: { language: I18n.locale } %> + <% end %>
From 9effcc404113842aaf6db4c7e8bbcc05ab2c9b39 Mon Sep 17 00:00:00 2001 From: kikito Date: Sun, 1 Jan 2017 15:04:06 +0100 Subject: [PATCH 17/23] i18n --- app/views/admin/budgets/_form.html.erb | 2 +- config/locales/activerecord.en.yml | 8 +++++++- config/locales/activerecord.es.yml | 8 +++++++- config/locales/admin.en.yml | 1 - config/locales/admin.es.yml | 1 - config/locales/budgets.en.yml | 4 +++- config/locales/budgets.es.yml | 6 ++++-- 7 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/views/admin/budgets/_form.html.erb b/app/views/admin/budgets/_form.html.erb index ff61aed54..22a774b76 100644 --- a/app/views/admin/budgets/_form.html.erb +++ b/app/views/admin/budgets/_form.html.erb @@ -14,5 +14,5 @@ <%= f.select :currency_symbol, budget_currency_symbol_select_options %>
- <%= f.submit t("admin.budgets.new.submit"), class: "button success" %> + <%= f.submit nil, class: "button success" %> <% end %> diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 9feabbb8a..a9c4ba1bc 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -43,7 +43,13 @@ en: attributes: budget: name: "Name" - descripcion: "Description" + description_accepting: "Description during Accepting phase" + description_reviewing: "Description during Reviewing phase" + description_selecting: "Description during Selecting phase" + description_valuating: "Description during Valuating phase" + description_balloting: "Description during Balloting phase" + description_reviewing_ballots: "Description during Reviewing Ballots phase" + description_finished: "Description when the budget is finished" phase: "Phase" currency_symbol: "Currency" budget/investment: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 631d18741..b781de267 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -43,7 +43,13 @@ es: attributes: budget: name: "Nombre" - description: "Descripción" + description_accepting: "Descripción durante la fase de aceptación" + description_reviewing: "Descripción durante la fase de revisión" + description_selecting: "Descripción durante la fase de selección" + description_valuating: "Descripción durante la fase de evaluación" + description_balloting: "Descripción duratne la fase de votación" + description_reviewing_ballots: "Descripción durante la fase de revisión de votos" + description_finished: "Descripción cuando el presupuesto ha finalizado" phase: "Fase" currency_symbol: "Divisa" budget/investment: diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index 078cee398..f77846e86 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -74,7 +74,6 @@ en: title: Edit Participatory budget new: title: New participatory budget - submit: Create budget show: phase: Current phase currency: Currency diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index c1a8b752e..90e658dd4 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -74,7 +74,6 @@ es: title: Editar campaña de presupuestos participativos new: title: Nuevo presupuesto ciudadano - submit: Crear presupuesto show: phase: Fase actual currency: Divisa diff --git a/config/locales/budgets.en.yml b/config/locales/budgets.en.yml index d35c3def8..974f412eb 100644 --- a/config/locales/budgets.en.yml +++ b/config/locales/budgets.en.yml @@ -24,10 +24,12 @@ en: title: Select a heading budget: phase: - on_hold: On hold accepting: Accepting proposals + reviewing: Reviewing proposals selecting: Selecting + valuating: Valuating balloting: Balloting + reviewing_ballots: Reviewing Ballots finished: Finished groups: index: diff --git a/config/locales/budgets.es.yml b/config/locales/budgets.es.yml index 948b396fd..db24dba79 100644 --- a/config/locales/budgets.es.yml +++ b/config/locales/budgets.es.yml @@ -24,10 +24,12 @@ es: title: Selecciona una partida budget: phase: - on_hold: En pausa accepting: Aceptando propuestas + reviewing: Revisando propuestas selecting: Fase de selección - balloting: Fase de Votación + valuating: Fase de evaluación de propuestas + balloting: Fase de votación + reviewing_ballots: Contando resultados finished: Terminado groups: index: From 451179fa590119f48c63df056b3a189dc1254d47 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 2 Jan 2017 08:22:11 +0100 Subject: [PATCH 18/23] fixes issues with valuating in specs --- app/models/abilities/administrator.rb | 2 +- app/models/abilities/valuator.rb | 2 +- spec/models/abilities/administrator_spec.rb | 4 ++-- spec/models/abilities/valuator_spec.rb | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index 8d7694b32..582d6a9e0 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -46,7 +46,7 @@ module Abilities can [:read, :create, :update, :destroy], Budget::Group can [:read, :create, :update, :destroy], Budget::Heading can [:hide, :update, :toggle_selection], Budget::Investment - can :valuate, Budget::Investment, budget: { valuating: true } + can :valuate, Budget::Investment, budget: { phase: 'valuating' } can :create, Budget::ValuatorAssignment can [:search, :edit, :update, :create, :index, :destroy], Banner diff --git a/app/models/abilities/valuator.rb b/app/models/abilities/valuator.rb index d3979a640..1462e2630 100644 --- a/app/models/abilities/valuator.rb +++ b/app/models/abilities/valuator.rb @@ -5,7 +5,7 @@ module Abilities def initialize(user) valuator = user.valuator can [:read, :update, :valuate], SpendingProposal - can [:read, :update, :valuate], Budget::Investment, id: valuator.investment_ids, budget: { valuating: true } + can [:read, :update, :valuate], Budget::Investment, id: valuator.investment_ids, budget: { phase: 'valuating' } end end end diff --git a/spec/models/abilities/administrator_spec.rb b/spec/models/abilities/administrator_spec.rb index 8170d3434..8f48153a8 100644 --- a/spec/models/abilities/administrator_spec.rb +++ b/spec/models/abilities/administrator_spec.rb @@ -65,7 +65,7 @@ describe "Abilities::Administrator" do it { should be_able_to(:update, Budget::Investment) } it { should be_able_to(:hide, Budget::Investment) } - it { should be_able_to(:valuate, create(:budget_investment, budget: create(:budget, valuating: true))) } - it { should_not be_able_to(:valuate, create(:budget_investment, budget: create(:budget, valuating: false))) } + it { should be_able_to(:valuate, create(:budget_investment, budget: create(:budget, phase: 'valuating'))) } + it { should_not be_able_to(:valuate, create(:budget_investment, budget: create(:budget, phase: 'finished'))) } end diff --git a/spec/models/abilities/valuator_spec.rb b/spec/models/abilities/valuator_spec.rb index 9fa285f19..fee24f6a8 100644 --- a/spec/models/abilities/valuator_spec.rb +++ b/spec/models/abilities/valuator_spec.rb @@ -7,10 +7,10 @@ describe "Abilities::Valuator" do let(:valuator) { create(:valuator) } let(:non_assigned_investment) { create(:budget_investment) } - let(:assigned_investment) { create(:budget_investment, budget: create(:budget, valuating: true)) } + let(:assigned_investment) { create(:budget_investment, budget: create(:budget, phase: 'valuating')) } before(:each) { assigned_investment.valuators << valuator } - let(:assigned_investment_not_valuating) { create(:budget_investment, budget: create(:budget, valuating: false)) } + let(:assigned_investment_not_valuating) { create(:budget_investment, budget: create(:budget, phase: 'finished')) } before(:each) { assigned_investment_not_valuating.valuators << valuator } it { should be_able_to(:read, SpendingProposal) } From 07a99b8e3fbe0cae8f712ec1087825201bbd6498 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 2 Jan 2017 10:02:05 +0100 Subject: [PATCH 19/23] Modifies the phase field in Budget --- db/migrate/20170102080432_adjust_budget_fields.rb | 5 +++++ db/schema.rb | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20170102080432_adjust_budget_fields.rb diff --git a/db/migrate/20170102080432_adjust_budget_fields.rb b/db/migrate/20170102080432_adjust_budget_fields.rb new file mode 100644 index 000000000..7517d6429 --- /dev/null +++ b/db/migrate/20170102080432_adjust_budget_fields.rb @@ -0,0 +1,5 @@ +class AdjustBudgetFields < ActiveRecord::Migration + def change + change_column :budgets, :phase, :string, limit: 40, default: 'accepting' + end +end diff --git a/db/schema.rb b/db/schema.rb index 2bd9bfa1f..34f8ee93d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161230174744) do +ActiveRecord::Schema.define(version: 20170102080432) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -162,9 +162,9 @@ ActiveRecord::Schema.define(version: 20161230174744) do create_table "budgets", force: :cascade do |t| t.string "name", limit: 30 t.string "currency_symbol", limit: 10 - t.string "phase", limit: 15, default: "on_hold" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "phase", limit: 40, default: "accepting" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.text "description_accepting" t.text "description_reviewing" t.text "description_selecting" From 4adf32d582d1515bbbd59173606b16a26c09a691 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 2 Jan 2017 10:02:34 +0100 Subject: [PATCH 20/23] Changes initializer to avoid crash when migrating database from scratch --- config/initializers/devise.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 32f387ba9..b947a5468 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -12,7 +12,7 @@ Devise.setup do |config| # Configure the e-mail address which will be shown in Devise::Mailer, # note that it will be overwritten if you use your own mailer class # with default "from" parameter. - if Rails.env.test? + if Rails.env.test? || !ActiveRecord::Base.connection.table_exists?('settings') config.mailer_sender = "noreply@example.org" else config.mailer_sender = "#{Setting['mailer_from_name']} <#{Setting['mailer_from_address']}>" From f14f7b9a70954a26451fb6cd8e2b261998e1e77a Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 2 Jan 2017 10:02:57 +0100 Subject: [PATCH 21/23] Adds new descriptions to budget in dev_seeds --- db/dev_seeds.rb | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb index 678ead096..b7cdd611a 100644 --- a/db/dev_seeds.rb +++ b/db/dev_seeds.rb @@ -327,19 +327,23 @@ end puts "Creating Budgets" -phases = %w{on_hold accepting selecting balloting finished} -phases.each_with_index do |phase, i| - budget = Budget.create!(name: (Date.today.year - 10 + i).to_s, - description: "

#{Faker::Lorem.paragraphs.join('

')}

", - currency_symbol: "€", - phase: phase, - valuating: [false, true].sample) +Budget::PHASES.each_with_index do |phase, i| + descriptions = Hash[Budget::PHASES.map{ |p| ["description_#{p}", + "

#{Faker::Lorem.paragraphs(2).join('

')}

"] }] + budget = Budget.create!( + descriptions.merge( + name: (Date.current - 10 + i).to_s, + currency_symbol: "€", + phase: phase + ) + ) + puts budget.name - (1..[1,2,3].sample).each do |i| + (1..([1, 2, 3].sample)).each do group = budget.groups.create!(name: Faker::StarWars.planet) - geozones = Geozone.reorder("RANDOM()").limit([2,5,6,7].sample) + geozones = Geozone.reorder("RANDOM()").limit([2, 5, 6, 7].sample) geozones.each do |geozone| group.headings << group.headings.create!(name: geozone.name, geozone: geozone, From 98e9e8de0fde4563aeeebd2ef63e9bc3f66dbaae Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 2 Jan 2017 10:37:37 +0100 Subject: [PATCH 22/23] Fixes errors in specs related to changes in budget phases --- spec/features/admin/budgets_spec.rb | 6 +++--- spec/features/valuation/budget_investments_spec.rb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb index 11cc34aa8..fccbd7785 100644 --- a/spec/features/admin/budgets_spec.rb +++ b/spec/features/admin/budgets_spec.rb @@ -83,10 +83,10 @@ feature 'Admin budgets' do click_link 'Create new budget' fill_in 'budget_name', with: 'M30 - Summer campaign' - fill_in 'budget_description', with: 'Budgeting for summer 2017 maintenance and improvements of the road M-30' + fill_in 'budget_description_accepting', with: 'Budgeting for summer 2017 maintenance and improvements of the road M-30' select 'Accepting proposals', from: 'budget[phase]' - click_button 'Create budget' + click_button 'Create Participatory budget' expect(page).to have_content 'New participatory budget created successfully!' expect(page).to have_content 'M30 - Summer campaign' @@ -94,7 +94,7 @@ feature 'Admin budgets' do scenario 'Name is mandatory' do visit new_admin_budget_path - click_button 'Create budget' + click_button 'Create Participatory budget' expect(page).to_not have_content 'New participatory budget created successfully!' expect(page).to have_css("label.error", text: "Name") diff --git a/spec/features/valuation/budget_investments_spec.rb b/spec/features/valuation/budget_investments_spec.rb index 56a20f2c6..627d6a391 100644 --- a/spec/features/valuation/budget_investments_spec.rb +++ b/spec/features/valuation/budget_investments_spec.rb @@ -5,7 +5,7 @@ feature 'Valuation budget investments' do background do @valuator = create(:valuator, user: create(:user, username: 'Rachel', email: 'rachel@valuators.org')) login_as(@valuator.user) - @budget = create(:budget, valuating: true) + @budget = create(:budget, :valuating) end scenario 'Disabled with a feature flag' do @@ -392,4 +392,4 @@ feature 'Valuation budget investments' do expect(page).to have_content('Only integer numbers', count: 2) end end -end \ No newline at end of file +end From 51f7239d075195c391c4093d793b41a81ba87c31 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 2 Jan 2017 10:52:59 +0100 Subject: [PATCH 23/23] i18n --- config/locales/budgets.es.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/budgets.es.yml b/config/locales/budgets.es.yml index db24dba79..1a9f9554b 100644 --- a/config/locales/budgets.es.yml +++ b/config/locales/budgets.es.yml @@ -48,7 +48,7 @@ es: description: Descripción detallada external_url: Enlace a documentación adicional heading: "Elige si es una propuesta para toda la ciudad o para un distrito" - location: "Localización de la propuesta" + location: "Ubicación de la propuesta" submit_buttons: create: Crear new: Crear @@ -103,7 +103,7 @@ es: price_explanation: Informe de coste unfeasibility_explanation: Informe de inviabilidad code_html: 'Código propuesta de gasto: %{code}' - location_html: 'Localización: %{location}' + location_html: 'Ubicación: %{location}' share: Compartir wrong_price_format: Solo puede incluir caracteres numéricos investment: