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 POST(self, request, **kwargs): try: rep = json.loads(request.read()) if 'gmail_id' in rep: gmail_id = rep.get('gmail_id', '').strip() person = get_person_by_gmail_id(gmail_id) user = create_user(person) return HttpResponse() else: net_id = netid_from_request(rep) user = User.objects.get(net_id=net_id) return self.json_response('{"error":"User already exists"}', status=409) except User.DoesNotExist: try: user = User.objects.add_user(get_person_by_netid(net_id), priority=PRIORITY_IMMEDIATE) return HttpResponse() except Exception as err: return self.json_response('{"error": "%s"}' % err, status=400) except Exception as err: return self.json_response('{"error": "%s"}' % err, status=400)
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)