Skip to content

Commit d9d7f83

Browse files
authored
Merge pull request qiita-spots#2002 from josenavas/fix-1998
Fixing 1998
2 parents d54f533 + 1a50f0c commit d9d7f83

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

qiita_db/test/test_util.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,7 @@ def test_supported_filepath_types(self):
729729
self.assertItemsEqual(obs, exp)
730730

731731

732+
@qiita_test_checker()
732733
class UtilTests(TestCase):
733734
"""Tests for the util functions that do not need to access the DB"""
734735

@@ -813,6 +814,8 @@ def test_generate_study_list(self):
813814
obs_info = qdb.util.generate_study_list([1, 2, 3, 4], False)
814815
self.assertEqual(obs_info, exp_info)
815816

817+
qdb.artifact.Artifact(4).visibility = 'public'
818+
exp_info[0]['status'] = 'public'
816819
exp_info[0]['proc_data_info'] = [{
817820
'data_type': '18S',
818821
'algorithm': 'QIIME (Pick closed-reference OTUs)',
@@ -834,7 +837,13 @@ def test_generate_study_list(self):
834837
'1.SKD7.640191', '1.SKD8.640184', '1.SKD9.640182',
835838
'1.SKM1.640183', '1.SKM2.640199', '1.SKM3.640197',
836839
'1.SKM4.640180', '1.SKM5.640177', '1.SKM6.640187',
837-
'1.SKM7.640188', '1.SKM8.640201', '1.SKM9.640192']}, {
840+
'1.SKM7.640188', '1.SKM8.640201', '1.SKM9.640192']}]
841+
obs_info = qdb.util.generate_study_list([1, 2, 3, 4], True,
842+
public_only=True)
843+
self.assertEqual(obs_info, exp_info)
844+
845+
exp_info[0]['proc_data_info'].extend(
846+
[{
838847
'data_type': '18S',
839848
'algorithm': 'QIIME (Pick closed-reference OTUs)',
840849
'pid': 5,
@@ -888,7 +897,7 @@ def test_generate_study_list(self):
888897
'1.SKM1.640183', '1.SKM2.640199', '1.SKM3.640197',
889898
'1.SKM4.640180', '1.SKM5.640177', '1.SKM6.640187',
890899
'1.SKM7.640188', '1.SKM8.640201', '1.SKM9.640192'],
891-
'data_type': '16S'}]
900+
'data_type': '16S'}])
892901

893902
obs_info = qdb.util.generate_study_list([1, 2, 3, 4], True)
894903
self.assertEqual(obs_info, exp_info)

qiita_db/util.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,7 +1223,7 @@ def supported_filepath_types(artifact_type):
12231223
return qdb.sql_connection.TRN.execute_fetchindex()
12241224

12251225

1226-
def generate_study_list(study_ids, build_samples):
1226+
def generate_study_list(study_ids, build_samples, public_only=False):
12271227
"""Get general study information
12281228
12291229
Parameters
@@ -1233,6 +1233,8 @@ def generate_study_list(study_ids, build_samples):
12331233
build_samples : bool
12341234
If true the sample information for each process artifact within each
12351235
study will be included
1236+
public_only : bool, optional
1237+
If true, return only public BIOM artifacts. Default: false.
12361238
12371239
Returns
12381240
-------
@@ -1289,6 +1291,14 @@ def generate_study_list(study_ids, build_samples):
12891291
LEFT JOIN qiita.artifact_type USING (artifact_type_id)
12901292
WHERE artifact_type='BIOM' AND
12911293
study_id = qiita.study.study_id) AS artifact_biom_ts,
1294+
- all the BIOM visibility sorted by artifact_id that belong to the study
1295+
(SELECT array_agg(visibility ORDER BY artifact_id)
1296+
FROM qiita.study_artifact
1297+
LEFT JOIN qiita.artifact USING (artifact_id)
1298+
LEFT JOIN qiita.artifact_type USING (artifact_type_id)
1299+
LEFT JOIN qiita.visibility USING (visibility_id)
1300+
WHERE artifact_type='BIOM' AND
1301+
study_id = qiita.study.study_id) AS artifact_biom_vis,
12921302
- all the visibilities of all artifacts that belong to the study
12931303
(SELECT array_agg(DISTINCT visibility)
12941304
FROM qiita.study_artifact
@@ -1352,6 +1362,13 @@ def generate_study_list(study_ids, build_samples):
13521362
LEFT JOIN qiita.artifact_type USING (artifact_type_id)
13531363
WHERE artifact_type='BIOM' AND
13541364
study_id = qiita.study.study_id) AS artifact_biom_ts,
1365+
(SELECT array_agg(visibility ORDER BY artifact_id)
1366+
FROM qiita.study_artifact
1367+
LEFT JOIN qiita.artifact USING (artifact_id)
1368+
LEFT JOIN qiita.artifact_type USING (artifact_type_id)
1369+
LEFT JOIN qiita.visibility USING (visibility_id)
1370+
WHERE artifact_type='BIOM' AND
1371+
study_id = qiita.study.study_id) AS artifact_biom_vis,
13551372
(SELECT array_agg(DISTINCT visibility)
13561373
FROM qiita.study_artifact
13571374
LEFT JOIN qiita.artifact USING (artifact_id)
@@ -1414,8 +1431,10 @@ def generate_study_list(study_ids, build_samples):
14141431
to_loop = zip(
14151432
info['artifact_biom_ids'], info['artifact_biom_dts'],
14161433
info['artifact_biom_ts'], info['artifact_biom_params'],
1417-
info['artifact_biom_cmd'])
1418-
for artifact_id, dt, ts, params, cmd in to_loop:
1434+
info['artifact_biom_cmd'], info['artifact_biom_vis'])
1435+
for artifact_id, dt, ts, params, cmd, vis in to_loop:
1436+
if public_only and vis != 'public':
1437+
continue
14191438
proc_info = {'processed_date': str(ts)}
14201439
proc_info['pid'] = artifact_id
14211440
proc_info['data_type'] = dt
@@ -1476,6 +1495,7 @@ def generate_study_list(study_ids, build_samples):
14761495
del info["artifact_biom_ts"]
14771496
del info["artifact_biom_params"]
14781497
del info['artifact_biom_cmd']
1498+
del info['artifact_biom_vis']
14791499

14801500
infolist.append(info)
14811501

qiita_pet/handlers/study_handlers/listing_handlers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ def _build_study_info(user, search_type, study_proc=None, proc_samples=None):
8888
# No studies left so no need to continue
8989
return []
9090

91-
return generate_study_list([s.id for s in study_set], build_samples)
91+
return generate_study_list([s.id for s in study_set], build_samples,
92+
public_only=(search_type == 'public'))
9293

9394

9495
class ListStudiesHandler(BaseHandler):

0 commit comments

Comments
 (0)