def _add_admin(self, **kwargs): netid = kwargs['net_id'] regid = kwargs['reg_id'] self._log.info('ADD: %s is %s in %s' % (netid, kwargs['role'], kwargs['account_id'])) try: User.objects.get(reg_id=regid) except User.DoesNotExist: try: person = get_person_by_netid(netid) self._log.info('Provisioning admin: %s (%s)' % ( person.uwnetid, person.uwregid)) try: user = get_user_by_sis_id(person.uwregid) except DataFailureException as err: if err.status == 404: user = create_user(CanvasUser( name=user_fullname(person), login_id=person.uwnetid, sis_user_id=person.uwregid, email=user_email(person))) User.objects.add_user(person) except Exception, err: self._log.info('Skipped admin: %s (%s)' % (netid, err)) return
def response_for_google_person(self, person): response = { 'is_valid': True, 'display_name': '', 'net_id': None, 'reg_id': None, 'gmail_id': person.login_id, 'added_date': None, 'provisioned_date': None, 'priority': 'normal', 'queue_id': None } try: user = get_user_by_sis_id(person.sis_user_id) response['provisioned_date'] = datetime.datetime.now().isoformat() response['display_name'] = user.name except DataFailureException: pass return self.json_response(json.dumps(response))
def _api_import_users(self, import_id, users, role, section, section_only, notify_users): try: imp = AddUsersImport.objects.get(id=import_id) imp.import_pid = os.getpid() imp.save() # reflect importer enrollments privilege enroll_api = Enrollments(as_user=imp.importer_id) for u in users: try: canvas_user = get_user_by_sis_id(u.regid) except DataFailureException as ex: if ex.status == 404: self._log.info( 'CREATE USER "%s" login: %s reg_id: %s' % ( u.name, u.login, u.regid)) # add user as "admin" on behalf of importer canvas_user = create_user(CanvasUser( name=u.name, login_id=u.login, sis_user_id=u.regid, email=u.email)) else: raise Exception( 'Cannot create user %s: %s' % (u.login, ex)) enroll_params = { 'role_id': role.role_id, 'enrollment_state': 'active', 'limit_privileges_to_course_section': section_only, 'notify': notify_users } if section.section_id and int(section.section_id) > 0: enroll_params['course_section_id'] = section.section_id self._log.info( '%s ADDING %s (%s) TO %s: %s ' '(%s) AS %s (%s) - O:%s, N:%s' % ( imp.importer, canvas_user.login_id, canvas_user.user_id, section.course_id, section.sis_section_id, section.section_id, role.label, role.role_id, enroll_params['limit_privileges_to_course_section'], enroll_params['notify'])) enroll_api.enroll_user(section.course_id, canvas_user.user_id, role.base_role_type, enroll_params) imp.imported += 1 imp.save() except Exception as ex: self._log.error('EXCEPTION: %s' % (ex)) imp.import_error = "exception: %s" % (ex) imp.save() sys.exit(0)