def add_group_enrollment_data(self, login_id, section_id, role, status): """ Generates one enrollment for the passed group member. """ try: person = get_person_by_netid(login_id) if self.add_user_data_for_person(person): self.data.add( EnrollmentCSV(section_id=section_id, person=person, role=role, status=status)) except InvalidLoginIdException: try: person = get_person_by_gmail_id(login_id) if status == ENROLLMENT_ACTIVE: self.data.add(UserCSV(person)) self.data.add( EnrollmentCSV(section_id=section_id, person=person, role=role, status=status)) except InvalidLoginIdException as ex: self.logger.info("Skip group member {}: {}".format( login_id, ex))
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 GET(self, request, **kwargs): try: if 'gmail_id' in request.GET: gmail_id = request.GET.get('gmail_id', '').strip() person = get_person_by_gmail_id(gmail_id) return self.response_for_google_person(person) elif 'net_id' in request.GET: net_id = netid_from_request(request.GET) person = get_person_by_netid(net_id) return self.response_for_person(person) elif 'reg_id' in request.GET: reg_id = regid_from_request(request.GET) person = get_person_by_regid(reg_id) return self.response_for_person(person) else: return self.json_response('{"error":"Unrecognized user ID"}', status=400) except DataFailureException as err: data = json.loads(err.msg) return self.json_response('{"error":"%s %s"}' % ( err.status, data["StatusDescription"]), status=400) except Exception as err: return self.json_response('{"error":"%s"}' % err, status=400)
def _get_user_from_login(self, login): user = AddUser(login=login) try: try: person = get_person_by_gmail_id(login) user.login = person.login_id except UserPolicyException: person = get_person_by_netid(login) user.login = person.uwnetid user.email = user_email(person) user.name = user_fullname(person) user.regid = user_sis_id(person) if user.regid in self._course_users: user.name = self._course_users[user.regid].name user.status = 'present' user.comment = 'Already in course' except DataFailureException as ex: if ex.status != 401: raise except UserPolicyException as ex: user.status = 'invalid' user.comment = "%s" % self._prettify(str(ex)) return user
def add_group_enrollment_data(self, member, section_id, role, status): """ Generates one enrollment for the passed group member. """ if member.is_uwnetid(): person = get_person_by_netid(member.name) if self.add_user_data_for_person(person): self.data.add(EnrollmentCSV( section_id=section_id, person=person, role=role, status=status)) elif member.is_eppn(): if status == Enrollment.ACTIVE_STATUS and hasattr(member, 'login'): person = get_person_by_gmail_id(member.login) self.data.add(UserCSV(person)) else: person = get_person_by_gmail_id(member.name) self.data.add(EnrollmentCSV( section_id=section_id, person=person, role=role, status=status))
def test_user_csv(self): user = PWS().get_person_by_netid('javerage') self.assertEquals(str(UserCSV(user, 'active')), ('9136CCB8F66711D5BE060004AC494FFE,javerage,,Jamesy,' 'McJamesy,,,,[email protected],active\n')) user = PWS().get_entity_by_netid('somalt') self.assertEquals( str(UserCSV(user, 'active')), ('605764A811A847E690F107D763A4B32A,somalt,,,,' 'SOM ACADEMIC LRNG TECHNOLOGY,,,[email protected],active\n')) user = get_person_by_gmail_id('*****@*****.**') self.assertEquals(str(UserCSV(user, 'active')), ('[email protected],[email protected],,,,' 'john.smith,,,[email protected],active\n'))
def post(self, request, *args, **kwargs): try: login_data = request.data['logins'] except KeyError as ex: return RESTDispatch.error_response(400, 'Missing list of logins') users = [] for login in login_data: login = login.strip().lower() if not any(u.get('login') == login for u in users): try: user = {} try: person = get_person_by_gmail_id(login) user['login'] = person.login_id user['full_name'] = person.login_id user['is_person'] = True except UserPolicyException: login = self.strip_domain(login) person = get_person_by_netid(login) user['login'] = person.uwnetid try: user['full_name'] = person.get_formatted_name( '{first} {last}') user['is_person'] = True except AttributeError as ex: user['full_name'] = person.display_name user['is_person'] = False # UW entity sis_id = user_sis_id(person) if not any(u.get('sis_id') == sis_id for u in users): try: can_access_canvas(user['login']) except UserPolicyException as ex: user['error'] = '{}'.format(ex) user['sis_id'] = sis_id user['email'] = user_email(person) users.append(user) except DataFailureException as ex: users.append({'login': login, 'error': ex.msg}) except UserPolicyException as ex: users.append({'login': login, 'error': '{}'.format(ex)}) return RESTDispatch.json_response({'users': users})