Split qty into multiple fields

There is now a numberic field 'qty' and a multiplier field 
'qty_multiplier'
This commit is contained in:
Tyler Ward 2020-09-18 00:37:08 +01:00
parent 94d6fc9015
commit bb37b37d28

View File

@ -103,18 +103,14 @@ class Harness:
if connector.additional_components is not None: if connector.additional_components is not None:
rows.append(["Additional components"]) rows.append(["Additional components"])
for extra in connector.additional_components: for extra in connector.additional_components:
if 'qty' in extra: qty = extra.get('qty', 1)
if isinstance(extra['qty'], int) or isinstance(extra['qty'], float): if 'qty_multiplier' in extra:
qty = extra['qty'] if extra['qty_multiplier'] == 'pincount':
else: # check for special quantities qty = connector.pincount
if extra['qty'] == 'pincount': elif extra['qty_multiplier'] == 'populated':
qty = connector.pincount qty = sum(1 for value in connector.visible_pins.values() if value is True)
elif extra['qty'] == 'connectioncount': else:
qty = sum(1 for value in connector.visible_pins.values() if value is True) raise ValueError('invalid qty parameter {}'.format(extra["qty_multiplier'"]))
else:
raise ValueError('invalid qty parameter {}'.format(extra["qty"]))
else:
qty = 1
rows.append([extra["type"], f'{qty} {extra.get("unit", "")}'.strip()]) rows.append([extra["type"], f'{qty} {extra.get("unit", "")}'.strip()])
rows.append([f'P/N: {extra["pn"]}' if extra["pn"] else None, rows.append([f'P/N: {extra["pn"]}' if extra["pn"] else None,
html_line_breaks(manufacturer_info_field(extra.get("manufacturer", None), extra.get("mpn", None)))]) html_line_breaks(manufacturer_info_field(extra.get("manufacturer", None), extra.get("mpn", None)))])
@ -195,22 +191,18 @@ class Harness:
if cable.additional_components is not None: if cable.additional_components is not None:
rows.append(["Additional components"]) rows.append(["Additional components"])
for extra in cable.additional_components: for extra in cable.additional_components:
if 'qty' in extra: qty = extra.get('qty', 1)
if isinstance(extra['qty'], int) or isinstance(extra['qty'], float): if 'qty_multiplier' in extra:
qty = extra['qty'] if extra['qty_multiplier'] == 'wirecount':
else: # check for special quantities qty *= cable.wirecount
if extra['qty'] == 'wirecount': elif extra['qty_multiplier'] == 'terminations':
qty = cable.wirecount qty *= len(cable.connections)
elif extra['qty'] == 'terminations': elif extra['qty_multiplier'] == 'length':
qty = len(cable.connections) qty *= cable.length
elif extra['qty'] == 'length': elif extra['qty_multiplier'] == 'total_length':
qty = cable.length qty *= cable.length * cable.wirecount
elif extra['qty'] == 'total_length': else:
qty = cable.length * cable.wirecount raise ValueError('invalid qty parameter {}'.format(extra["qty_multiplier"]))
else:
raise ValueError('invalid qty parameter {}'.format(extra["qty"]))
else:
qty = 1
rows.append([extra["type"], f'{qty} {extra.get("unit", "")}'.strip()]) rows.append([extra["type"], f'{qty} {extra.get("unit", "")}'.strip()])
rows.append([f'P/N: {extra["pn"]}' if extra["pn"] else None, rows.append([f'P/N: {extra["pn"]}' if extra["pn"] else None,
html_line_breaks(manufacturer_info_field(extra.get("manufacturer", None), extra.get("mpn", None)))]) html_line_breaks(manufacturer_info_field(extra.get("manufacturer", None), extra.get("mpn", None)))])
@ -399,18 +391,14 @@ class Harness:
for connector in self.connectors.values(): for connector in self.connectors.values():
if connector.additional_components: if connector.additional_components:
for part in connector.additional_components: for part in connector.additional_components:
if 'qty' in part: qty = part.get('qty', 1)
if isinstance(part['qty'], int) or isinstance(part['qty'], float): if 'qty_multiplier' in part:
qty = part['qty'] if part['qty_multiplier'] == 'pincount':
else: # check for special quantities qty = connector.pincount
if part['qty'] == 'pincount': elif part['qty_multiplier'] == 'populated':
qty = connector.pincount qty = sum(1 for value in connector.visible_pins.values() if value is True)
elif part['qty'] == 'connectioncount': else:
qty = sum(1 for value in connector.visible_pins.values() if value is True) raise ValueError('invalid qty parameter {}'.format(part["qty_multiplier'"]))
else:
raise ValueError('invalid aty parameter')
else:
qty = 1
connectors_extra.append( connectors_extra.append(
{ {
'type': part.get('type', None), 'type': part.get('type', None),
@ -488,22 +476,18 @@ class Harness:
for cable in self.cables.values(): for cable in self.cables.values():
if cable.additional_components: if cable.additional_components:
for part in cable.additional_components: for part in cable.additional_components:
if 'qty' in part: qty = part.get('qty', 1)
if isinstance(part['qty'], int) or isinstance(part['qty'], float): if 'qty_multiplier' in part:
qty = part['qty'] if part['qty_multiplier'] == 'wirecount':
else: # check for special quantities qty *= cable.wirecount
if part['qty'] == 'wirecount': elif part['qty_multiplier'] == 'terminations':
qty = cable.wirecount qty *= len(cable.connections)
elif part['qty'] == 'terminations': elif part['qty_multiplier'] == 'length':
qty = len(cable.connections) qty *= cable.length
elif part['qty'] == 'length': elif part['qty_multiplier'] == 'total_length':
qty = cable.length qty *= cable.length * cable.wirecount
elif part['qty'] == 'total_length': else:
qty = cable.length * cable.wirecount raise ValueError('invalid qty parameter {}'.format(part["qty_multiplier"]))
else:
raise ValueError('invalid aty parameter')
else:
qty = 1
cables_extra.append( cables_extra.append(
{ {
'type': part.get('type', None), 'type': part.get('type', None),