diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index e23962230..81f60b25e 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -64,6 +64,7 @@ module Abilities can [:read, :create, :update, :destroy], Budget::Heading can [:hide, :admin_update, :toggle_selection], Budget::Investment can [:valuate, :comment_valuation], Budget::Investment + cannot [:comment_valuation], Budget::Investment, budget: { phase: "finished" } can :create, Budget::ValuatorAssignment can [:edit_dossier], Budget::Investment diff --git a/app/models/abilities/valuator.rb b/app/models/abilities/valuator.rb index 5a15011a6..6615df71a 100644 --- a/app/models/abilities/valuator.rb +++ b/app/models/abilities/valuator.rb @@ -5,11 +5,9 @@ module Abilities def initialize(user) valuator = user.valuator assigned_investment_ids = valuator.assigned_investment_ids - finished = { phase: "finished" } can [:read], Budget::Investment, id: assigned_investment_ids can [:valuate], Budget::Investment, { id: assigned_investment_ids, valuation_finished: false } - cannot [:valuate, :comment_valuation], Budget::Investment, budget: finished if valuator.can_edit_dossier? can [:edit_dossier], Budget::Investment, id: assigned_investment_ids @@ -18,6 +16,8 @@ module Abilities if valuator.can_comment? can [:comment_valuation], Budget::Investment, id: assigned_investment_ids end + + cannot [:valuate, :edit_dossier, :comment_valuation], Budget::Investment, budget: { phase: "finished" } end end end diff --git a/app/views/valuation/budget_investments/_valuation_comments.html.erb b/app/views/valuation/budget_investments/_valuation_comments.html.erb index 522be99d4..f6b4c9a53 100644 --- a/app/views/valuation/budget_investments/_valuation_comments.html.erb +++ b/app/views/valuation/budget_investments/_valuation_comments.html.erb @@ -1,11 +1,9 @@

<%= t("valuation.budget_investments.valuation_comments") %>

<% unless @comment_tree.nil? %> - <% can_comment = (!@budget.finished? && can?(:comment_valuation, @investment)) %> - <%= render "/comments/comment_tree", comment_tree: @comment_tree, comment_flags: @comment_flags, display_comments_count: false, valuation: true, - allow_comments: can_comment, + allow_comments: can?(:comment_valuation, @investment), admin_layout: true %> <% end %> diff --git a/spec/models/abilities/valuator_spec.rb b/spec/models/abilities/valuator_spec.rb index f387eec5f..a4a337143 100644 --- a/spec/models/abilities/valuator_spec.rb +++ b/spec/models/abilities/valuator_spec.rb @@ -29,6 +29,9 @@ describe Abilities::Valuator do it { should be_able_to(:edit_dossier, assigned_investment) } it { should be_able_to(:comment_valuation, assigned_investment) } + it { should_not be_able_to(:edit_dossier, finished_assigned_investment) } + it { should_not be_able_to(:comment_valuation, finished_assigned_investment) } + context "cannot edit dossier" do before { valuator.can_edit_dossier = false }