def post(self): name = self.get_argument('name') description = self.get_argument('description') user = self.get_current_user() # create list of studies study_ids = {s.id for s in Study.get_public()} userobj = User(user) [study_ids.add(x) for x in userobj.private_studies] [study_ids.add(x) for x in userobj.shared_studies] studies = [Study(i) for i in study_ids] analysis = Analysis.create(User(user), name, description) self.render('select_studies.html', user=user, aid=analysis.id, studies=studies)
def __call__(self, searchstr, user): """Runs a Study query and returns matching studies and samples Parameters ---------- searchstr : str Search string to use user : str User making the search. Needed for permissions checks. Returns ------- dict Found samples in format {study_id: [[samp_id1, meta1, meta2, ...], [samp_id2, meta1, meta2, ...], ...} list metadata column names searched for Notes ----- Metadata information for each sample is in the same order as the metadata columns list returned Metadata column names and string searches are case-sensitive """ study_sql, sample_sql, meta_headers = \ self._parse_study_search_string(searchstr) conn_handler = SQLConnectionHandler() # get all studies containing the metadata headers requested study_ids = {x[0] for x in conn_handler.execute_fetchall(study_sql)} # strip to only studies user has access to userobj = User(user) study_ids = study_ids.intersection(Study.get_public() + userobj.private_studies + userobj.shared_studies) results = {} # run search on each study to get out the matching samples for sid in study_ids: study_res = conn_handler.execute_fetchall(sample_sql.format(sid)) if study_res: # only add study to results if actually has samples in results results[sid] = study_res return results, meta_headers
def test_get_public(self): Study.create(User('*****@*****.**'), 'NOT Identification of the ' 'Microbiomes for Cannabis Soils', [1], self.info) obs = Study.get_public() self.assertEqual(obs, [1])
def get(self): self.write(self.render_string('waiting.html')) self.flush() public_studies = [Study(s_id) for s_id in Study.get_public()] self.render('public_studies.html', user=self.current_user, public_studies=public_studies)
def test_get_public(self): Study.create( User('*****@*****.**'), 'NOT Identification of the ' 'Microbiomes for Cannabis Soils', [1], self.info) obs = Study.get_public() self.assertEqual(obs, [1])