Compare commits
5
Commits
c326df934e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
123df61930 | ||
|
|
83a3d9a10c | ||
|
|
7d670eee21 | ||
|
|
b682211d22 | ||
|
|
f8c0f7280e |
@@ -156,11 +156,11 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
for key, col in map(lambda k: (k, self.headers[k]), keys):
|
||||
value = str(self.wb.active.cell(row, col).value)
|
||||
self.indices.setdefault(key, dict())[value] = row
|
||||
|
||||
|
||||
def at(self, axis: str, index) -> dict:
|
||||
if (a := self.indices.get(axis)) is None or (b := dict.get(a, index)) is None: return dict()
|
||||
return { k: self.wb.active.cell(b, c).value for k, c in self.headers.items() }
|
||||
|
||||
|
||||
try:
|
||||
logger.info('Downloading product list...')
|
||||
click("header .okki-space .okki-space-item:nth-child(1) button")
|
||||
@@ -210,13 +210,12 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
|
||||
@classmethod
|
||||
def perform(cls):
|
||||
try: spin = driver.find_elements(By.CSS_SELECTOR, ".okki-spin")
|
||||
except: spin = None
|
||||
|
||||
if spin:
|
||||
sleep(parameters['interval'])
|
||||
return True
|
||||
if status == Status.RUNNING:
|
||||
try:
|
||||
if driver.find_elements(By.CSS_SELECTOR, ".okki-spin"):
|
||||
sleep(parameters['interval'])
|
||||
return True
|
||||
except: pass
|
||||
t1.start()
|
||||
return False
|
||||
|
||||
@@ -263,6 +262,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
profile = None
|
||||
progress = { 'task': '' }
|
||||
selection = 0
|
||||
errors = set()
|
||||
|
||||
sp.add(pairs=[ (k.lower(), v) for k, v in flow ])
|
||||
sp.set('actions', lambda: flow.capabilities())
|
||||
@@ -281,6 +281,8 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
name = options.pop('profile')
|
||||
profile = next(filter(lambda o: o.name == name, profiles))
|
||||
except (IndexError, KeyError):
|
||||
logger.error('Operation failed:\n\n%s' % ', '.join(errors)) if errors else None
|
||||
errors.clear()
|
||||
logger.info('Done')
|
||||
status = Status.READY
|
||||
continue
|
||||
@@ -332,6 +334,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
|
||||
if len(data) == 0:
|
||||
logger.warning('Server returned an empty response')
|
||||
errors.add(profile.name)
|
||||
continue
|
||||
|
||||
logger.info('Initializing Workbook...')
|
||||
@@ -459,6 +462,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
|
||||
if sheet.max_row < 2:
|
||||
logger.warning("No data; skipping")
|
||||
errors.add(profile.name)
|
||||
continue
|
||||
|
||||
try:
|
||||
@@ -486,9 +490,9 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
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 .mm-selector-rendered")
|
||||
click(".mm-outside.mm-select-dropdown ul li:nth-child(%d) span" % (1 if options.get('draft') else 6))
|
||||
locate(".big-file-upload input", wait=False).send_keys(str(file))
|
||||
click(".import-order-item .okki-select")
|
||||
click(".okki-select-dropdown .rc-virtual-list-holder-inner > div:nth-child(%d)" % (1 if options.get('draft') else 6))
|
||||
locate(".import-order-item .big-file-upload input", wait=False).send_keys(str(file))
|
||||
click(".product-import-img-footer button")
|
||||
logger.info('Done')
|
||||
except Skip:
|
||||
@@ -518,7 +522,8 @@ def main(driver: WebDriver, logger = logging.getLogger('main')):
|
||||
flow.react(Sleep)
|
||||
|
||||
if ok is None:
|
||||
logger.warning('Nothing to do; skipping')
|
||||
logger.warning('Data import failed completely; skipping')
|
||||
errors.add(profile.name)
|
||||
continue
|
||||
|
||||
click(ok, condition=None)
|
||||
|
||||
Reference in New Issue
Block a user