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