Class: CanvasSync::Processors::ProvisioningReportProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/canvas_sync/processors/provisioning_report_processor.rb

Constant Summary collapse

USERS_CSV_MAPPING =

Used by the bulk importer. The keys are CSV columns and the values are the database columns.

{
  canvas_user_id: :canvas_user_id,
  user_id: :sis_id,
  email: :email,
  first_name: :first_name,
  last_name: :last_name,
  status: :status,
  login_id: :login_id
}
COURSES_CSV_MAPPING =
{
  canvas_course_id: :canvas_course_id,
  course_id: :sis_id,
  short_name: :short_name,
  long_name: :long_name,
  canvas_account_id: :canvas_account_id,
  canvas_term_id: :canvas_term_id,
  term_id: :term_sis_id,
  start_date: :start_date,
  end_date: :end_date,
  status: :status
}
ENROLLMENTS_CSV_MAPPING =
{
  canvas_enrollment_id: :canvas_enrollment_id,
  canvas_course_id: :canvas_course_id,
  course_id: :course_sis_id,
  canvas_user_id: :canvas_user_id,
  user_id: :user_sis_id,
  role: :role,
  role_id: :role_id,
  canvas_section_id: :canvas_section_id,
  section_id: :section_sis_id,
  status: :status,
  base_role_type: :base_role_type
}
SECTIONS_CSV_MAPPING =
{
  canvas_section_id: :canvas_section_id,
  section_id: :sis_id,
  canvas_course_id: :canvas_course_id,
  name: :name,
  status: :status,
  start_date: :start_date,
  end_date: :end_date
}
XLIST_CSV_MAPPING =
{
  canvas_section_id: :canvas_section_id,
  canvas_nonxlist_course_id: :canvas_nonxlist_course_id
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(report_file_path, options) ⇒ ProvisioningReportProcessor

Returns a new instance of ProvisioningReportProcessor.



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/canvas_sync/processors/provisioning_report_processor.rb', line 75

def initialize(report_file_path, options)
  @options = options

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

Class Method Details

.process(report_file_path, options) ⇒ Object

Processes a provisioning report using the bulk importer.

options must contain a models key. If there is only one model Canvas downloads the single report directly as a CSV. If it's more than one model Canvas downloads a ZIP file, so we have to extract that and iterate through it for processing.

Parameters:

  • report_file_path (String)
  • options (Hash)


71
72
73
# File 'lib/canvas_sync/processors/provisioning_report_processor.rb', line 71

def self.process(report_file_path, options)
  self.new(report_file_path, options)
end