add observer role to csv import

and add a new column for linking it to a user

refs #3315

Change-Id: I8333a0530bb2da5557385bf30f45cdd56b5eb261
Reviewed-on: https://gerrit.instructure.com/2266
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
This commit is contained in:
Brian Whitmer 2011-02-11 00:05:28 -07:00
parent 5b4abbe76c
commit 8035e390f4
2 changed files with 17 additions and 6 deletions

View File

@ -27,7 +27,7 @@ module SIS
FasterCSV.foreach(csv[:fullpath], :headers => :first_row, :skip_blanks => true, :header_converters => :downcase) do |row|
add_error(csv, "No course_id given for an enrollment") if row['course_id'].blank?
add_error(csv, "No user_id given for an enrollment") if row['user_id'].blank?
add_error(csv, "Improper role \"#{row['role']}\" for an enrollment") unless row['role'] =~ /\Astudent|\Ateacher|\Ata/i
add_error(csv, "Improper role \"#{row['role']}\" for an enrollment") unless row['role'] =~ /\Astudent|\Ateacher|\Ata|\Aobserver/i
add_error(csv, "Improper status \"#{row['status']}\" for an enrollment") unless row['status'] =~ /\Aactive|\Adeleted|\Acompleted/i
end
end
@ -72,6 +72,13 @@ module SIS
enrollment.type = 'StudentEnrollment'
elsif row['role'] =~ /\Ata\z|assistant/i
enrollment.type = 'TaEnrollment'
elsif row['role'] =~ /\Aobserver\z/i
enrollment.type = 'ObserverEnrollment'
if row['associated_user_id']
pseudo = Pseudonym.find_by_account_id_and_sis_user_id(@root_account.id, row['associated_user_id'])
associated_enrollment = pseudo && course.student_enrollments.find_by_user_id(pseudo.user_id)
enrollment.associated_user_id = associated_enrollment && associated_enrollment.user_id
end
end
if row['status']=~ /active/i

View File

@ -314,7 +314,8 @@ describe SIS::SisCsv do
"user_id,login_id,first_name,last_name,email,status",
"user_1,user1,User,Uno,user@example.com,active",
"user_2,user2,User,Dos,user2@example.com,active",
"user_3,user4,User,Tres,user3@example.com,active"
"user_3,user4,User,Tres,user3@example.com,active",
"user_5,user5,User,Quatro,user5@example.com,active"
)
process_csv_data(
"section_id,course_id,name,status,start_date,end_date",
@ -322,15 +323,18 @@ describe SIS::SisCsv do
)
# the enrollments
process_csv_data(
"course_id,user_id,role,section_name,status",
"test_1,user_1,teacher,S001,active",
"test_1,user_2,student,S001,active",
"test_1,user_3,ta,S001,active"
"course_id,user_id,role,section_name,status,associated_user_id",
"test_1,user_1,teacher,S001,active,",
"test_1,user_2,student,S001,active,",
"test_1,user_3,ta,S001,active,",
"test_1,user_5,observer,S001,active,user_2"
)
course = @account.courses.find_by_sis_source_id("test_1")
course.teachers.first.name.should == "User Uno"
course.students.first.name.should == "User Dos"
course.tas.first.name.should == "User Tres"
course.observers.first.name.should == "User Quatro"
course.observer_enrollments.first.associated_user_id.should == course.students.first.id
end
end