Project

General

Profile

« Previous | Next » 

Revision c57f999b

Added by Ondřej Ezr about 5 years ago

Fixes #26299 - add schedule for report generation (#6642)

View differences:

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