Beispiel #1
0
def _response_with_csv_download(benchmark, domain, fieldnames, sids):
    if domain == 'admitted_students':
        return response_with_admits_csv_download(sids=sids,
                                                 fieldnames=fieldnames,
                                                 benchmark=benchmark)
    else:
        return response_with_students_csv_download(sids=sids,
                                                   fieldnames=fieldnames,
                                                   benchmark=benchmark)
def download_csv(curated_group_id):
    benchmark = get_benchmarker(
        f'curated group {curated_group_id} download_csv')
    benchmark('begin')
    curated_group = CuratedGroup.find_by_id(curated_group_id)
    if not curated_group:
        raise ResourceNotFoundError(
            f'No curated group found with id: {curated_group_id}')
    if curated_group.owner_id != current_user.get_id():
        raise ForbiddenRequestError(
            f'Current user, {current_user.get_uid()}, does not own curated group {curated_group.id}'
        )
    return response_with_students_csv_download(
        sids=CuratedGroup.get_all_sids(curated_group_id), benchmark=benchmark)
def download_csv(curated_group_id):
    benchmark = get_benchmarker(
        f'curated group {curated_group_id} download_csv')
    benchmark('begin')
    curated_group = CuratedGroup.find_by_id(curated_group_id)
    params = request.get_json()
    fieldnames = get_param(params, 'csvColumnsSelected', [])
    if not curated_group:
        raise ResourceNotFoundError(
            f'No curated group found with id: {curated_group_id}')
    if not _can_current_user_view_curated_group(curated_group):
        raise ForbiddenRequestError(
            f'Current user, {current_user.get_uid()}, cannot view curated group {curated_group.id}'
        )
    return response_with_students_csv_download(
        sids=CuratedGroup.get_all_sids(curated_group_id),
        fieldnames=fieldnames,
        benchmark=benchmark)
Beispiel #4
0
def download_csv_per_filters():
    benchmark = get_benchmarker('cohort download_csv_per_filters')
    benchmark('begin')
    filters = get_param(request.get_json(), 'filters', [])
    if not filters:
        raise BadRequestError('API requires \'filters\'')
    filter_keys = list(map(lambda f: f['key'], filters))
    if is_unauthorized_search(filter_keys):
        raise ForbiddenRequestError(
            'You are unauthorized to access student data managed by other departments'
        )
    cohort = CohortFilter.construct_phantom_cohort(
        filters=filters,
        offset=0,
        limit=None,
        include_profiles=False,
        include_sids=True,
        include_students=False,
    )
    return response_with_students_csv_download(sids=cohort['sids'],
                                               benchmark=benchmark)