def get(self, ignore): user = self.get_argument('user') query = self.get_argument('query') echo = int(self.get_argument('sEcho')) if user != self.current_user.id: raise HTTPError(403, 'Unauthorized search!') if query: # Search for samples matching the query search = QiitaStudySearch() try: search(query, self.current_user) study_proc, proc_samples, _ = search.filter_by_processed_data() except ParseException: self.clear() self.set_status(400) self.write('Malformed search query. Please read "search help" ' 'and try again.') return except QiitaDBIncompatibleDatatypeError as e: self.clear() self.set_status(400) searchmsg = ''.join(e) self.write(searchmsg) return except Exception as e: # catch any other error as generic server error self.clear() self.set_status(500) self.write("Server error during search. Please try again " "later") LogEntry.create('Runtime', str(e), info={ 'User': self.current_user.id, 'query': query }) return else: study_proc = proc_samples = None info = _build_study_info(self.current_user, study_proc=study_proc, proc_samples=proc_samples) # build the table json results = { "sEcho": echo, "iTotalRecords": len(info), "iTotalDisplayRecords": len(info), "aaData": info } # return the json in compact form to save transmit size self.write(dumps(results, separators=(',', ':')))
def get(self, ignore): user = self.get_argument('user') query = self.get_argument('query') echo = int(self.get_argument('sEcho')) if user != self.current_user.id: raise HTTPError(403, 'Unauthorized search!') if query: # Search for samples matching the query search = QiitaStudySearch() try: search(query, self.current_user) study_proc, proc_samples, _ = search.filter_by_processed_data() except ParseException: self.clear() self.set_status(400) self.write('Malformed search query. Please read "search help" ' 'and try again.') return except QiitaDBIncompatibleDatatypeError as e: self.clear() self.set_status(400) searchmsg = ''.join(e) self.write(searchmsg) return except Exception as e: # catch any other error as generic server error self.clear() self.set_status(500) self.write("Server error during search. Please try again " "later") LogEntry.create('Runtime', str(e), info={'User': self.current_user.id, 'query': query}) return else: study_proc = proc_samples = None info = _build_study_info(self.current_user, study_proc=study_proc, proc_samples=proc_samples) # build the table json results = { "sEcho": echo, "iTotalRecords": len(info), "iTotalDisplayRecords": len(info), "aaData": info } # return the json in compact form to save transmit size self.write(dumps(results, separators=(',', ':')))
def test_filter_by_processed_data(self): search = QiitaStudySearch() results, meta_cols = search('study_id = 1', User('*****@*****.**')) spid, pds, meta = search.filter_by_processed_data() exp_spid = {1: {'18S': [1]}} exp_pds = {1: [ '1.SKB1.640202', '1.SKB2.640194', '1.SKB3.640195', '1.SKB4.640189', '1.SKB5.640181', '1.SKB6.640176', '1.SKB7.640196', '1.SKB8.640193', '1.SKB9.640200', '1.SKD1.640179', '1.SKD2.640178', '1.SKD3.640198', '1.SKD4.640185', '1.SKD5.640186', '1.SKD6.640190', '1.SKD7.640191', '1.SKD8.640184', '1.SKD9.640182', '1.SKM1.640183', '1.SKM2.640199', '1.SKM3.640197', '1.SKM4.640180', '1.SKM5.640177', '1.SKM6.640187', '1.SKM7.640188', '1.SKM8.640201', '1.SKM9.640192']} exp_meta = pd.DataFrame.from_dict({x: 1 for x in exp_pds[1]}, orient='index') exp_meta.rename(columns={0: 'study_id'}, inplace=True) self.assertEqual(spid, exp_spid) self.assertEqual(pds, exp_pds) self.assertEqual(meta.keys(), [1]) assert_frame_equal(meta[1], exp_meta)
def get(self, ignore): user = self.get_argument('user') query = self.get_argument('query') search_type = self.get_argument('search_type') echo = int(self.get_argument('sEcho')) if user != self.current_user.id: raise HTTPError(403, 'Unauthorized search!') if search_type not in ['user', 'public']: raise HTTPError(400, 'Not a valid search type') if query: # Search for samples matching the query search = QiitaStudySearch() try: search(query, self.current_user) study_proc, proc_samples, _ = search.filter_by_processed_data() except ParseException: self.clear() self.set_status(400) self.write('Malformed search query. Please read "search help" ' 'and try again.') return except QiitaDBIncompatibleDatatypeError as e: self.clear() self.set_status(400) searchmsg = ''.join(e) self.write(searchmsg) return except Exception as e: # catch any other error as generic server error self.clear() self.set_status(500) self.write("Server error during search. Please try again " "later") LogEntry.create('Runtime', str(e), info={'User': self.current_user.id, 'query': query}) return else: study_proc = proc_samples = None info = _build_study_info(self.current_user, search_type, study_proc, proc_samples) # linkifying data len_info = len(info) for i in range(len_info): info[i]['shared'] = ", ".join([study_person_linkifier(element) for element in info[i]['shared']]) ppid = [pubmed_linkifier([p]) for p in info[i]['publication_pid']] pdoi = [doi_linkifier([p]) for p in info[i]['publication_doi']] del info[i]['publication_pid'] del info[i]['publication_doi'] info[i]['pubs'] = ', '.join(ppid + pdoi) info[i]['pi'] = study_person_linkifier(info[i]['pi']) info[i]['ebi_info'] = info[i]['ebi_submission_status'] ebi_study_accession = info[i]['ebi_study_accession'] if ebi_study_accession: info[i]['ebi_info'] = '%s (%s)' % ( ''.join([EBI_LINKIFIER.format(a) for a in ebi_study_accession.split(',')]), info[i]['ebi_submission_status']) # build the table json results = { "sEcho": echo, "iTotalRecords": len_info, "iTotalDisplayRecords": len_info, "aaData": info } # return the json in compact form to save transmit size self.write(dumps(results, separators=(',', ':')))
def get(self, ignore): user = self.get_argument('user') query = self.get_argument('query') search_type = self.get_argument('search_type') echo = int(self.get_argument('sEcho')) if user != self.current_user.id: raise HTTPError(403, 'Unauthorized search!') if search_type not in ['user', 'public']: raise HTTPError(400, 'Not a valid search type') if query: # Search for samples matching the query search = QiitaStudySearch() try: search(query, self.current_user) study_proc, proc_samples, _ = search.filter_by_processed_data() except ParseException: self.clear() self.set_status(400) self.write('Malformed search query. Please read "search help" ' 'and try again.') return except QiitaDBIncompatibleDatatypeError as e: self.clear() self.set_status(400) searchmsg = ''.join(e) self.write(searchmsg) return except Exception as e: # catch any other error as generic server error self.clear() self.set_status(500) self.write("Server error during search. Please try again " "later") LogEntry.create('Runtime', str(e), info={ 'User': self.current_user.id, 'query': query }) return else: study_proc = proc_samples = None info = _build_study_info(self.current_user, search_type, study_proc, proc_samples) # linkifying data len_info = len(info) for i in range(len_info): info[i]['shared'] = ", ".join([ study_person_linkifier(element) for element in info[i]['shared'] ]) ppid = [pubmed_linkifier([p]) for p in info[i]['publication_pid']] pdoi = [doi_linkifier([p]) for p in info[i]['publication_doi']] del info[i]['publication_pid'] del info[i]['publication_doi'] info[i]['pubs'] = ', '.join(ppid + pdoi) info[i]['pi'] = study_person_linkifier(info[i]['pi']) info[i]['ebi_info'] = info[i]['ebi_submission_status'] ebi_study_accession = info[i]['ebi_study_accession'] if ebi_study_accession: info[i]['ebi_info'] = '%s (%s)' % (''.join([ EBI_LINKIFIER.format(a) for a in ebi_study_accession.split(',') ]), info[i]['ebi_submission_status']) # build the table json results = { "sEcho": echo, "iTotalRecords": len_info, "iTotalDisplayRecords": len_info, "aaData": info } # return the json in compact form to save transmit size self.write(dumps(results, separators=(',', ':')))
echo = int(self.get_argument('sEcho')) if user != self.current_user.id: <<<<<<< HEAD raise HTTPError(403, 'Unauthorized search!') ======= raise HTTPError(403, reason='Unauthorized search!') if search_type not in ['user', 'public']: raise HTTPError(400, reason='Not a valid search type') >>>>>>> 405cbef0c9f71c620da95a0c1ba6c7d3d588b3ed if query: # Search for samples matching the query search = QiitaStudySearch() try: search(query, self.current_user) study_proc, proc_samples, _ = search.filter_by_processed_data() except ParseException: self.clear() self.set_status(400) self.write('Malformed search query. Please read "search help" ' 'and try again.') return except QiitaDBIncompatibleDatatypeError as e: self.clear() self.set_status(400) searchmsg = ''.join(e) self.write(searchmsg) return except Exception as e: # catch any other error as generic server error self.clear()