diff --git a/main.py b/main.py index 9457837..3e1bee5 100644 --- a/main.py +++ b/main.py @@ -254,8 +254,6 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): jsonrpc2.define('cancel', lambda: flow.do(Cancel)) jsonrpc2.define('skip', lambda: flow.do(Skip)) jsonrpc2.define('progress', lambda: progress) - jsonrpc2.remove('uptime') - jsonrpc2.define('uptime', lambda: [t1.delta(), t2.delta()]) while not wait(1): try: @@ -286,6 +284,9 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): progress['task'] = 'Task 1 of 4' t2.clear() t2.start() + jsonrpc2.remove('uptime') + jsonrpc2.define('uptime', lambda: [t1.delta(), t2.delta()]) + base = APIURL % profile.subdomain data = list() df = options.get('datefrom') @@ -324,6 +325,7 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): logger.info('Initializing Workbook...') progress['task'] = 'Task 2 of 4' progress['limit'] = len(data) + progress['index'] = 0 t2.clear() t2.start() workbook = openpyxl.Workbook() @@ -371,34 +373,29 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): try: for i, item in enumerate(data, 1): + flow.react() number: str = item['number'] logger.info('[%d/%d] Preprocessing data for %s', i, len(data), number) progress['number'] = number progress['index'] = i-1 if (x := item['category_id']) not in categories: - flow.react() - response = fetch(f'{base}/categories/{x}.json?api_token={profile.token}') - - if 'error' in response: - error = response['error'] - code = response['code'] + if 'error' in (res := fetch(f'{base}/categories/{x}.json?api_token={profile.token}')): + error = res['error'] + code = res['code'] logger.warning("Error while fetching 'category' (code: %s, message: %s); skipping", code, error) continue - else: - categories[x] = response + + categories[x] = res if (x := item['client_id']) not in clients: - flow.react() - response = fetch(f'{base}/clients/{x}.json?api_token={profile.token}') - - if 'error' in response: - error = response['error'] - code = response['code'] + if 'error' in (res := fetch(f'{base}/clients/{x}.json?api_token={profile.token}')): + error = res['error'] + code = res['code'] logger.warning("Error while fetching 'client' (code: %s, message: %s); skipping", code, error) continue - else: - clients[x] = response + + clients[x] = res category = categories.get(item['category_id']) client = clients.get(item['client_id']) @@ -446,7 +443,6 @@ def main(driver: WebDriver, logger = logging.getLogger('main')): if record[9] is None: logger.warning("Could not identify product '%s'", product) sheet.append(record.data) - flow.react() except Skip: pass except Cancel: