Class: CanvasSync::Jobs::SyncProvisioningReportJob

Inherits:
ReportSyncTask show all
Defined in:
lib/canvas_sync/jobs/sync_provisioning_report_job.rb

Overview

Job that syncs a Canvas provisioning report

Constant Summary

Constants inherited from ReportSyncTask

ReportSyncTask::AUTO_MODEL_REGEX, ReportSyncTask::COMPILATION_TIMEOUT, ReportSyncTask::MAX_TRIES, ReportSyncTask::REPORT_TIMEOUT

Instance Attribute Summary

Attributes inherited from ReportSyncTask

#context, #options, #state

Instance Method Summary collapse

Methods inherited from ReportSyncTask

#caching_key, #check_frequency, from_context, #initialize, #max_tries, merge_report_params, model, perform_later, perform_now, report_name, #report_name

Constructor Details

This class inherits a constructor from CanvasSync::Jobs::ReportSyncTask

Instance Method Details

#process(file) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/canvas_sync/jobs/sync_provisioning_report_job.rb', line 35

def process(file)
  if options[:models].length == 1
    run_import(options[:models][0], file)
  else
    unzipped_file_dir = extract(file)
    Dir[unzipped_file_dir + "/*.csv"].sort.each do |file_path|
      model_name = file_path.split("/").last.split(".").first
      run_import(model_name, file_path)
    end
  end
end

#report_parametersObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/canvas_sync/jobs/sync_provisioning_report_job.rb', line 10

def report_parameters
  params = { include_deleted: true }

  options[:models].each do |model|
    # group_membership is the only model param that is singular :(
    model = 'group_membership' if model == 'group_memberships'
    params[model] = true
  end

  merged_params = merge_report_params(options, params)

  # Make sure the report also checks last_activity_at when checking updated_at
  if options[:models].include?("enrollments")
    enrollment_columns = CanvasSync::Concerns::SyncMapping.mapping_for(Enrollment)[:columns].keys
    tracks_last_activity = (%w[last_activity_at total_activity_time] & enrollment_columns).present?
    include_last_activity_set = !merged_params.dig(:parameters, :include_last_activity).nil?

    if tracks_last_activity && !include_last_activity_set
      merged_params[:parameters][:include_last_activity] = true
    end
  end

  merged_params
end