def study_isatab(request, q, format=None): """ Generate ISA-TAB archive for a study --- parameters: - name: q description: the primary id or doi of the study required: true type: string paramType: path produces: - application/zip """ doi = _is_doi(DOI_PATTERN_STUDY, q) try: id = doi if doi else int(q) study = Study.objects.published().get(pk=id) except: return HttpResponse(status=404) isa_tab_file = export_isatab(study) zip_file = open(isa_tab_file, 'rb') response = FileResponse(zip_file, content_type='application/zip') #response = HttpResponse(FileWrapper(zip_file), content_type='application/zip',content_transfer_encoding='binary') response.setdefault('Content-Transfer-Encoding', 'binary') response[ 'Content-Disposition'] = 'attachment; filename="isatab_study_%s.zip"' % study.id os.unlink(isa_tab_file) return response
def file_response(): if not default_storage.exists(filename): raise FileNotFoundError if time.time() - default_storage.get_modified_time( filename).timestamp() > settings.ICS_EXPIRATION: raise ExpiredFileError response = FileResponse(default_storage.open(filename), as_attachment=True, content_type='text/calendar', filename=f'{lc.username}.ics') response.setdefault('Content-Length', default_storage.size(filename)) return response
def arapheno_db_archive(request, format=None): """ Generate archive containing all studies in AraPheno --- produces: - application/zip """ # Get all published studies IDs arapheno_db_file = _export_arapheno() zip_file = open(arapheno_db_file, 'rb') response = FileResponse(zip_file, content_type='application/zip') #response = HttpResponse(FileWrapper(zip_file), content_type='application/zip',content_transfer_encoding='binary') response.setdefault('Content-Transfer-Encoding', 'binary') response['Content-Disposition'] = 'attachment; filename="arapheno.zip"' os.unlink(arapheno_db_file) return response