Sha256: 9f59702e94a8f96ff1e3e5e65a2182862c65833c215bcb97f632635189d84537
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
module CanvasSync module Jobs # ActiveJob class that starts a Canvas provisioning report class SyncProvisioningReportJob < ApplicationJob # @param job_chain [Hash] # @param options [Hash] If options contains a :term_scope a seperate provisioning report # will be started for each term in that scope. :models should be an array of # models to sync. def perform(job_chain, options) @job_chain = job_chain if options[:term_scope] Term.send(options[:term_scope]).find_each do |term| # Deep copy the options so each report gets the correct term id passed into # its options with no side effects duped_options = Marshal.load(Marshal.dump(options)) duped_options[:canvas_term_id] = term.canvas_term_id start_report(report_params(options, term.canvas_term_id), duped_options) end else start_report(report_params(options), options) end end private def start_report(report_params, options) CanvasSync::Jobs::ReportStarter.perform_later( @job_chain, 'proservices_provisioning_csv', report_params, CanvasSync::Processors::ProvisioningReportProcessor.to_s, options ) end def report_params(options, canvas_term_id=nil) params = { "parameters[include_deleted]" => true } options[:models].each do |model| params["parameters[#{model}]"] = true end params["parameters[enrollment_term_id]"] = canvas_term_id if canvas_term_id params end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
canvas_sync-0.1.3 | lib/canvas_sync/jobs/sync_provisioning_report_job.rb |
canvas_sync-0.1.2 | lib/canvas_sync/jobs/sync_provisioning_report_job.rb |