Add configurable UPC and RA setup flows
This commit is contained in:
@@ -73,7 +73,7 @@ def get_time_session_times(token, row_text, default_start_time, default_end_time
|
||||
|
||||
def get_product_codes(token):
|
||||
|
||||
product_codes = parse_product_codes(token.get("product_codes"))
|
||||
product_codes = parse_product_codes(token.get("create_product_codes", token.get("product_codes")))
|
||||
if product_codes:
|
||||
return product_codes
|
||||
|
||||
@@ -225,7 +225,36 @@ def create_rtm_token(driver, step, token):
|
||||
handle_transient_popups(driver)
|
||||
|
||||
|
||||
def create_upc_token(driver, step, token):
|
||||
open_trading_maintenance_page(driver, Locator.tokengenerator)
|
||||
handle_transient_popups(driver)
|
||||
step.capture("open_token_generator_upc")
|
||||
fields = [(Locator.generatormarketcode, token["market_code"], "market_code"), (Locator.generatorproductcode, token["product_code"], "product_code")]
|
||||
if driver.find_elements(By.ID, Locator.generatorgenerationmode):
|
||||
fields.append((Locator.generatorgenerationmode, token["generation_mode"], "generation_mode"))
|
||||
for element_id, value, name in fields:
|
||||
select_bootstrap_dropdown_by_id(driver, element_id, value, exact=True)
|
||||
step.capture(f"select_{name}_upc")
|
||||
step.click((By.XPATH, Locator.addnewtokenbtn), "click_add_new_token_upc")
|
||||
timings = token.get("upc_times", {})
|
||||
for name, locator, value in (
|
||||
("order_normal_start", Locator.upcorderstart, timings.get("order_normal_start_time")),
|
||||
("order_normal_end", Locator.upcorderend, timings.get("order_normal_end_time")),
|
||||
("trade_start", Locator.upctradestart, timings.get("trade_session_start_time")),
|
||||
("trade_end", Locator.upctradeend, timings.get("trade_session_end_time")),
|
||||
):
|
||||
if value:
|
||||
type_first_visible_input(driver, locator, value)
|
||||
step.capture(f"enter_{name}_upc")
|
||||
step.click((By.XPATH, Locator.savetokenbtn), "save_token_upc")
|
||||
handle_transient_popups(driver)
|
||||
step.click((By.XPATH, Locator.tokengeneratorresetbtn), "reset_token_generator_upc")
|
||||
|
||||
|
||||
def run_token_setup(driver, step, token):
|
||||
if token.get("product_type", "").upper() == "UPC":
|
||||
create_upc_token(driver, step, token)
|
||||
return
|
||||
if token.get("product_type", "").upper() == "RTM":
|
||||
create_rtm_token(driver, step, token)
|
||||
else:
|
||||
@@ -251,17 +280,48 @@ def create_and_activate_token(driver, step, token):
|
||||
select_labeled_ui_dropdown(driver, "PRODUCT CODE", product_code)
|
||||
step.capture(f"select_product_code_{product_code.lower()}")
|
||||
|
||||
generation_mode = token.get("generation_mode")
|
||||
if generation_mode:
|
||||
mode_elements = driver.find_elements(By.ID, Locator.generatorgenerationmode)
|
||||
if mode_elements:
|
||||
select_bootstrap_dropdown_by_id(driver, Locator.generatorgenerationmode, generation_mode, exact=True)
|
||||
step.capture(f"select_generation_mode_{product_code.lower()}")
|
||||
|
||||
step.click((By.XPATH, Locator.addnewtokenbtn), f"click_add_new_token_{product_code.lower()}")
|
||||
|
||||
next_day, token_expiry = get_delivery_date_and_expiry(token)
|
||||
|
||||
step.type((By.XPATH, Locator.tokendeliverystartdate), next_day, f"enter_delivery_start_date_{product_code.lower()}")
|
||||
step.type((By.XPATH, Locator.tokendeliveryenddate), next_day, f"enter_delivery_end_date_{product_code.lower()}")
|
||||
step.type((By.XPATH, Locator.tokenexpirydate), token_expiry, f"enter_token_expiry_date_{product_code.lower()}")
|
||||
if token.get("product_type", "").upper() == "UPC":
|
||||
today = datetime.now().strftime("%d/%m/%Y")
|
||||
if token.get("generation_mode") == "AnyDayUPC":
|
||||
step.type((By.XPATH, Locator.tokentradedate), today, f"enter_trade_date_{product_code.lower()}")
|
||||
timings = token.get("upc_times", {})
|
||||
normal_start = timings.get("order_normal_start_time")
|
||||
if normal_start is None and timings.get("order_normal_start_offset_minutes") is not None:
|
||||
normal_start = (datetime.now() + timedelta(minutes=timings["order_normal_start_offset_minutes"])).strftime("%H:%M")
|
||||
values = {
|
||||
Locator.upcordernormalstart: normal_start,
|
||||
Locator.upcordernormalend: timings.get("order_normal_end_time"),
|
||||
Locator.upctradesessionstart: timings.get("trade_session_start_time"),
|
||||
Locator.upctradesessionend: timings.get("trade_session_end_time"),
|
||||
}
|
||||
for locator, value in values.items():
|
||||
if value is None:
|
||||
continue
|
||||
type_first_visible_input(driver, locator, value)
|
||||
|
||||
if token.get("generation_mode") not in ("WeeklyUPC", "MonthlyUPC"):
|
||||
step.type((By.XPATH, Locator.tokendeliverystartdate), next_day, f"enter_delivery_start_date_{product_code.lower()}")
|
||||
step.type((By.XPATH, Locator.tokendeliveryenddate), next_day, f"enter_delivery_end_date_{product_code.lower()}")
|
||||
step.type((By.XPATH, Locator.tokenexpirydate), token_expiry, f"enter_token_expiry_date_{product_code.lower()}")
|
||||
|
||||
step.click((By.XPATH, Locator.savetokenbtn), f"save_token_{product_code.lower()}")
|
||||
handle_transient_popups(driver)
|
||||
|
||||
if token.get("product_type", "").upper() == "UPC":
|
||||
step.click((By.XPATH, Locator.tokengeneratorresetbtn), f"reset_token_generator_{product_code.lower()}")
|
||||
return
|
||||
|
||||
complete_time_session_edits_from_saved_token(driver, step, token)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user