def _get_local_notes_search_results(local_results, search_terms): results = [] student_rows = data_loch.get_basic_student_data( [row.get('sid') for row in local_results]) students_by_sid = {r.get('sid'): r for r in student_rows} for row in local_results: note = {camelize(key): row[key] for key in row.keys()} sid = note.get('sid') student_row = students_by_sid.get(sid, {}) results.append({ 'id': note.get('id'), 'studentSid': sid, 'studentUid': student_row.get('uid'), 'studentName': join_if_present( ' ', [student_row.get('first_name'), student_row.get('last_name')]), 'advisorUid': note.get('authorUid'), 'advisorName': note.get('authorName'), 'noteSnippet': _notes_text_snippet( join_if_present(' - ', [note.get('subject'), note.get('body')]), search_terms), 'createdAt': _isoformat(note, 'createdAt'), 'updatedAt': _isoformat(note, 'updatedAt'), }) return results
def _student_to_json(sid): student = data_loch.get_student_by_sid(sid) if student: api_json = {camelize(key): student[key] for key in student.keys()} else: api_json = {} return {'student': api_json}
def _student_to_json(sid): student = data_loch.get_student_by_sid(sid) if student: api_json = {camelize(key): student[key] for key in student.keys()} else: profiles = data_loch.get_historical_student_profiles_for_sids([sid]) api_json = json.loads(profiles[0].get('profile')) if profiles and profiles[0] else {} return {'student': api_json}
def get_asc_advising_notes(sid): notes_by_id = {} legacy_topics = _get_asc_advising_note_topics(sid) for legacy_note in data_loch.get_asc_advising_notes(sid): note_id = legacy_note['id'] note = {camelize(key): legacy_note[key] for key in legacy_note.keys()} note['deptCode'] = ['UWASC'] notes_by_id[note_id] = note_to_compatible_json( note=note, topics=legacy_topics.get(note_id), ) notes_by_id[note_id]['isLegacy'] = True return notes_by_id
def get_sis_advising_notes(sid): notes_by_id = {} legacy_notes = data_loch.get_sis_advising_notes(sid) legacy_topics = _get_sis_advising_note_topics(sid) legacy_attachments = _get_advising_note_attachments(sid) for legacy_note in legacy_notes: note_id = legacy_note['id'] note = {camelize(key): legacy_note[key] for key in legacy_note.keys()} notes_by_id[note_id] = note_to_compatible_json( note=note, topics=legacy_topics.get(note_id), attachments=legacy_attachments.get(note_id), ) notes_by_id[note_id]['isLegacy'] = True return notes_by_id
def create(cls, uid, label, **kwargs): at_least_one_is_defined = False filter_criteria = {} for k, v in kwargs.items(): at_least_one_is_defined = at_least_one_is_defined or ( len(v) if isinstance(v, list) else v is not None) filter_criteria[util.camelize(k)] = v if not at_least_one_is_defined: raise InternalServerError( 'Cohort creation requires at least one filter specification.') cohort = CohortFilter(label=label, filter_criteria=filter_criteria) user = AuthorizedUser.find_by_uid(uid) user.cohort_filters.append(cohort) db.session.flush() std_commit() return cohort
def _get_loch_notes_search_results(loch_results, search_terms): results = [] calnet_advisor_feeds = get_calnet_users_for_csids( app, list( set([ row.get('advisor_sid') for row in loch_results if row.get('advisor_sid') is not None ])), ) for row in loch_results: note = {camelize(key): row[key] for key in row.keys()} advisor_feed = calnet_advisor_feeds.get(note.get('advisorSid')) advisor_name = join_if_present( ' ', [advisor_feed.get('firstName'), advisor_feed.get('lastName')]) if advisor_feed else None note_body = (note.get('noteBody') or '').strip() or join_if_present( ', ', [note.get('noteCategory'), note.get('noteSubcategory')]) results.append({ 'id': note.get('id'), 'studentSid': note.get('sid'), 'studentUid': note.get('uid'), 'studentName': join_if_present(' ', [note.get('firstName'), note.get('lastName')]), 'advisorSid': note.get('advisorSid'), 'advisorName': advisor_name or join_if_present( ' ', [note.get('advisorFirstName'), note.get('advisorLastName')]), 'noteSnippet': search_result_text_snippet(note_body, search_terms, NOTE_SEARCH_PATTERN), 'createdAt': _resolve_created_at(note), 'updatedAt': _resolve_updated_at(note), }) return results
def _get_local_notes_search_results(local_results, cutoff, search_terms): results = [] student_rows = data_loch.get_basic_student_data( [row.get('sid') for row in local_results]) students_by_sid = {r.get('sid'): r for r in student_rows} for row in local_results: note = {camelize(key): row[key] for key in row.keys()} sid = note.get('sid') student_row = students_by_sid.get(sid, {}) if student_row: omit_note_body = note.get( 'isPrivate') and not current_user.can_access_private_notes subject = note.get('subject') text = subject if omit_note_body else join_if_present( ' - ', [subject, note.get('body')]) results.append({ 'id': note.get('id'), 'studentSid': sid, 'studentUid': student_row.get('uid'), 'studentName': join_if_present(' ', [ student_row.get('first_name'), student_row.get('last_name') ]), 'advisorUid': note.get('authorUid'), 'advisorName': note.get('authorName'), 'noteSnippet': search_result_text_snippet(text, search_terms, TEXT_SEARCH_PATTERN), 'createdAt': _isoformat(note, 'createdAt'), 'updatedAt': _isoformat(note, 'updatedAt'), }) if len(results) == cutoff: break return results
def _to_json(search_terms, search_result): appointment_id = search_result['id'] student = data_loch.get_student_by_sid(search_result['student_sid']) api_json = { 'id': appointment_id, 'advisorName': search_result['advisor_name'], 'advisorRole': search_result['advisor_role'], 'advisorUid': search_result['advisor_uid'], 'advisorDeptCodes': search_result['advisor_dept_codes'], 'createdAt': _isoformat(search_result['created_at']), 'createdBy': search_result['created_by'], 'deptCode': search_result['dept_code'], 'details': search_result['details'], 'detailsSnippet': search_result_text_snippet(search_result['details'], search_terms, APPOINTMENT_SEARCH_PATTERN), 'student': {camelize(key): student[key] for key in student.keys()}, 'updatedAt': _isoformat(search_result['updated_at']), 'updatedBy': search_result['updated_by'], } return { **api_json, **_appointment_event_to_json(appointment_id, search_result['status']), }
def result_to_dict(result): return { camelize(key): result[key] for key in ['id', 'alert_type', 'key', 'message'] }
def to_api_json(self): return {camelize(self.key): self.value}
def _to_api_json(admit): updated_at = admit.pop('updated_at', None) admit_json = {camelize(key): admit[key] for key in admit.keys()} admit_json['updatedAt'] = _isoformat(updated_at) if updated_at else None return admit_json