Class: Canvas::Utils::Sis
- Inherits:
-
Object
- Object
- Canvas::Utils::Sis
- 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
- .create_csv(type, models) ⇒ Object
- .generate_zip_data(zip, models) ⇒ Object
- .map_data(data) ⇒ Object
- .write_zip(filename, *models) ⇒ Object
- .zip_string(*models) ⇒ Object
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 |