app/permissions/decidim/elections/admin/permissions.rb in decidim-elections-0.23.6 vs app/permissions/decidim/elections/admin/permissions.rb in decidim-elections-0.24.0.rc1

- old
+ new

@@ -8,24 +8,48 @@ return permission_action if permission_action.scope != :admin case permission_action.subject when :question, :answer case permission_action.action - when :create, :update, :delete - allow_if_not_started - when :import_proposals - allow_if_not_started + when :create, :update, :delete, :import_proposals + allow_if_not_blocked + when :select + allow_if_results end + when :steps + case permission_action.action + when :read, :update + allow! + end when :election case permission_action.action when :create, :read allow! when :delete, :update, :unpublish - allow_if_not_started + allow_if_not_blocked when :publish - allow_if_valid_and_not_started + allow_if_valid_and_not_blocked end + when :trustee_participatory_space + case permission_action.action + when :create, :update + allow! + when :delete + allow_if_not_related_to_any_election + end + when :questionnaire + case permission_action.action + when :export_answers + permission_action.allow! + when :update + toggle_allow(feedback_form.present?) + end + when :questionnaire_answers + case permission_action.action + when :index, :show, :export_response + permission_action.allow! + end end permission_action end @@ -37,15 +61,31 @@ def question @question ||= context.fetch(:question, nil) end - def allow_if_not_started - toggle_allow(election && !election.started?) + def trustee_participatory_space + @trustee_participatory_space ||= context.fetch(:trustee_participatory_space, nil) end - def allow_if_valid_and_not_started - toggle_allow(election && !election.started? && election.valid_questions?) + def allow_if_results + toggle_allow(election && election.results?) + end + + def allow_if_not_blocked + toggle_allow(election && !election.blocked?) + end + + def allow_if_valid_and_not_blocked + toggle_allow(election && !election.blocked? && election.valid_questions?) + end + + def allow_if_not_related_to_any_election + toggle_allow(trustee_participatory_space.trustee.elections.empty?) + end + + def feedback_form + @feedback_form ||= context.fetch(:questionnaire, nil) end end end end end