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)
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)