@@ -41,6 +41,7 @@ def import_from_canvas(conf, backend, args):
4141 course_id = args .id
4242 section = args .section
4343 force = args .force
44+ username_column = args .username_column
4445
4546 canvas = CanvasAPI (conf ["canvas-token" ], conf ["canvas-host" ])
4647
@@ -60,15 +61,16 @@ def import_from_canvas(conf, backend, args):
6061 return
6162
6263 for s in students :
63- if 'sis_user_id' not in s or not s ['sis_user_id' ]:
64+ logger .debug (s )
65+ if username_column not in s or not s [username_column ]:
6466 logger .error ("Could not get username for %s" , s ['sortable_name' ])
6567
6668 try :
6769 add_to_roster (
68- conf , backend , conf .roster , s ['sortable_name' ], s ['sis_user_id' ], section , force , s ['id' ]
70+ conf , backend , conf .roster , s ['sortable_name' ], s [username_column ], section , force , s ['id' ]
6971 )
7072 except DuplicateUserError :
71- logger .warning ("User %s is already in the roster, skipping" , s ['sis_user_id' ])
73+ logger .warning ("User %s is already in the roster, skipping" , s [username_column ])
7274
7375 print ("Imported {} students." .format (len (students )))
7476
@@ -121,6 +123,9 @@ def setup_parser(parser):
121123 import_parser .add_argument (
122124 "--force" , action = "store_true" , help = "Import duplicate students anyway"
123125 )
126+ import_parser .add_argument (
127+ "-u" , "--username-column" , metavar = "username_column" , nargs = "?" , default = "login_id"
128+ )
124129 import_parser .set_defaults (run = import_from_canvas )
125130
126131 make_help_parser (
0 commit comments