Class: Canvas::Utils::Sis

Inherits:
Object
  • Object
show all
Defined in:
app/models/canvas/utils/sis.rb

Constant Summary collapse

Headers =
{
  user: [{sis_id: 'user_id'}, :login_id, :password, :first_name, :last_name, :email, :status],
  account: [{sis_id: 'account_id'}, {parent_sis_id: 'parent_account_id'}, :name, :status],
  term: [{sis_id: 'term_id'}, :name, :status, :start_date, :end_date],
  course: [{sis_id: 'course_id'}, :short_name, :long_name, {account_sis_id: 'account_id'}, {term_sis_id: 'term_id'}, :status, :start_date, :end_date],
  section: [{sis_id: 'section_id'}, {course_sis_id: 'course_id'}, :name, :status, :start_date, :end_date, {account_sis_id: 'account_id'}],
  enrollment: [{course_sis_id: 'course_id'}, {user_sis_id: 'user_id'}, :role, {section_sis_id: 'section_id'}, :status, {associated_user_sis_id: 'associated_user_id'}],
  group: [{sis_id: 'group_id'}, {account_sis_id: 'account_id'}, :name, :status],
  group_membership: [{group_sis_id: 'group_id'}, {user_sis_id: 'user_id'}, :status],
  xlist: [{xlist_course_sis_id: 'xlist_course_id'}, {section_sis_id: 'section_id'}, :status],
  user_observer: [:observer_id, :student_id, :status]
}

Class Method Summary collapse

Class Method Details

.create_csv(type, models) ⇒ Object



19
20
21
# File 'app/models/canvas/utils/sis.rb', line 19

def create_csv(type, models)
  Canvas::Utils::Csv.create_csv(models, Headers[type.to_sym])
end

.generate_zip_data(zip, models) ⇒ Object



33
34
35
36
37
38
# File 'app/models/canvas/utils/sis.rb', line 33

def generate_zip_data(zip, models)
  map_data(models).each do |key, value|
    zip.put_next_entry("#{key}s.csv")
    zip.write create_csv(key, value)
  end
end

.map_data(data) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/models/canvas/utils/sis.rb', line 40

def map_data(data)
  models = {}
  data.flatten.each do |model|
    case model
      when Canvas::Models::Account
        (models[:account] ||= []) << model
      when Canvas::Models::Course
        (models[:course] ||= []) << model
      when Canvas::Models::Enrollment
        (models[:enrollment] ||= []) << model
      when Canvas::Models::Group
        (models[:group] ||= []) << model
      when Canvas::Models::GroupMembership
        (models[:group_membership] ||= []) << model
      when Canvas::Models::Section
        (models[:section] ||= []) << model
      when Canvas::Models::Term
        (models[:term] ||= []) << model
      when Canvas::Models::User
        (models[:user] ||= []) << model
      when Canvas::Models::XList
        (models[:xlist] ||= []) << model
      when Canvas::Models::UserObserver
        (models[:user_observer] ||= []) << model
    end
  end
  return models
end

.write_zip(filename, *models) ⇒ Object



23
24
25
# File 'app/models/canvas/utils/sis.rb', line 23

def write_zip(filename, *models)
  Zip::OutputStream.open(filename) {|zip| generate_zip_data zip, models }
end

.zip_string(*models) ⇒ Object



27
28
29
30
31
# File 'app/models/canvas/utils/sis.rb', line 27

def zip_string(*models)
  stringIO = Zip::ZipOutputStream::write_buffer {|zip| generate_zip_data zip, models }
  stringIO.rewind
  stringIO.string.bytes.to_a.pack("C*")
end