diff --git a/kintree/database/inventree_api.py b/kintree/database/inventree_api.py index 4ceb2671..13c3728f 100644 --- a/kintree/database/inventree_api.py +++ b/kintree/database/inventree_api.py @@ -439,7 +439,7 @@ def create_category(parent: str, name: str): return category_pk, is_new_category -def upload_part_image(image_url: str, part_id: int) -> bool: +def upload_part_image(image_url: str, part_id: int, silent=False) -> bool: ''' Upload InvenTree part thumbnail''' global inventree_api @@ -448,7 +448,7 @@ def upload_part_image(image_url: str, part_id: int) -> bool: image_location = settings.search_images + image_name # Download image (multiple attempts) - if not download_with_retry(image_url, image_location, filetype='Image'): + if not download_with_retry(image_url, image_location, filetype='Image', silent=silent): return False # Upload image to InvenTree @@ -462,7 +462,7 @@ def upload_part_image(image_url: str, part_id: int) -> bool: return False -def upload_part_datasheet(datasheet_url: str, part_ipn: int, part_pk: int) -> str: +def upload_part_datasheet(datasheet_url: str, part_ipn: int, part_pk: int, silent=False) -> str: ''' Upload InvenTree part attachment''' global inventree_api @@ -479,7 +479,8 @@ def upload_part_datasheet(datasheet_url: str, part_ipn: int, part_pk: int) -> st datasheet_url, datasheet_location, filetype='PDF', - timeout=10 + timeout=10, + silent=silent, ): return '' diff --git a/kintree/database/inventree_interface.py b/kintree/database/inventree_interface.py index 987aa3d2..aa4d01b7 100644 --- a/kintree/database/inventree_interface.py +++ b/kintree/database/inventree_interface.py @@ -557,7 +557,7 @@ def get_inventree_stock_location_id(stock_location_tree: list): return inventree_api.get_inventree_stock_location_id(stock_location_tree) -def inventree_create(part_info: dict, stock=None, kicad=False, symbol=None, footprint=None, show_progress=True, is_custom=False): +def inventree_create(part_info: dict, stock=None, kicad=False, symbol=None, footprint=None, show_progress=True, is_custom=False, enable_upload=False): ''' Create InvenTree part from supplier part data and categories ''' part_pk = 0 @@ -659,21 +659,24 @@ def inventree_create(part_info: dict, stock=None, kicad=False, symbol=None, foot part_pk, data={'existing_image': inventree_part['existing_image']}) elif inventree_part['image']: - # Add image - image_result = inventree_api.upload_part_image(inventree_part['image'], part_pk) - if not image_result: - cprint('[TREE]\tWarning: Failed to upload part image', silent=settings.SILENT) + if enable_upload: + # Add image + image_result = inventree_api.upload_part_image(inventree_part['image'], part_pk, silent=settings.SILENT) + if not image_result: + cprint('[TREE]\tWarning: Failed to upload part image', silent=settings.SILENT) if inventree_part['datasheet'] and settings.DATASHEET_UPLOAD: - # Upload datasheet - datasheet_link = inventree_api.upload_part_datasheet( - datasheet_url=inventree_part['datasheet'], - part_ipn=inventree_part['IPN'], - part_pk=part_pk, - ) - if not datasheet_link: - cprint('[TREE]\tWarning: Failed to upload part datasheet', silent=settings.SILENT) - else: - cprint('[TREE]\tSuccess: Uploaded part datasheet', silent=settings.SILENT) + if enable_upload: + # Upload datasheet + datasheet_link = inventree_api.upload_part_datasheet( + datasheet_url=inventree_part['datasheet'], + part_ipn=inventree_part['IPN'], + part_pk=part_pk, + silent=settings.SILENT, + ) + if not datasheet_link: + cprint('[TREE]\tWarning: Failed to upload part datasheet', silent=settings.SILENT) + else: + cprint('[TREE]\tSuccess: Uploaded part datasheet', silent=settings.SILENT) if kicad: try: @@ -845,7 +848,7 @@ def inventree_create_alternate(part_info: dict, part_id='', part_ipn='', show_pr inventree_api.update_part(pk=part_pk, data={'existing_image': existing_image}) elif image: - inventree_api.upload_part_image(image_url=image, part_id=part_pk) + inventree_api.upload_part_image(image_url=image, part_id=part_pk, silent=settings.SILENT) # create or update parameters if inventree_part.get('parameters', {}): @@ -866,6 +869,7 @@ def inventree_create_alternate(part_info: dict, part_id='', part_ipn='', show_pr datasheet_url=datasheet, part_ipn=part_ipn, part_pk=part_id, + silent=settings.SILENT, ) if not part_info['datasheet']: cprint('[TREE]\tWarning: Failed to upload part datasheet', silent=settings.SILENT) diff --git a/kintree/search/automationdirect_api.py b/kintree/search/automationdirect_api.py index e9bbe741..a3e44af9 100644 --- a/kintree/search/automationdirect_api.py +++ b/kintree/search/automationdirect_api.py @@ -59,7 +59,7 @@ def find_categories(part_details: str): return None, None -def fetch_part_info(part_number: str) -> dict: +def fetch_part_info(part_number: str, silent=False) -> dict: ''' Fetch part data from API ''' # Load Automation Direct settingss @@ -212,7 +212,7 @@ def search_timeout(timeout=10): except KeyError as e: from ..common.tools import cprint - cprint(f'[INFO]\tNo pricing attribute "{e.args[0]}" found for "{part_number}"', silent=False) + cprint(f'[INFO]\tNo pricing attribute "{e.args[0]}" found for "{part_number}"', silent=silent) part_info['pricing']['1'] = price_per_unit part_info['currency'] = 'USD' @@ -255,7 +255,7 @@ def test_api() -> bool: } } - test_part = fetch_part_info('BX-16ND3') + test_part = fetch_part_info('BX-16ND3', silent=True) if not test_part: test_success = False diff --git a/run_tests.py b/run_tests.py index adc070b7..00afbe2e 100644 --- a/run_tests.py +++ b/run_tests.py @@ -243,6 +243,7 @@ def check_result(status: str, new_part: bool) -> bool: kicad=last_category, symbol=part_info['Symbol'], show_progress=False, + enable_upload=True if number == 'BSS84-7-F' else False, ) inventree_result = check_result(status, new_part)