@@ -1144,45 +1144,52 @@ def get_product_list(self, *, observation_id=None, tile_index=None, product_type
11441144 if product_type in conf .OBSERVATION_STACK_PRODUCTS :
11451145 table = 'sedm.observation_stack'
11461146
1147- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'observation_stack' )
1148- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1147+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'observation_stack' )
1148+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
11491149
11501150 query = (f"SELECT observation_stack.file_name, observation_stack.observation_stack_oid, "
11511151 f"observation_stack.observation_id, observation_stack.ra, observation_stack.dec, "
11521152 f"observation_stack.instrument_name, observation_stack.filter_name, "
11531153 "observation_stack.release_name, observation_stack.category, observation_stack.second_type, "
11541154 f"observation_stack.technique, observation_stack.product_type, observation_stack.start_time, "
1155- f"observation_stack.duration FROM { table } WHERE "
1155+ f"observation_stack.duration, observation_stack.data_set_release_part1, "
1156+ f"observation_stack.data_set_release_part2, observation_stack.data_set_release_part3 FROM "
1157+ f"{ table } WHERE "
11561158 f" observation_stack.observation_id = '{ observation_id } ' AND observation_stack.product_type = '"
11571159 f"{ product_type } ' { extra_condition } ;" )
11581160
11591161 if product_type in conf .BASIC_DOWNLOAD_DATA_PRODUCTS :
11601162 table = 'sedm.basic_download_data'
11611163
1162- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'basic_download_data' )
1163- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1164+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 ,
1165+ 'basic_download_data' )
1166+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
11641167
11651168 query = (
11661169 f"SELECT basic_download_data.basic_download_data_oid, basic_download_data.product_type, "
11671170 f"basic_download_data.product_id, CAST(basic_download_data.observation_id_list as text) AS "
11681171 f"observation_id_list, CAST(basic_download_data.tile_index_list as text) AS tile_index_list, "
11691172 f"CAST(basic_download_data.patch_id_list as text) AS patch_id_list, "
1170- f"CAST(basic_download_data.filter_name as text) AS filter_name, basic_download_data.release_name FROM "
1173+ f"CAST(basic_download_data.filter_name as text) AS filter_name, basic_download_data.release_name, "
1174+ f"basic_download_data.data_set_release_part2, basic_download_data.data_set_release_part3 FROM "
11711175 f"{ table } WHERE '{ observation_id } '=ANY(observation_id_list) AND product_type = '"
11721176 f"{ product_type } ' { extra_condition } "
11731177 f"ORDER BY observation_id_list ASC;" )
11741178
11751179 if product_type in conf .MER_SEGMENTATION_MAP_PRODUCTS :
11761180 table = 'sedm.mer_segmentation_map'
11771181
1178- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'mer_segmentation_map' )
1179- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1182+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 ,
1183+ 'mer_segmentation_map' )
1184+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
11801185
11811186 query = (
11821187 f"SELECT mer_segmentation_map.file_name, mer_segmentation_map.segmentation_map_oid, "
11831188 f"mer_segmentation_map.ra, mer_segmentation_map.dec, mer_segmentation_map.stc_s, "
11841189 f"mer_segmentation_map.tile_index, "
1185- f"mer_segmentation_map.product_type, mer_segmentation_map.product_id FROM { table } "
1190+ f"mer_segmentation_map.product_type, mer_segmentation_map.product_id, "
1191+ f"mer_segmentation_map.release_name, mer_segmentation_map.data_set_release_part2, "
1192+ f"mer_segmentation_map.data_set_release_part3 FROM { table } "
11861193 f"WHERE ( observation_id_list = '{ observation_id } ' OR observation_id_list like '{ observation_id } ,"
11871194 f"%' OR observation_id_list "
11881195 f"like '%,{ observation_id } ' OR CAST(observation_id_list as TEXT) like '%,{ observation_id } ,%' ) AND "
@@ -1191,8 +1198,8 @@ def get_product_list(self, *, observation_id=None, tile_index=None, product_type
11911198 if product_type in conf .RAW_FRAME_PRODUCTS :
11921199 table = 'sedm.raw_frame'
11931200
1194- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'raw_frame' )
1195- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1201+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'raw_frame' )
1202+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
11961203
11971204 if product_type == "dpdNispRawFrame" :
11981205 instrument_name = "NISP"
@@ -1204,47 +1211,52 @@ def get_product_list(self, *, observation_id=None, tile_index=None, product_type
12041211 f"raw_frame.instrument_name, raw_frame.data_set_release, raw_frame.filter_name, "
12051212 f"raw_frame.observation_mode, raw_frame.grism_wheel_pos, raw_frame.cal_block_id, "
12061213 f"raw_frame.cal_block_variant, raw_frame.ra, raw_frame.dec, raw_frame.obs_time_utc, "
1207- f"raw_frame.exposure_time FROM { table } WHERE raw_frame.observation_id = '{ observation_id } ' "
1214+ f"raw_frame.exposure_time, raw_frame.release_name, raw_frame.data_set_release_part1, "
1215+ f"raw_frame.data_set_release_part2, raw_frame.data_set_release_part3 FROM { table } WHERE "
1216+ f"raw_frame.observation_id = '{ observation_id } ' "
12081217 f"AND raw_frame.instrument_name = '{ instrument_name } ' { extra_condition } ;" )
12091218
12101219 if product_type in conf .CALIBRATED_FRAME_PRODUCTS :
12111220 table = 'sedm.calibrated_frame'
12121221
1213- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'calibrated_frame' )
1214- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1222+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'calibrated_frame' )
1223+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
12151224
12161225 query = (
12171226 f"SELECT calibrated_frame.file_name, calibrated_frame.calibrated_frame_oid, "
12181227 f"calibrated_frame.observation_id, calibrated_frame.instrument_name, calibrated_frame.filter_name, "
12191228 f"calibrated_frame.ra, calibrated_frame.dec, calibrated_frame.stc_s, calibrated_frame.start_time, "
1220- f"calibrated_frame.end_time, calibrated_frame.duration "
1229+ f"calibrated_frame.end_time, calibrated_frame.duration, calibrated_frame.data_set_release_part1, "
1230+ f"calibrated_frame.data_set_release_part2, calibrated_frame.data_set_release_part3 "
12211231 f"FROM { table } WHERE calibrated_frame.observation_id = '{ observation_id } ' AND "
12221232 f"calibrated_frame.product_type = '{ product_type } ' { extra_condition } ;" )
12231233
12241234 if product_type in conf .FRAME_CATALOG_PRODUCTS :
12251235 table = 'sedm.frame_catalog'
12261236
1227- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'frame_catalog' )
1228- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1237+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'frame_catalog' )
1238+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
12291239
12301240 query = (
12311241 f"SELECT frame_catalog.file_name, frame_catalog.catalog_oid, frame_catalog.observation_id, "
12321242 f"frame_catalog.instrument_name, frame_catalog.filter_name, frame_catalog.ra, frame_catalog.dec, "
12331243 f"frame_catalog.datarange_start_time, frame_catalog.datarange_end_time, "
1234- f"frame_catalog.product_type, frame_catalog.product_id FROM { table } "
1244+ f"frame_catalog.product_type, frame_catalog.product_id, frame_catalog.data_set_release_part1, "
1245+ f"frame_catalog.data_set_release_part2, frame_catalog.data_set_release_part3 FROM { table } "
12351246 f"WHERE frame_catalog.observation_id = '{ observation_id } ' AND frame_catalog.product_type = '"
12361247 f"{ product_type } ' { extra_condition } ;" )
12371248
12381249 if product_type in conf .COMBINED_SPECTRA_PRODUCTS :
12391250 table = 'sedm.combined_spectra'
12401251
1241- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'combined_spectra' )
1242- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1252+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'combined_spectra' )
1253+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
12431254
12441255 query = (
12451256 f"SELECT combined_spectra.combined_spectra_oid, combined_spectra.lambda_range, "
12461257 f"combined_spectra.tile_index, combined_spectra.stc_s, combined_spectra.product_type, "
1247- f"combined_spectra.product_id FROM { table } "
1258+ f"combined_spectra.product_id, combined_spectra.data_set_release_part1, "
1259+ f"combined_spectra.data_set_release_part2, combined_spectra.data_set_release_part3 FROM { table } "
12481260 f"WHERE ( observation_id_list = '{ observation_id } ' OR observation_id_list like '{ observation_id } %' "
12491261 f"OR observation_id_list "
12501262 f"like '% { observation_id } ' OR observation_id_list like '% { observation_id } %' ) AND "
@@ -1253,15 +1265,16 @@ def get_product_list(self, *, observation_id=None, tile_index=None, product_type
12531265 if product_type in conf .SIR_SCIENCE_FRAME_PRODUCTS :
12541266 table = 'sedm.sir_science_frame'
12551267
1256- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'sir_science_frame' )
1257- extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
1268+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 , 'sir_science_frame' )
1269+ extra_condition = '' if dsr_condition is None else f' AND { dsr_condition } '
12581270
12591271 instrument_name = "NISP"
12601272
12611273 query = (
12621274 f"SELECT sir_science_frame.file_name, sir_science_frame.science_frame_oid, "
12631275 f"sir_science_frame.observation_id, sir_science_frame.instrument_name, sir_science_frame.stc_s, "
1264- f"sir_science_frame.prod_sdc FROM { table } "
1276+ f"sir_science_frame.prod_sdc, sir_science_frame.data_set_release_part1, "
1277+ f"sir_science_frame.data_set_release_part2, sir_science_frame.data_set_release_part3 FROM { table } "
12651278 f"WHERE sir_science_frame.observation_id = '{ observation_id } ' AND sir_science_frame.instrument_name = '"
12661279 f"{ instrument_name } ' { extra_condition } ;" )
12671280
@@ -1272,7 +1285,31 @@ def get_product_list(self, *, observation_id=None, tile_index=None, product_type
12721285 format_with_results_compressed = ('votable_gzip' ,))
12731286 return job .get_results ()
12741287
1275- def get_data_set_release_condition (self , dsr_1_value = None , dsr_2_value = None , dsr_3_value = None , alias = None ):
1288+ def __get_data_set_release_condition (self , dsr_1_value = None , dsr_2_value = None , dsr_3_value = None , alias = None ):
1289+
1290+ query = None
1291+ if dsr_1_value is not None :
1292+ dsr_1_final = '.' .join (filter (None , [alias , 'data_set_release_part1' ]))
1293+ query = f"{ dsr_1_final } = '{ dsr_1_value } '"
1294+
1295+ if dsr_2_value is not None :
1296+ dsr_2_final = '.' .join (filter (None , [alias , 'data_set_release_part2' ]))
1297+ if query is not None :
1298+ query = f"{ query } AND { dsr_2_final } = '{ dsr_2_value } '"
1299+ else :
1300+ query = f"{ dsr_2_final } = '{ dsr_2_value } '"
1301+
1302+ if dsr_3_value is not None :
1303+ dsr_3_final = '.' .join (filter (None , [alias , 'data_set_release_part3' ]))
1304+ if query is not None :
1305+ query = f"{ query } AND { dsr_3_final } = { dsr_3_value } "
1306+ else :
1307+ query = f"{ dsr_3_final } = { dsr_3_value } "
1308+
1309+ return query
1310+
1311+ def __get_data_set_release_condition_from_environment (self , dsr_1_value = None , dsr_2_value = None , dsr_3_value = None ,
1312+ alias = None ):
12761313
12771314 query = None
12781315 if dsr_1_value is not None :
@@ -1604,7 +1641,7 @@ def get_scientific_product_list(self, *, observation_id=None, tile_index=None, c
16041641 if tile_index is not None :
16051642 query_extra_condition = f" AND '{ tile_index } ' = ANY(tile_index_list) "
16061643
1607- dsr_condition = self .get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 )
1644+ dsr_condition = self .__get_data_set_release_condition (dsr_part1 , dsr_part2 , dsr_part3 )
16081645 dsr_extra_condition = '' if dsr_condition is None else f'AND { dsr_condition } '
16091646
16101647 if observation_id is not None :
@@ -1710,7 +1747,9 @@ def get_scientific_product_list(self, *, observation_id=None, tile_index=None, c
17101747 f"basic_download_data.product_id, CAST(basic_download_data.observation_id_list as text) AS "
17111748 f"observation_id_list, CAST(basic_download_data.tile_index_list as text) AS tile_index_list, "
17121749 f"CAST(basic_download_data.patch_id_list as text) AS patch_id_list, "
1713- f"CAST(basic_download_data.filter_name as text) AS filter_name FROM { table } WHERE "
1750+ f"CAST(basic_download_data.filter_name as text) AS filter_name, "
1751+ f"basic_download_data.data_set_release_part1, basic_download_data.data_set_release_part2, "
1752+ f"basic_download_data.data_set_release_part3 FROM { table } WHERE "
17141753 f"release_name='{ dataset_release } ' { query_extra_condition } { dsr_extra_condition } ORDER BY "
17151754 f"observation_id_list ASC" )
17161755
0 commit comments