Compare commits
7
Commits
17b0df42d4
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
123df61930 | ||
|
|
83a3d9a10c | ||
|
|
7d670eee21 | ||
|
|
b682211d22 | ||
|
|
f8c0f7280e | ||
|
|
c326df934e | ||
|
|
87c2632909 |
@@ -116,7 +116,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
driver.execute_script("window.stop();")
|
driver.execute_script("window.stop();")
|
||||||
|
|
||||||
setup(driver, parameters)
|
setup(driver, parameters)
|
||||||
until(lambda x: 'loginProgress' in x.find_element(By.TAG_NAME, "body").get_attribute('class'), watch=False)
|
until(lambda x: 'loginProgress' in x.find_element(By.TAG_NAME, "body").get_attribute('class'))
|
||||||
logger.info('Waiting for authentication...')
|
logger.info('Waiting for authentication...')
|
||||||
|
|
||||||
if (account := parameters['account']) and (password := parameters['password']):
|
if (account := parameters['account']) and (password := parameters['password']):
|
||||||
@@ -181,7 +181,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
sleep(parameters['interval'])
|
sleep(parameters['interval'])
|
||||||
|
|
||||||
file = Path(parameters['directory']).joinpath(filename)
|
file = Path(parameters['directory']).joinpath(filename)
|
||||||
until(lambda _: file.exists(), watch=False)
|
until(lambda _: file.exists())
|
||||||
p = ProductInfo(file)
|
p = ProductInfo(file)
|
||||||
driver.close()
|
driver.close()
|
||||||
driver.switch_to.window(driver.window_handles[0])
|
driver.switch_to.window(driver.window_handles[0])
|
||||||
@@ -211,6 +211,11 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def perform(cls):
|
def perform(cls):
|
||||||
if status == Status.RUNNING:
|
if status == Status.RUNNING:
|
||||||
|
try:
|
||||||
|
if driver.find_elements(By.CSS_SELECTOR, ".okki-spin"):
|
||||||
|
sleep(parameters['interval'])
|
||||||
|
return True
|
||||||
|
except: pass
|
||||||
t1.start()
|
t1.start()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -257,6 +262,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
profile = None
|
profile = None
|
||||||
progress = { 'task': '' }
|
progress = { 'task': '' }
|
||||||
selection = 0
|
selection = 0
|
||||||
|
errors = set()
|
||||||
|
|
||||||
sp.add(pairs=[ (k.lower(), v) for k, v in flow ])
|
sp.add(pairs=[ (k.lower(), v) for k, v in flow ])
|
||||||
sp.set('actions', lambda: flow.capabilities())
|
sp.set('actions', lambda: flow.capabilities())
|
||||||
@@ -275,6 +281,8 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
name = options.pop('profile')
|
name = options.pop('profile')
|
||||||
profile = next(filter(lambda o: o.name == name, profiles))
|
profile = next(filter(lambda o: o.name == name, profiles))
|
||||||
except (IndexError, KeyError):
|
except (IndexError, KeyError):
|
||||||
|
logger.error('Operation failed:\n\n%s' % ', '.join(errors)) if errors else None
|
||||||
|
errors.clear()
|
||||||
logger.info('Done')
|
logger.info('Done')
|
||||||
status = Status.READY
|
status = Status.READY
|
||||||
continue
|
continue
|
||||||
@@ -326,6 +334,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
|
|
||||||
if len(data) == 0:
|
if len(data) == 0:
|
||||||
logger.warning('Server returned an empty response')
|
logger.warning('Server returned an empty response')
|
||||||
|
errors.add(profile.name)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
logger.info('Initializing Workbook...')
|
logger.info('Initializing Workbook...')
|
||||||
@@ -453,6 +462,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
|
|
||||||
if sheet.max_row < 2:
|
if sheet.max_row < 2:
|
||||||
logger.warning("No data; skipping")
|
logger.warning("No data; skipping")
|
||||||
|
errors.add(profile.name)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -480,9 +490,9 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
driver.get(WEBURL % 'order/importOrder')
|
driver.get(WEBURL % 'order/importOrder')
|
||||||
|
|
||||||
click(".product-import-img-box .import-img-radio:nth-child(2) .mm-radio-group > label:nth-child(2) .mm-radio-input", condition=None)
|
click(".product-import-img-box .import-img-radio:nth-child(2) .mm-radio-group > label:nth-child(2) .mm-radio-input", condition=None)
|
||||||
click(".product-import-img-box .mm-selector-rendered")
|
click(".import-order-item .okki-select")
|
||||||
click(".mm-outside.mm-select-dropdown ul li:nth-child(%d) span" % (1 if options.get('draft') else 6))
|
click(".okki-select-dropdown .rc-virtual-list-holder-inner > div:nth-child(%d)" % (1 if options.get('draft') else 6))
|
||||||
locate(".big-file-upload input", wait=False).send_keys(str(file))
|
locate(".import-order-item .big-file-upload input", wait=False).send_keys(str(file))
|
||||||
click(".product-import-img-footer button")
|
click(".product-import-img-footer button")
|
||||||
logger.info('Done')
|
logger.info('Done')
|
||||||
except Skip:
|
except Skip:
|
||||||
@@ -512,7 +522,8 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
|||||||
flow.react(Sleep)
|
flow.react(Sleep)
|
||||||
|
|
||||||
if ok is None:
|
if ok is None:
|
||||||
logger.warning('Nothing to do; skipping')
|
logger.warning('Data import failed completely; skipping')
|
||||||
|
errors.add(profile.name)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
click(ok, condition=None)
|
click(ok, condition=None)
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user