コード例 #1
0
ファイル: advising_note.py プロジェクト: ssilverm/boac
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
コード例 #2
0
ファイル: appointment.py プロジェクト: sandeepmjay/boac
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}
コード例 #3
0
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}
コード例 #4
0
ファイル: advising_note.py プロジェクト: ssilverm/boac
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
コード例 #5
0
ファイル: advising_note.py プロジェクト: ssilverm/boac
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
コード例 #6
0
ファイル: cohort_filter.py プロジェクト: lyttam/boac
 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
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
ファイル: appointment.py プロジェクト: raydavis/boac
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']),
    }
コード例 #10
0
ファイル: alert.py プロジェクト: ets-berkeley-edu/boac
 def result_to_dict(result):
     return {
         camelize(key): result[key]
         for key in ['id', 'alert_type', 'key', 'message']
     }
コード例 #11
0
ファイル: tool_setting.py プロジェクト: sandeepmjay/boac
 def to_api_json(self):
     return {camelize(self.key): self.value}
コード例 #12
0
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