Revision c57f999b
Added by Ondřej Ezr about 5 years ago
app/models/report_composer.rb | ||
---|---|---|
end
|
||
|
||
def send_mail?
|
||
raw_params['send_mail'] == '1'
|
||
raw_params['send_mail'].to_s == '1'
|
||
end
|
||
|
||
def generate_at
|
||
raw_params['generate_at']&.to_time
|
||
end
|
||
|
||
def params
|
||
{ template_id: raw_params[:id],
|
||
generate_at: generate_at,
|
||
gzip: gzip?,
|
||
send_mail: send_mail?,
|
||
mail_to: mail_to }.with_indifferent_access
|
||
... | ... | |
report_base_params[:mail_to]
|
||
end
|
||
|
||
def generate_at
|
||
Time.zone.parse(report_base_params['generate_at']) if report_base_params['generate_at'].present?
|
||
end
|
||
|
||
def params
|
||
super.merge(input_values: report_base_params[:input_values])
|
||
end
|
||
... | ... | |
!!mail_to
|
||
end
|
||
|
||
def generate_at
|
||
Time.find_zone("UTC").parse(raw_params['generate_at']) if raw_params['generate_at'].present?
|
||
end
|
||
|
||
def params
|
||
super.merge(
|
||
input_values: convert_input_names_to_ids(
|
||
... | ... | |
end
|
||
end
|
||
|
||
attr_reader :template
|
||
attr_reader :template, :generate_at
|
||
|
||
validates :mail_to, mail_to: true, if: :send_mail?
|
||
|
||
def initialize(params)
|
||
@params = params.with_indifferent_access
|
||
@generate_at = @params.delete('generate_at')
|
||
@template = load_report_template(@params[:template_id])
|
||
@input_values = build_inputs(@template, @params[:input_values])
|
||
end
|
||
... | ... | |
name
|
||
end
|
||
|
||
def schedule_rendering
|
||
scheduler = TemplateRenderJob
|
||
if generate_at
|
||
scheduler = scheduler.set(wait_until: generate_at)
|
||
end
|
||
scheduler.perform_later(self.to_params, user_id: User.current.id)
|
||
end
|
||
|
||
def render(mode: Foreman::Renderer::REAL_MODE, **params)
|
||
result = @template.render(mode: mode, template_input_values: template_input_values, **params)
|
||
result = ActiveSupport::Gzip.compress(result) if gzip?
|
Also available in: Unified diff
Fixes #26299 - add schedule for report generation (#6642)