Files
old-holivud2/app/controllers/contracts_controller.rb
2020-06-19 09:23:07 +02:00

58 lines
1.3 KiB
Ruby

class ContractsController < ApplicationController
def show
respond_to do |format|
format.pdf { send_contract_pdf }
if Rails.env.development?
format.html { render_sample_html }
end
end
end
private
def releases
if @project
policy_scope(@project.public_send(releasable_param.name.pluralize))
else
policy_scope(releasable_param.type)
end
end
def releasable_param
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
end
def releasable
authorize releases.find(releasable_param.id)
end
def contract
authorize Contract.new(releasable)
end
def download_attributes
{
disposition: "inline",
filename: contract.filename,
type: "application/pdf",
}
end
def render_sample_html
# NOTE: For development purposes, this contract renders with the current locale, not the locale of the release itself
render contract.render_attributes
end
def send_contract_pdf
# Native release contracts must be generated on-the-fly; non-native releases have a contract attachment
if releasable.native?
send_file contract.to_pdf, download_attributes
elsif policy(contract).show?
redirect_to releasable.contract.service_url
else
raise Pundit::NotAuthorizedError
end
end
end