def get(self): """Send formatted summary page of sample template""" study_id = self.get_argument('study_id') files = [ f for _, f in get_files_from_uploads_folders(study_id) if f.endswith(('txt', 'tsv')) ] data_types = sorted(data_types_get_req()['data_types']) # Get the most recent version for download and build the link download = sample_template_filepaths_get_req(study_id, self.current_user.id) download_id = (download['filepaths'][0][0] if download['status'] == 'success' else None) stats = sample_template_summary_get_req(study_id, self.current_user.id) if stats['status'] != 'success': if 'does not exist' in stats['message']: raise HTTPError(404, stats['message']) if 'User does not have access to study' in stats['message']: raise HTTPError(403, stats['message']) stats['download_id'] = download_id stats['files'] = files stats['study_id'] = study_id stats['data_types'] = data_types # URL encode in case message has javascript-breaking characters in it stats['alert_message'] = url_escape(stats['alert_message']) self.render('study_ajax/sample_summary.html', **stats)
def get(self): """Send formatted summary page of sample template""" study_id = self.get_argument('study_id') files = [f for _, f in get_files_from_uploads_folders(study_id) if f.endswith(('txt', 'tsv'))] data_types = sorted(data_types_get_req()['data_types']) # Get the most recent version for download and build the link download = sample_template_filepaths_get_req( study_id, self.current_user.id) download_id = (download['filepaths'][0][0] if download['status'] == 'success' else None) stats = sample_template_summary_get_req(study_id, self.current_user.id) if stats['status'] != 'success': if 'does not exist' in stats['message']: raise HTTPError(404, stats['message']) if 'User does not have access to study' in stats['message']: raise HTTPError(403, stats['message']) stats['download_id'] = download_id stats['files'] = files stats['study_id'] = study_id stats['data_types'] = data_types # URL encode in case message has javascript-breaking characters in it stats['alert_message'] = url_escape(stats['alert_message']) self.render('study_ajax/sample_summary.html', **stats)
def sample_template_overview_handler_get_request(study_id, user): # Check if the current user has access to the sample template sample_template_checks(study_id, user) # Check if the sample template exists exists = SampleTemplate.exists(study_id) # The following information should always be provided: # The files that have been uploaded to the system and can be a # sample template file files = [ f for _, f in get_files_from_uploads_folders(study_id) if f.endswith(('txt', 'tsv')) ] # If there is a job associated with the sample information, the job id job = None job_info = r_client.get(SAMPLE_TEMPLATE_KEY_FORMAT % study_id) if job_info: job = loads(job_info)['job_id'] # Specific information if it exists or not: data_types = [] st_fp_id = None old_files = [] num_samples = 0 num_cols = 0 if exists: # If it exists we need to provide: # The id of the sample template file so the user can download it and # the list of old filepaths st = SampleTemplate(study_id) all_st_files = st.get_filepaths() # The current sample template file is the first one in the list # (pop(0)) and we are interested only in the id ([0]) st_fp_id = all_st_files.pop(0)[0] # For the old filepaths we are only interested in their basename old_files = [basename(fp) for _, fp in all_st_files] # The number of samples - this is a space efficient way of counting # the number of samples. Doing len(list(st.keys())) creates a list # that we are not using num_samples = sum(1 for _ in st.keys()) # The number of columns num_cols = len(st.categories()) else: # It doesn't exist, we also need to provide the data_types in case # the user uploads a QIIME mapping file data_types = sorted(data_types_get_req()['data_types']) return { 'exists': exists, 'uploaded_files': files, 'data_types': data_types, 'user_can_edit': Study(study_id).can_edit(user), 'job': job, 'download_id': st_fp_id, 'old_files': old_files, 'num_samples': num_samples, 'num_columns': num_cols }
def sample_template_overview_handler_get_request(study_id, user): # Check if the current user has access to the sample template sample_template_checks(study_id, user) # Check if the sample template exists exists = SampleTemplate.exists(study_id) # The following information should always be provided: # The files that have been uploaded to the system and can be a # sample template file files = [f for _, f, _ in get_files_from_uploads_folders(study_id) if f.endswith(('txt', 'tsv', 'xlsx'))] # If there is a job associated with the sample information, the job id job = None job_info = r_client.get(SAMPLE_TEMPLATE_KEY_FORMAT % study_id) if job_info: job = loads(job_info)['job_id'] # Specific information if it exists or not: data_types = [] st_fp_id = None old_files = [] num_samples = 0 num_cols = 0 if exists: # If it exists we need to provide: # The id of the sample template file so the user can download it and # the list of old filepaths st = SampleTemplate(study_id) all_st_files = st.get_filepaths() # The current sample template file is the first one in the list # (pop(0)) and we are interested only in the id ([0]) st_fp_id = all_st_files.pop(0)[0] # For the old filepaths we are only interested in their basename old_files = [basename(fp) for _, fp in all_st_files] # The number of samples - this is a space efficient way of counting # the number of samples. Doing len(list(st.keys())) creates a list # that we are not using num_samples = sum(1 for _ in st.keys()) # The number of columns num_cols = len(st.categories()) else: # It doesn't exist, we also need to provide the data_types in case # the user uploads a QIIME mapping file data_types = sorted(data_types_get_req()['data_types']) return {'exists': exists, 'uploaded_files': files, 'data_types': data_types, 'user_can_edit': Study(study_id).can_edit(user), 'job': job, 'download_id': st_fp_id, 'old_files': old_files, 'num_samples': num_samples, 'num_columns': num_cols}