Skip to content

Commit b61ceec

Browse files
authored
Merge pull request #58 from eodms-sgdot/development
Development
2 parents 62c0135 + 4a7e3f7 commit b61ceec

File tree

3 files changed

+101
-14
lines changed

3 files changed

+101
-14
lines changed

eodms_cli.py

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
__license__ = 'MIT License'
1818
__description__ = 'Script used to search, order and download imagery from ' \
1919
'the EODMS using the REST API (RAPI) service.'
20-
__version__ = '3.6.0'
20+
__version__ = '3.6.1'
2121
__maintainer__ = 'Kevin Ballantyne'
2222
__email__ = 'eodms-sgdot@nrcan-rncan.gc.ca'
2323

@@ -911,8 +911,9 @@ def ask_record_ids(self, ids, single_coll=False):
911911
f"RCMImageProducts:7625368|25654750" \
912912
f",NAPL:3736869{self.eod.reset_colour})\n"
913913
if single_coll:
914-
msg = "\nEnter a single or set of Record IDs with the " \
915-
f"(Ex: {self.eod.var_colour}" \
914+
msg = f"\nEnter a single or set of Record IDs with the " \
915+
f"Collection ID at the start of IDs separated by a " \
916+
f"pipe (Ex: {self.eod.var_colour}" \
916917
f"RCMImageProducts:7625368|25654750" \
917918
f"{self.eod.reset_colour})\n"
918919
ids = self.get_input(msg, required=False)
@@ -928,7 +929,43 @@ def ask_record_ids(self, ids, single_coll=False):
928929

929930
return ids
930931

931-
def ask_st(self, record_ids):
932+
def ask_st_images(self, ids):
933+
934+
"""
935+
Asks the user for Record IDs or Order Keys for SAR Toolbox orders.
936+
937+
:param ids: A single or set of Record IDs with their collections.
938+
:type ids: str
939+
"""
940+
941+
if ids is None or ids == '':
942+
943+
if not self.eod.silent:
944+
self.print_header("Enter Record Id(s) or Order Key(s)")
945+
946+
msg = f"\nEnter a single or set of Record IDs or enter a " \
947+
f"single or set of Order Keys separated by a pipe. " \
948+
f"Include the Collection Id at the beginning of the set." \
949+
f" (Ex: {self.eod.var_colour}" \
950+
f"RCMImageProducts:7625368|25654750" \
951+
f"{self.eod.reset_colour} or {self.eod.var_colour}" \
952+
f"RCMImageProducts:RCM2_OK1373330_PK1530425_1_16M12_" \
953+
f"20210326_111202_HH_HV_GRD|RCM2_OK1373330_PK1524695_1_" \
954+
f"16M17_20210321_225956_HH_HV_GRD{self.eod.reset_colour})\n"
955+
ids = self.get_input(msg, required=False)
956+
957+
process = self.eod.validate_st_images(ids)
958+
959+
if not process:
960+
err_msg = "Invalid entry for the Record Ids or Order Keys."
961+
# self.eod.print_support(True, err_msg)
962+
self.eod.print_msg(err_msg, heading='error')
963+
self.logger.error(err_msg)
964+
self.eod.exit_cli(1)
965+
966+
return ids
967+
968+
def ask_st(self):
932969
"""
933970
Ask user for all SAR Toolbox information
934971
"""
@@ -960,7 +997,7 @@ def ask_param(param):
960997
if param.get_value():
961998
sub_params = param.get_sub_param()
962999
# print(f"param.get_value(): {param.get_value()}")
963-
if param.data_type == bool and not param.get_value():
1000+
if param.data_type == 'bool' and param.get_value() == 'False':
9641001
return None
9651002
if sub_params:
9661003
for s_param in sub_params:
@@ -1025,7 +1062,7 @@ def ask_item(item_name, item_list, item_type='runner', multiple=False,
10251062

10261063
self.print_header("Enter SAR Toolbox Information")
10271064

1028-
st = sar.SARToolbox(self.eod, record_ids)
1065+
st = sar.SARToolbox(self.eod)
10291066

10301067
###############################
10311068
# Set the category
@@ -1698,10 +1735,11 @@ def prompt(self):
16981735
sar_tb = sar.SARToolbox(self.eod, out_fn=st_request)
16991736
sar_tb.ingest_request()
17001737
else:
1701-
inputs = self.ask_record_ids(input_val, True)
1738+
inputs = self.ask_st_images(input_val)
17021739
self.params['input_val'] = inputs
17031740

1704-
sar_tb = self.ask_st(self.params['input_val'])
1741+
# sar_tb = self.ask_st(self.params['input_val'])
1742+
sar_tb = self.ask_st()
17051743

17061744
self.params['st_request'] = sar_tb.out_fn
17071745

@@ -1713,7 +1751,7 @@ def prompt(self):
17131751
self.print_syntax()
17141752

17151753
# Run the order_csv process
1716-
self.eod.order_st(sar_tb, priority)
1754+
self.eod.order_st(sar_tb, self.params)
17171755

17181756
else:
17191757
# self.eod.print_support("That is not a valid process type.")

scripts/sar.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -703,9 +703,10 @@ def __init__(self, eod, record_ids=None, out_fn=None):
703703
with urllib.request.urlopen(schema_url) as response:
704704
self.schema_json = json.loads(response.read())
705705

706-
if record_ids:
707-
self.coll_id, rec_ids = record_ids.split(':')
708-
self.record_ids = rec_ids.split('|')
706+
# if record_ids:
707+
# self.coll_id, rec_ids = record_ids.split(':')
708+
# self.record_ids = rec_ids.split('|')
709+
self.record_ids = record_ids
709710

710711
# self.constants = None
711712
self.out_fn = out_fn
@@ -726,6 +727,12 @@ def __init__(self, eod, record_ids=None, out_fn=None):
726727

727728
self.logger = logging.getLogger('eodms')
728729

730+
def set_coll_id(self, coll_id):
731+
self.coll_id = coll_id
732+
733+
def set_record_ids(self, record_ids):
734+
self.record_ids = record_ids
735+
729736
def ingest_request(self, json_fn=None):
730737
"""
731738
Gets the VAP Request from a JSON file.

scripts/utils.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1760,6 +1760,22 @@ def validate_dates(self, dates):
17601760
except Exception:
17611761
return False
17621762

1763+
def validate_st_images(self, in_vals):
1764+
"""
1765+
Validates the user input for the Record Id search
1766+
1767+
:param in_vals: The input values from the user
1768+
:type in_vals: str
1769+
"""
1770+
1771+
try:
1772+
if in_vals.find(":") > -1:
1773+
coll, rec_ids = in_vals.split(':')
1774+
return in_vals
1775+
except Exception as e:
1776+
return False
1777+
1778+
17631779
def validate_record_ids(self, ids, single_coll=False):
17641780
"""
17651781
Validates the user input for the Record Id search
@@ -1776,7 +1792,7 @@ def validate_record_ids(self, ids, single_coll=False):
17761792
for i in ids_lst:
17771793
coll, rec_ids = i.split(':')
17781794
return ids
1779-
except Exceptionase:
1795+
except Exception as e:
17801796
return False
17811797

17821798
def validate_int(self, val, limit=None):
@@ -2580,11 +2596,37 @@ def download_results(self, params):
25802596
self.cur_res = query_imgs
25812597
self._finish_process(orders)
25822598

2583-
def order_st(self, sar_toolbox, priority):
2599+
def order_st(self, sar_toolbox, params): # sar_toolbox, priority):
25842600
"""
25852601
Submit a SAR Toolbox order to the RAPI.
25862602
"""
25872603

2604+
in_vals = params.get('input_val')
2605+
priority = params.get('priority')
2606+
2607+
coll_id, ids = in_vals.split(':')
2608+
2609+
if ids.find("_") > -1:
2610+
ord_keys = ids.split('|')
2611+
for ok in ord_keys:
2612+
filters = {'Order Key': ('=', ok)}
2613+
self.eodms_rapi.search(coll_id, filters)
2614+
2615+
res = self.eodms_rapi.get_results()
2616+
if len(res) > 0:
2617+
record_ids = [r.get('recordId') for r in res]
2618+
2619+
# print(f"res: {res}")
2620+
# answer = input("Press enter...")
2621+
else:
2622+
record_ids = ids.split('|')
2623+
2624+
# print(f"record_ids: {record_ids}")
2625+
# answer = input("Press enter...")
2626+
2627+
sar_toolbox.set_coll_id(coll_id)
2628+
sar_toolbox.set_record_ids(record_ids)
2629+
25882630
start_str = self._set_result_fn()
25892631
self.logger.info(f"Process start time: {start_str}")
25902632

0 commit comments

Comments
 (0)