Delete valuation
This commit is contained in:
@@ -49,7 +49,6 @@
|
|||||||
//= require forms
|
//= require forms
|
||||||
//= require tracks
|
//= require tracks
|
||||||
//= require valuation_budget_investment_form
|
//= require valuation_budget_investment_form
|
||||||
//= require valuation_spending_proposal_form
|
|
||||||
//= require embed_video
|
//= require embed_video
|
||||||
//= require fixed_bar
|
//= require fixed_bar
|
||||||
//= require banners
|
//= require banners
|
||||||
@@ -105,7 +104,6 @@ var initialize_modules = function() {
|
|||||||
App.Forms.initialize();
|
App.Forms.initialize();
|
||||||
App.Tracks.initialize();
|
App.Tracks.initialize();
|
||||||
App.ValuationBudgetInvestmentForm.initialize();
|
App.ValuationBudgetInvestmentForm.initialize();
|
||||||
App.ValuationSpendingProposalForm.initialize();
|
|
||||||
App.EmbedVideo.initialize();
|
App.EmbedVideo.initialize();
|
||||||
App.FixedBar.initialize();
|
App.FixedBar.initialize();
|
||||||
App.Banners.initialize();
|
App.Banners.initialize();
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
App.ValuationSpendingProposalForm =
|
|
||||||
|
|
||||||
showFeasibleFields: ->
|
|
||||||
$("#valuation_spending_proposal_edit_form #not_feasible_fields").hide("down")
|
|
||||||
$("#valuation_spending_proposal_edit_form #feasible_fields").show()
|
|
||||||
|
|
||||||
showNotFeasibleFields: ->
|
|
||||||
$("#valuation_spending_proposal_edit_form #feasible_fields").hide("down")
|
|
||||||
$("#valuation_spending_proposal_edit_form #not_feasible_fields").show()
|
|
||||||
|
|
||||||
showAllFields: ->
|
|
||||||
$("#valuation_spending_proposal_edit_form #feasible_fields").show("down")
|
|
||||||
$("#valuation_spending_proposal_edit_form #not_feasible_fields").show("down")
|
|
||||||
|
|
||||||
showFeasibilityFields: ->
|
|
||||||
feasible = $("#valuation_spending_proposal_edit_form input[type=radio][name='spending_proposal[feasible]']:checked").val()
|
|
||||||
if feasible == "true"
|
|
||||||
App.ValuationSpendingProposalForm.showFeasibleFields()
|
|
||||||
else if feasible == "false"
|
|
||||||
App.ValuationSpendingProposalForm.showNotFeasibleFields()
|
|
||||||
|
|
||||||
|
|
||||||
showFeasibilityFieldsOnChange: ->
|
|
||||||
$("#valuation_spending_proposal_edit_form input[type=radio][name='spending_proposal[feasible]']").change ->
|
|
||||||
App.ValuationSpendingProposalForm.showAllFields()
|
|
||||||
App.ValuationSpendingProposalForm.showFeasibilityFields()
|
|
||||||
|
|
||||||
|
|
||||||
initialize: ->
|
|
||||||
App.ValuationSpendingProposalForm.showFeasibilityFields()
|
|
||||||
App.ValuationSpendingProposalForm.showFeasibilityFieldsOnChange()
|
|
||||||
false
|
|
||||||
@@ -43,10 +43,6 @@ class Admin::ValuatorsController < Admin::BaseController
|
|||||||
redirect_to admin_valuators_path
|
redirect_to admin_valuators_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def summary
|
|
||||||
@valuators = Valuator.order(spending_proposals_count: :desc)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def valuator_params
|
def valuator_params
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
class Valuation::SpendingProposalsController < Valuation::BaseController
|
|
||||||
include FeatureFlags
|
|
||||||
feature_flag :spending_proposals
|
|
||||||
|
|
||||||
before_action :restrict_access_to_assigned_items, only: [:show, :edit, :valuate]
|
|
||||||
|
|
||||||
has_filters %w{valuating valuation_finished}, only: :index
|
|
||||||
|
|
||||||
load_and_authorize_resource
|
|
||||||
|
|
||||||
def index
|
|
||||||
@geozone_filters = geozone_filters
|
|
||||||
@spending_proposals = if current_user.valuator?
|
|
||||||
SpendingProposal.scoped_filter(params_for_current_valuator, @current_filter)
|
|
||||||
.order(cached_votes_up: :desc)
|
|
||||||
.page(params[:page])
|
|
||||||
else
|
|
||||||
SpendingProposal.none.page(params[:page])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def valuate
|
|
||||||
if valid_price_params? && @spending_proposal.update(valuation_params)
|
|
||||||
|
|
||||||
if @spending_proposal.unfeasible_email_pending?
|
|
||||||
@spending_proposal.send_unfeasible_email
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect_to valuation_spending_proposal_path(@spending_proposal), notice: t("valuation.spending_proposals.notice.valuate")
|
|
||||||
else
|
|
||||||
render action: :edit
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def geozone_filters
|
|
||||||
spending_proposals = SpendingProposal.by_valuator(current_user.valuator.try(:id)).valuation_open.all.to_a
|
|
||||||
|
|
||||||
[ { name: t("valuation.spending_proposals.index.geozone_filter_all"),
|
|
||||||
id: nil,
|
|
||||||
pending_count: spending_proposals.size
|
|
||||||
},
|
|
||||||
{ name: t("geozones.none"),
|
|
||||||
id: "all",
|
|
||||||
pending_count: spending_proposals.count{|x| x.geozone_id.nil?}
|
|
||||||
}
|
|
||||||
] + Geozone.all.order(name: :asc).collect do |g|
|
|
||||||
{ name: g.name,
|
|
||||||
id: g.id,
|
|
||||||
pending_count: spending_proposals.count{|x| x.geozone_id == g.id}
|
|
||||||
}
|
|
||||||
end.select{ |x| x[:pending_count] > 0 }
|
|
||||||
end
|
|
||||||
|
|
||||||
def valuation_params
|
|
||||||
params[:spending_proposal][:feasible] = nil if params[:spending_proposal][:feasible] == "nil"
|
|
||||||
|
|
||||||
params.require(:spending_proposal).permit(:price, :price_first_year, :price_explanation, :feasible, :feasible_explanation,
|
|
||||||
:time_scope, :valuation_finished, :internal_comments)
|
|
||||||
end
|
|
||||||
|
|
||||||
def params_for_current_valuator
|
|
||||||
params.merge(valuator_id: current_user.valuator.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
def restrict_access_to_assigned_items
|
|
||||||
return if current_user.administrator? ||
|
|
||||||
ValuationAssignment.exists?(spending_proposal_id: params[:id], valuator_id: current_user.valuator.id)
|
|
||||||
raise ActionController::RoutingError.new("Not Found")
|
|
||||||
end
|
|
||||||
|
|
||||||
def valid_price_params?
|
|
||||||
if /\D/.match params[:spending_proposal][:price]
|
|
||||||
@spending_proposal.errors.add(:price, I18n.t("spending_proposals.wrong_price_format"))
|
|
||||||
end
|
|
||||||
|
|
||||||
if /\D/.match params[:spending_proposal][:price_first_year]
|
|
||||||
@spending_proposal.errors.add(:price_first_year, I18n.t("spending_proposals.wrong_price_format"))
|
|
||||||
end
|
|
||||||
|
|
||||||
@spending_proposal.errors.empty?
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -59,7 +59,6 @@ module Abilities
|
|||||||
|
|
||||||
can :manage, Dashboard::Action
|
can :manage, Dashboard::Action
|
||||||
|
|
||||||
can [:read, :update, :valuate, :destroy, :summary], SpendingProposal
|
|
||||||
can [:index, :read, :new, :create, :update, :destroy, :calculate_winners], Budget
|
can [:index, :read, :new, :create, :update, :destroy, :calculate_winners], Budget
|
||||||
can [:read, :create, :update, :destroy], Budget::Group
|
can [:read, :create, :update, :destroy], Budget::Group
|
||||||
can [:read, :create, :update, :destroy], Budget::Heading
|
can [:read, :create, :update, :destroy], Budget::Heading
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ module Abilities
|
|||||||
def initialize(user)
|
def initialize(user)
|
||||||
valuator = user.valuator
|
valuator = user.valuator
|
||||||
|
|
||||||
can [:read, :update, :valuate], SpendingProposal
|
|
||||||
can [:read, :update, :comment_valuation], Budget::Investment, id: valuator.assigned_investment_ids
|
can [:read, :update, :comment_valuation], Budget::Investment, id: valuator.assigned_investment_ids
|
||||||
can [:valuate], Budget::Investment, { id: valuator.assigned_investment_ids, valuation_finished: false }
|
can [:valuate], Budget::Investment, { id: valuator.assigned_investment_ids, valuation_finished: false }
|
||||||
cannot [:update, :valuate, :comment_valuation], Budget::Investment, budget: { phase: "finished" }
|
cannot [:update, :valuate, :comment_valuation], Budget::Investment, budget: { phase: "finished" }
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
class ValuationAssignment < ApplicationRecord
|
|
||||||
belongs_to :valuator, counter_cache: :spending_proposals_count
|
|
||||||
belongs_to :spending_proposal, counter_cache: true
|
|
||||||
end
|
|
||||||
@@ -4,8 +4,6 @@ class Valuator < ApplicationRecord
|
|||||||
|
|
||||||
delegate :name, :email, :name_and_email, to: :user
|
delegate :name, :email, :name_and_email, to: :user
|
||||||
|
|
||||||
has_many :valuation_assignments, dependent: :destroy
|
|
||||||
has_many :spending_proposals, through: :valuation_assignments
|
|
||||||
has_many :valuator_assignments, dependent: :destroy, class_name: "Budget::ValuatorAssignment"
|
has_many :valuator_assignments, dependent: :destroy, class_name: "Budget::ValuatorAssignment"
|
||||||
has_many :investments, through: :valuator_assignments, class_name: "Budget::Investment"
|
has_many :investments, through: :valuator_assignments, class_name: "Budget::Investment"
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
<ul>
|
|
||||||
<% @spending_proposal.valuators.each do |valuator| %>
|
|
||||||
<li><%= valuator.name %> (<%= valuator.email %>)</li>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.valuators.empty? %>
|
|
||||||
<li><%= t("admin.spending_proposals.show.undefined") %></li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
<%= link_to admin_spending_proposal_path(@spending_proposal, @filter_params.to_h), class: 'back' do %>
|
|
||||||
<span class="icon-angle-left"></span> <%= t("admin.spending_proposals.show.back") %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<%= form_for @spending_proposal,
|
|
||||||
url: admin_spending_proposal_path(@spending_proposal) do |f| %>
|
|
||||||
|
|
||||||
<% @filter_params.to_h.each do |filter_name, filter_value| %>
|
|
||||||
<%= hidden_field_tag filter_name, filter_value %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.text_field :title, maxlength: SpendingProposal.title_max_length %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="ckeditor small-12 column">
|
|
||||||
<%= f.cktext_area :description,
|
|
||||||
maxlength: SpendingProposal.description_max_length,
|
|
||||||
ckeditor: { language: I18n.locale } %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.text_field :external_url %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.select :geozone_id, geozone_select_options, include_blank: t("geozones.none") %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.text_field :association_name, placeholder: t("spending_proposals.form.association_name") %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 id="classification"><%= t("admin.spending_proposals.edit.classification") %></h2>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.select(:administrator_id,
|
|
||||||
@admins.collect{ |a| [a.name_and_email, a.id ] },
|
|
||||||
{ include_blank: t("admin.spending_proposals.edit.undefined") }) %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.label :tag_list, t("admin.spending_proposals.edit.tags") %>
|
|
||||||
<div class="tags">
|
|
||||||
<% @tags.each do |tag| %>
|
|
||||||
<a class="js-add-tag-link"><%= tag.name %></a>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
<%= f.text_field :tag_list, value: @spending_proposal.tag_list.to_s,
|
|
||||||
label: false,
|
|
||||||
placeholder: t("admin.spending_proposals.edit.tags_placeholder"),
|
|
||||||
class: "js-tag-list" %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-12 column">
|
|
||||||
<%= f.label :valuator_ids, t("admin.spending_proposals.edit.assigned_valuators") %>
|
|
||||||
|
|
||||||
<%= f.collection_check_boxes :valuator_ids, @valuators, :id, :email do |b| %>
|
|
||||||
<%= b.label(title: valuator_label(b.object)) { b.check_box + truncate(b.object.description_or_email, length: 60) } %>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="clear">
|
|
||||||
<%= f.submit(class: "button", value: t("admin.spending_proposals.edit.submit_button")) %>
|
|
||||||
</p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<%= render "valuation/spending_proposals/written_by_valuators" %>
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<%= link_to admin_spending_proposals_path(@filter_params.to_h), data: {no_turbolink: true} do %>
|
|
||||||
<span class="icon-angle-left"></span> <%= t("admin.spending_proposals.show.back") %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<%= render "written_by_author" %>
|
|
||||||
|
|
||||||
<%= link_to t("admin.spending_proposals.show.edit"),
|
|
||||||
edit_admin_spending_proposal_path(@spending_proposal,
|
|
||||||
@filter_params.to_h) %>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<h2 id="classification"><%= t("admin.spending_proposals.show.classification") %></h2>
|
|
||||||
|
|
||||||
<p><strong><%= t("admin.spending_proposals.show.assigned_admin") %>:</strong>
|
|
||||||
<%= @spending_proposal.administrator.try(:name_and_email) || t("admin.spending_proposals.show.undefined") %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p id="tags">
|
|
||||||
<strong><%= t("admin.spending_proposals.show.tags") %>:</strong>
|
|
||||||
|
|
||||||
<%= @spending_proposal.tags.pluck(:name).join(", ") %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p id="assigned_valuators">
|
|
||||||
<strong><%= t("admin.spending_proposals.show.assigned_valuators") %>:</strong>
|
|
||||||
<% if @spending_proposal.valuators.any? %>
|
|
||||||
<%= @spending_proposal.valuators.collect(&:name_and_email).join(", ") %>
|
|
||||||
<% else %>
|
|
||||||
<%= t("admin.spending_proposals.show.undefined") %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= link_to t("admin.spending_proposals.show.edit_classification"),
|
|
||||||
edit_admin_spending_proposal_path(@spending_proposal,
|
|
||||||
{anchor: 'classification'}.merge(@filter_params.to_h)) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<h2><%= t("admin.spending_proposals.show.dossier") %></h2>
|
|
||||||
|
|
||||||
<%= render "valuation/spending_proposals/written_by_valuators" %>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= link_to t("admin.spending_proposals.show.edit_dossier"),
|
|
||||||
edit_valuation_spending_proposal_path(@spending_proposal) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<%= link_to admin_spending_proposals_path, class: "back" do %>
|
|
||||||
<span class="icon-angle-left"></span>
|
|
||||||
<%= t("shared.back") %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<h2><%= t("admin.spending_proposals.summary.title") %></h2>
|
|
||||||
<div id="all-proposals">
|
|
||||||
<%= render "summary_table",
|
|
||||||
spending_proposals: @spending_proposals,
|
|
||||||
second_scope: "all" %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="proposals-with-votes">
|
|
||||||
<h2><%= t("admin.spending_proposals.summary.title_proposals_with_supports") %></h2>
|
|
||||||
<%= render "summary_table",
|
|
||||||
spending_proposals: @spending_proposals_with_supports,
|
|
||||||
second_scope: "with_supports" %>
|
|
||||||
</div>
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
<%= back_link_to %>
|
|
||||||
|
|
||||||
<h2><%= t("admin.valuators.summary.title") %></h2>
|
|
||||||
|
|
||||||
<table id="spending_proposals" class="investment-projects-summary">
|
|
||||||
<th><%= t("admin.valuators.summary.valuator_name") %></th>
|
|
||||||
<th><%= t("admin.valuators.summary.finished_and_feasible_count") %></th>
|
|
||||||
<th><%= t("admin.valuators.summary.finished_and_unfeasible_count") %></th>
|
|
||||||
<th><%= t("admin.valuators.summary.finished_count") %></th>
|
|
||||||
<th><%= t("admin.valuators.summary.in_evaluation_count") %></th>
|
|
||||||
<th><%= t("admin.valuators.summary.total_count") %></th>
|
|
||||||
<th><%= t("admin.valuators.summary.cost") %></th>
|
|
||||||
|
|
||||||
<% @valuators.each do |valuator| %>
|
|
||||||
<tr id="<%= dom_id(valuator) %>">
|
|
||||||
<td class="name">
|
|
||||||
<%= valuator.description_or_email %>
|
|
||||||
</td>
|
|
||||||
<td class="finished-and-feasible-count">
|
|
||||||
<%= valuator.spending_proposals.finished_and_feasible.count %>
|
|
||||||
</td>
|
|
||||||
<td class="finished-and-unfeasible-count">
|
|
||||||
<%= valuator.spending_proposals.finished_and_unfeasible.count %>
|
|
||||||
</td>
|
|
||||||
<td class="finished-count">
|
|
||||||
<%= valuator.spending_proposals.valuation_finished.count %>
|
|
||||||
</td>
|
|
||||||
<td class="in-evaluation-count">
|
|
||||||
<%= valuator.spending_proposals.valuating.count %>
|
|
||||||
</td>
|
|
||||||
<td class="total-count">
|
|
||||||
<%= valuator.spending_proposals.count %>
|
|
||||||
</td>
|
|
||||||
<td class="total-price text-center">
|
|
||||||
<%= number_to_currency(valuator.spending_proposals.sum(:price)) %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<% end %>
|
|
||||||
</table>
|
|
||||||
@@ -4,15 +4,6 @@
|
|||||||
<%= link_to t("valuation.menu.title"), valuation_root_path %>
|
<%= link_to t("valuation.menu.title"), valuation_root_path %>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<% if feature?(:spending_proposals) %>
|
|
||||||
<li <%= "class=is-active" if controller_name == "spending_proposals" %>>
|
|
||||||
<%= link_to valuation_spending_proposals_path do %>
|
|
||||||
<span class="icon-budget"></span>
|
|
||||||
<%= t("valuation.menu.spending_proposals") %>
|
|
||||||
<% end %>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if feature?(:budgets) %>
|
<% if feature?(:budgets) %>
|
||||||
<li <%= "class=is-active" if controller_name == "budget_investments" %>>
|
<li <%= "class=is-active" if controller_name == "budget_investments" %>>
|
||||||
<%= link_to valuation_budgets_path do %>
|
<%= link_to valuation_budgets_path do %>
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
<p id="price">
|
|
||||||
<strong>
|
|
||||||
<%= t("valuation.spending_proposals.show.price") %>
|
|
||||||
(<%= t("valuation.spending_proposals.show.currency") %>):
|
|
||||||
</strong>
|
|
||||||
<% if @spending_proposal.price.present? %>
|
|
||||||
<%= @spending_proposal.price %>
|
|
||||||
<% else %>
|
|
||||||
<%= t("valuation.spending_proposals.show.undefined") %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p id="price_first_year">
|
|
||||||
<strong>
|
|
||||||
<%= t("valuation.spending_proposals.show.price_first_year") %>
|
|
||||||
(<%= t("valuation.spending_proposals.show.currency") %>):
|
|
||||||
</strong>
|
|
||||||
|
|
||||||
<% if @spending_proposal.price_first_year.present? %>
|
|
||||||
<%= @spending_proposal.price_first_year %>
|
|
||||||
<% else %>
|
|
||||||
<%= t("valuation.spending_proposals.show.undefined") %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<%= explanation_field @spending_proposal.price_explanation %>
|
|
||||||
|
|
||||||
<p id="time_scope">
|
|
||||||
<strong><%= t("valuation.spending_proposals.show.time_scope") %>:</strong>
|
|
||||||
<% if @spending_proposal.time_scope.present? %>
|
|
||||||
<%= @spending_proposal.time_scope %>
|
|
||||||
<% else %>
|
|
||||||
<%= t("valuation.spending_proposals.show.undefined") %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p id="feasibility">
|
|
||||||
<strong><%= t("valuation.spending_proposals.show.feasibility") %>:</strong>
|
|
||||||
<%= t("valuation.spending_proposals.show.#{@spending_proposal.feasibility}") %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<%= explanation_field @spending_proposal.feasible_explanation %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.valuation_finished %>
|
|
||||||
<p id="valuation">
|
|
||||||
<strong><%= t("valuation.spending_proposals.show.valuation_finished") %></strong>
|
|
||||||
</p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.internal_comments.present? %>
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.internal_comments") %></h2>
|
|
||||||
<%= explanation_field @spending_proposal.internal_comments %>
|
|
||||||
<% end %>
|
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
<%= link_to "#{t("valuation.spending_proposals.show.heading")} #{@spending_proposal.id}", valuation_spending_proposal_path(@spending_proposal), class: "back" %>
|
|
||||||
<h2><%= t("valuation.spending_proposals.edit.dossier") %></h2>
|
|
||||||
|
|
||||||
<%= form_for(@spending_proposal, url: valuate_valuation_spending_proposal_path(@spending_proposal), html: {id: "valuation_spending_proposal_edit_form"}) do |f| %>
|
|
||||||
<%= render "shared/errors", resource: @spending_proposal %>
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-8 column">
|
|
||||||
<fieldset class="fieldset">
|
|
||||||
<legend><%= t("valuation.spending_proposals.edit.feasibility") %></legend>
|
|
||||||
<div class="small-4 column">
|
|
||||||
<span class="radio">
|
|
||||||
<%= f.radio_button :feasible, :nil, label: false, checked: @spending_proposal.feasible.nil? %>
|
|
||||||
<%= f.label :feasible_nil, t("valuation.spending_proposals.edit.undefined_feasible") %>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-4 column">
|
|
||||||
<span class="radio">
|
|
||||||
<%= f.radio_button :feasible, true, value: true, label: false %>
|
|
||||||
<%= f.label :feasible_true, t("valuation.spending_proposals.edit.feasible") %>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-4 column">
|
|
||||||
<span class="radio">
|
|
||||||
<%= f.radio_button :feasible, false, value: false, label: false %>
|
|
||||||
<%= f.label :feasible_false, t("valuation.spending_proposals.edit.not_feasible") %>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="not_feasible_fields" >
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-8 column">
|
|
||||||
<%= f.label :feasible_explanation, t("valuation.spending_proposals.edit.feasible_explanation_html") %>
|
|
||||||
<%= f.text_area :feasible_explanation, label: false, rows: 3 %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="feasible_fields">
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-4 column">
|
|
||||||
<%= f.label :price, "#{t("valuation.spending_proposals.edit.price_html", currency: t("valuation.spending_proposals.edit.currency"))}" %>
|
|
||||||
<%= f.number_field :price, label: false, max: 1000000000000000 %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="small-12 medium-4 column end">
|
|
||||||
<%= f.label :price_first_year, "#{t("valuation.spending_proposals.edit.price_first_year_html", currency: t("valuation.spending_proposals.edit.currency"))}" %>
|
|
||||||
<%= f.number_field :price_first_year, label: false, max: 1000000000000000 %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-8 column">
|
|
||||||
<%= f.label :price_explanation, t("valuation.spending_proposals.edit.price_explanation_html") %>
|
|
||||||
<%= f.text_area :price_explanation, label: false, rows: 3 %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-8 column">
|
|
||||||
<%= f.label :time_scope, t("valuation.spending_proposals.edit.time_scope_html") %>
|
|
||||||
<%= f.text_field :time_scope, label: false %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-8 column">
|
|
||||||
<%= f.label :valuation_finished do %>
|
|
||||||
<%= f.check_box :valuation_finished, title: t("valuation.spending_proposals.edit.valuation_finished"), label: false %>
|
|
||||||
<span class="checkbox"><%= t("valuation.spending_proposals.edit.valuation_finished") %></span>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="small-12 medium-8 column">
|
|
||||||
<%= f.label :internal_comments, t("valuation.spending_proposals.edit.internal_comments_html") %>
|
|
||||||
<%= f.text_area :internal_comments, label: false, rows: 3 %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="actions small-12 medium-4 column">
|
|
||||||
<%= f.submit(class: "button expanded large", value: t("valuation.spending_proposals.edit.save")) %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<h1><%= @spending_proposal.title %></h1>
|
|
||||||
|
|
||||||
<%= safe_html_with_links @spending_proposal.description %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.external_url.present? %>
|
|
||||||
<p><%= text_with_links @spending_proposal.external_url %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.info") %></h2>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.by") %>:</strong>
|
|
||||||
<%= link_to @spending_proposal.author.name, user_path(@spending_proposal.author) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<% if @spending_proposal.association_name.present? %>
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.association_name") %>:</strong>
|
|
||||||
<%= @spending_proposal.association_name %>
|
|
||||||
</p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.geozone") %>:</strong>
|
|
||||||
<%= geozone_name(@spending_proposal) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.sent") %>:</strong>
|
|
||||||
<%= l @spending_proposal.created_at, format: :datetime %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.responsibles") %></h2>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.assigned_admin") %>:</strong>
|
|
||||||
<% if @spending_proposal.administrator.present? %>
|
|
||||||
<%= @spending_proposal.administrator.name %> (<%= @spending_proposal.administrator.email %>)
|
|
||||||
<% else %>
|
|
||||||
<%= t("valuation.spending_proposals.show.undefined") %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.assigned_valuators") %>:</strong></p>
|
|
||||||
<div id="assigned_valuators">
|
|
||||||
<ul>
|
|
||||||
<% @spending_proposal.valuators.each do |valuator| %>
|
|
||||||
<li><%= valuator.name %> (<%= valuator.email %>)</li>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.valuators.empty? %>
|
|
||||||
<li><%= t("valuation.spending_proposals.show.undefined") %></li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
<h2><%= t("valuation.spending_proposals.index.title") %></h2>
|
|
||||||
|
|
||||||
<div class="row collapse">
|
|
||||||
<% @geozone_filters.each_slice(8) do |slice| %>
|
|
||||||
<div class="small-12 medium-4 column select-geozone">
|
|
||||||
<% slice.each do |filter| %>
|
|
||||||
<%= link_to valuation_spending_proposals_path(geozone_id: filter[:id]),
|
|
||||||
class: "#{"is-active" if params[:geozone_id].to_s == filter[:id].to_s}" do %>
|
|
||||||
<%= filter[:name] %> (<%= filter[:pending_count] %>)
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<%= render "shared/filter_subnav", i18n_namespace: "valuation.spending_proposals.index" %>
|
|
||||||
|
|
||||||
<h3><%= page_entries_info @spending_proposals %></h3>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<% @spending_proposals.each do |spending_proposal| %>
|
|
||||||
<tr id="<%= dom_id(spending_proposal) %>">
|
|
||||||
<td>
|
|
||||||
<strong><%= spending_proposal.id %></strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<%= link_to spending_proposal.title, valuation_spending_proposal_path(spending_proposal) %>
|
|
||||||
</td>
|
|
||||||
<td class="small">
|
|
||||||
<%= link_to t("valuation.spending_proposals.index.edit"), edit_valuation_spending_proposal_path(spending_proposal) %>
|
|
||||||
</td>
|
|
||||||
<td class="small">
|
|
||||||
<%= assigned_valuators_info(spending_proposal.valuators) %>
|
|
||||||
</td>
|
|
||||||
<td class="small">
|
|
||||||
<%= geozone_name(spending_proposal) %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<% end %>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<%= paginate @spending_proposals %>
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
<%= back_link_to %>
|
|
||||||
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.heading") %> <%= @spending_proposal.id %> </h2>
|
|
||||||
<h1><%= @spending_proposal.title %></h1>
|
|
||||||
|
|
||||||
<%= safe_html_with_links @spending_proposal.description %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.external_url.present? %>
|
|
||||||
<p><%= text_with_links @spending_proposal.external_url %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.info") %></h2>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.by") %>:</strong>
|
|
||||||
<%= link_to @spending_proposal.author.name, user_path(@spending_proposal.author) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<% if @spending_proposal.association_name.present? %>
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.association_name") %>:</strong>
|
|
||||||
<%= @spending_proposal.association_name %>
|
|
||||||
</p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.geozone") %>:</strong>
|
|
||||||
<%= geozone_name(@spending_proposal) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.sent") %>:</strong>
|
|
||||||
<%= l @spending_proposal.created_at, format: :datetime %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.responsibles") %></h2>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.assigned_admin") %>:</strong>
|
|
||||||
<% if @spending_proposal.administrator.present? %>
|
|
||||||
<%= @spending_proposal.administrator.name_and_email %>
|
|
||||||
<% else %>
|
|
||||||
<%= t("valuation.spending_proposals.show.undefined") %>
|
|
||||||
<% end %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><strong><%= t("valuation.spending_proposals.show.assigned_valuators") %>:</strong></p>
|
|
||||||
<div id="assigned_valuators">
|
|
||||||
<ul>
|
|
||||||
<% @spending_proposal.valuators.each do |valuator| %>
|
|
||||||
<li><%= valuator.name_and_email %></li>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if @spending_proposal.valuators.empty? %>
|
|
||||||
<li><%= t("valuation.spending_proposals.show.undefined") %></li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2><%= t("valuation.spending_proposals.show.dossier") %></h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<%= link_to t("valuation.spending_proposals.show.edit_dossier"), edit_valuation_spending_proposal_path(@spending_proposal) %>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<%= render "written_by_valuators" %>
|
|
||||||
@@ -168,7 +168,6 @@ ignore_unused:
|
|||||||
- "moderation.budget_investments.index.order*"
|
- "moderation.budget_investments.index.order*"
|
||||||
- "moderation.proposal_notifications.index.filter*"
|
- "moderation.proposal_notifications.index.filter*"
|
||||||
- "moderation.proposal_notifications.index.order*"
|
- "moderation.proposal_notifications.index.order*"
|
||||||
- "valuation.spending_proposals.index.filter*"
|
|
||||||
- "valuation.budgets.index.filter*"
|
- "valuation.budgets.index.filter*"
|
||||||
- "valuation.budget_investments.index.filter*"
|
- "valuation.budget_investments.index.filter*"
|
||||||
- "users.show.filters.*"
|
- "users.show.filters.*"
|
||||||
|
|||||||
@@ -715,7 +715,6 @@ en:
|
|||||||
content_block:
|
content_block:
|
||||||
update: "Update Block"
|
update: "Update Block"
|
||||||
title_moderated_content: Moderated content
|
title_moderated_content: Moderated content
|
||||||
title_budgets: Budgets
|
|
||||||
title_profiles: Profiles
|
title_profiles: Profiles
|
||||||
title_settings: Settings
|
title_settings: Settings
|
||||||
title_site_customization: Site content
|
title_site_customization: Site content
|
||||||
@@ -906,15 +905,6 @@ en:
|
|||||||
delete: Delete
|
delete: Delete
|
||||||
search:
|
search:
|
||||||
title: "Valuators: User search"
|
title: "Valuators: User search"
|
||||||
summary:
|
|
||||||
title: Valuator summary for investment projects
|
|
||||||
valuator_name: Valuator
|
|
||||||
finished_and_feasible_count: Finished and feasible
|
|
||||||
finished_and_unfeasible_count: Finished and unfeasible
|
|
||||||
finished_count: Finished
|
|
||||||
in_evaluation_count: In evaluation
|
|
||||||
total_count: Total
|
|
||||||
cost: Cost
|
|
||||||
form:
|
form:
|
||||||
edit_title: "Valuators: Edit valuator"
|
edit_title: "Valuators: Edit valuator"
|
||||||
update: "Update valuator"
|
update: "Update valuator"
|
||||||
@@ -1378,16 +1368,6 @@ en:
|
|||||||
tags: Tags
|
tags: Tags
|
||||||
tags_placeholder: "Write the tags you want separated by commas (,)"
|
tags_placeholder: "Write the tags you want separated by commas (,)"
|
||||||
undefined: Undefined
|
undefined: Undefined
|
||||||
summary:
|
|
||||||
title: Summary for investment projects
|
|
||||||
title_proposals_with_supports: Summary for investment projects with supports
|
|
||||||
geozone_name: Scope
|
|
||||||
finished_and_feasible_count: Finished and feasible
|
|
||||||
finished_and_unfeasible_count: Finished and unfeasible
|
|
||||||
finished_count: Finished
|
|
||||||
in_evaluation_count: In evaluation
|
|
||||||
total_count: Total
|
|
||||||
cost_for_geozone: Cost
|
|
||||||
geozones:
|
geozones:
|
||||||
index:
|
index:
|
||||||
title: Geozone
|
title: Geozone
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ en:
|
|||||||
menu:
|
menu:
|
||||||
title: Valuation
|
title: Valuation
|
||||||
budgets: Participatory budgets
|
budgets: Participatory budgets
|
||||||
spending_proposals: Spending proposals
|
|
||||||
budgets:
|
budgets:
|
||||||
index:
|
index:
|
||||||
title: Participatory budgets
|
title: Participatory budgets
|
||||||
@@ -77,52 +76,3 @@ en:
|
|||||||
valuate: "Dossier updated"
|
valuate: "Dossier updated"
|
||||||
valuation_comments: Valuation comments
|
valuation_comments: Valuation comments
|
||||||
not_in_valuating_phase: Investments can only be valuated when Budget is in valuating phase
|
not_in_valuating_phase: Investments can only be valuated when Budget is in valuating phase
|
||||||
spending_proposals:
|
|
||||||
index:
|
|
||||||
geozone_filter_all: All zones
|
|
||||||
filters:
|
|
||||||
valuation_open: Open
|
|
||||||
valuating: Under valuation
|
|
||||||
valuation_finished: Valuation finished
|
|
||||||
title: Investment projects for participatory budgeting
|
|
||||||
edit: Edit
|
|
||||||
show:
|
|
||||||
back: Back
|
|
||||||
heading: Investment project
|
|
||||||
info: Author info
|
|
||||||
association_name: Association
|
|
||||||
by: Sent by
|
|
||||||
sent: Sent at
|
|
||||||
geozone: Scope
|
|
||||||
dossier: Dossier
|
|
||||||
edit_dossier: Edit dossier
|
|
||||||
price: Price
|
|
||||||
price_first_year: Cost during the first year
|
|
||||||
currency: "€"
|
|
||||||
feasibility: Feasibility
|
|
||||||
feasible: Feasible
|
|
||||||
not_feasible: Not feasible
|
|
||||||
undefined: Undefined
|
|
||||||
valuation_finished: Valuation finished
|
|
||||||
time_scope: Time scope
|
|
||||||
internal_comments: Internal comments
|
|
||||||
responsibles: Responsibles
|
|
||||||
assigned_admin: Assigned admin
|
|
||||||
assigned_valuators: Assigned valuators
|
|
||||||
edit:
|
|
||||||
dossier: Dossier
|
|
||||||
price_html: "Price (%{currency})"
|
|
||||||
price_first_year_html: "Cost during the first year (%{currency})"
|
|
||||||
currency: "€"
|
|
||||||
price_explanation_html: Price explanation
|
|
||||||
feasibility: Feasibility
|
|
||||||
feasible: Feasible
|
|
||||||
not_feasible: Not feasible
|
|
||||||
undefined_feasible: Pending
|
|
||||||
feasible_explanation_html: Feasibility explanation
|
|
||||||
valuation_finished: Valuation finished
|
|
||||||
time_scope_html: Time scope
|
|
||||||
internal_comments_html: Internal comments
|
|
||||||
save: Save changes
|
|
||||||
notice:
|
|
||||||
valuate: "Dossier updated"
|
|
||||||
|
|||||||
@@ -905,15 +905,6 @@ es:
|
|||||||
delete: Borrar
|
delete: Borrar
|
||||||
search:
|
search:
|
||||||
title: "Evaluadores: Búsqueda de usuarios"
|
title: "Evaluadores: Búsqueda de usuarios"
|
||||||
summary:
|
|
||||||
title: Resumen de evaluación de proyectos de gasto
|
|
||||||
valuator_name: Evaluador
|
|
||||||
finished_and_feasible_count: Finalizadas viables
|
|
||||||
finished_and_unfeasible_count: Finalizadas inviables
|
|
||||||
finished_count: Finalizadas
|
|
||||||
in_evaluation_count: En evaluación
|
|
||||||
total_count: Total
|
|
||||||
cost: Coste total
|
|
||||||
form:
|
form:
|
||||||
edit_title: "Evaluadores: Editar evaluador"
|
edit_title: "Evaluadores: Editar evaluador"
|
||||||
update: "Actualizar evaluador"
|
update: "Actualizar evaluador"
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ es:
|
|||||||
menu:
|
menu:
|
||||||
title: Evaluación
|
title: Evaluación
|
||||||
budgets: Presupuestos participativos
|
budgets: Presupuestos participativos
|
||||||
spending_proposals: Propuestas de inversión
|
|
||||||
budgets:
|
budgets:
|
||||||
index:
|
index:
|
||||||
title: Presupuestos participativos
|
title: Presupuestos participativos
|
||||||
@@ -77,52 +76,3 @@ es:
|
|||||||
valuate: "Dossier actualizado"
|
valuate: "Dossier actualizado"
|
||||||
valuation_comments: Comentarios de evaluación
|
valuation_comments: Comentarios de evaluación
|
||||||
not_in_valuating_phase: Los proyectos sólo pueden ser evaluados cuando el Presupuesto esté en fase de evaluación
|
not_in_valuating_phase: Los proyectos sólo pueden ser evaluados cuando el Presupuesto esté en fase de evaluación
|
||||||
spending_proposals:
|
|
||||||
index:
|
|
||||||
geozone_filter_all: Todos los ámbitos de actuación
|
|
||||||
filters:
|
|
||||||
valuation_open: Abiertas
|
|
||||||
valuating: En evaluación
|
|
||||||
valuation_finished: Evaluación finalizada
|
|
||||||
title: Propuestas de inversión para presupuestos participativos
|
|
||||||
edit: Editar
|
|
||||||
show:
|
|
||||||
back: Volver
|
|
||||||
heading: Propuesta de inversión
|
|
||||||
info: Datos de envío
|
|
||||||
association_name: Asociación
|
|
||||||
by: Enviada por
|
|
||||||
sent: Fecha de creación
|
|
||||||
geozone: Ámbito de actuación
|
|
||||||
dossier: Informe
|
|
||||||
edit_dossier: Editar informe
|
|
||||||
price: Coste
|
|
||||||
price_first_year: Coste en el primer año
|
|
||||||
currency: "€"
|
|
||||||
feasibility: Viabilidad
|
|
||||||
feasible: Viable
|
|
||||||
not_feasible: No viable
|
|
||||||
undefined: Sin definir
|
|
||||||
valuation_finished: Informe finalizado
|
|
||||||
time_scope: Plazo de ejecución
|
|
||||||
internal_comments: Comentarios internos
|
|
||||||
responsibles: Responsables
|
|
||||||
assigned_admin: Administrador asignado
|
|
||||||
assigned_valuators: Evaluadores asignados
|
|
||||||
edit:
|
|
||||||
dossier: Informe
|
|
||||||
price_html: "Coste (%{currency}) <small>(dato público)</small>"
|
|
||||||
price_first_year_html: "Coste en el primer año (%{currency}) <small>(opcional, privado)</small>"
|
|
||||||
currency: "€"
|
|
||||||
price_explanation_html: Informe de coste <small>(opcional, dato público)</small>
|
|
||||||
feasibility: Viabilidad
|
|
||||||
feasible: Viable
|
|
||||||
not_feasible: Inviable
|
|
||||||
undefined_feasible: Sin decidir
|
|
||||||
feasible_explanation_html: Informe de inviabilidad <small>(en caso de que lo sea, dato público)</small>
|
|
||||||
valuation_finished: Informe finalizado
|
|
||||||
time_scope_html: Plazo de ejecución <small>(opcional, dato no público)</small>
|
|
||||||
internal_comments_html: Comentarios y observaciones <small>(para responsables internos, dato no público)</small>
|
|
||||||
save: Guardar cambios
|
|
||||||
notice:
|
|
||||||
valuate: "Informe actualizado"
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
namespace :valuation do
|
namespace :valuation do
|
||||||
root to: "budgets#index"
|
root to: "budgets#index"
|
||||||
|
|
||||||
resources :spending_proposals, only: [:index, :show, :edit] do
|
|
||||||
patch :valuate, on: :member
|
|
||||||
end
|
|
||||||
|
|
||||||
resources :budgets, only: :index do
|
resources :budgets, only: :index do
|
||||||
resources :budget_investments, only: [:index, :show, :edit] do
|
resources :budget_investments, only: [:index, :show, :edit] do
|
||||||
patch :valuate, on: :member
|
patch :valuate, on: :member
|
||||||
|
|||||||
@@ -22,9 +22,3 @@ section "Creating Spending Proposals" do
|
|||||||
terms_of_service: "1")
|
terms_of_service: "1")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
section "Creating Valuation Assignments" do
|
|
||||||
(1..17).to_a.sample.times do
|
|
||||||
SpendingProposal.all.sample.valuators << Valuator.first
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class DestroySpendingProposalValuations < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
drop_table :valuation_assignments
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -67,11 +67,6 @@ describe Abilities::Administrator do
|
|||||||
it { should be_able_to(:comment_as_administrator, legislation_question) }
|
it { should be_able_to(:comment_as_administrator, legislation_question) }
|
||||||
it { should_not be_able_to(:comment_as_moderator, legislation_question) }
|
it { should_not be_able_to(:comment_as_moderator, legislation_question) }
|
||||||
|
|
||||||
it { should be_able_to(:read, SpendingProposal) }
|
|
||||||
it { should be_able_to(:update, SpendingProposal) }
|
|
||||||
it { should be_able_to(:valuate, SpendingProposal) }
|
|
||||||
it { should be_able_to(:destroy, SpendingProposal) }
|
|
||||||
|
|
||||||
it { should be_able_to(:create, Budget) }
|
it { should be_able_to(:create, Budget) }
|
||||||
it { should be_able_to(:update, Budget) }
|
it { should be_able_to(:update, Budget) }
|
||||||
it { should be_able_to(:read_results, Budget) }
|
it { should be_able_to(:read_results, Budget) }
|
||||||
|
|||||||
@@ -21,9 +21,11 @@ describe Abilities::Valuator do
|
|||||||
finished_assigned_investment.valuators << valuator
|
finished_assigned_investment.valuators << valuator
|
||||||
end
|
end
|
||||||
|
|
||||||
it { should be_able_to(:read, SpendingProposal) }
|
it "cannot valuate an assigned investment with a finished valuation" do
|
||||||
it { should be_able_to(:update, SpendingProposal) }
|
assigned_investment.update(valuation_finished: true)
|
||||||
it { should be_able_to(:valuate, SpendingProposal) }
|
|
||||||
|
should_not be_able_to(:valuate, assigned_investment)
|
||||||
|
end
|
||||||
|
|
||||||
it "cannot valuate an assigned investment with a finished valuation" do
|
it "cannot valuate an assigned investment with a finished valuation" do
|
||||||
assigned_investment.update(valuation_finished: true)
|
assigned_investment.update(valuation_finished: true)
|
||||||
|
|||||||
Reference in New Issue
Block a user