Make parts of BOM code more pythonic

This commit is contained in:
Daniel Rojas 2020-07-04 13:11:53 +02:00
parent 84c10e2c1a
commit b2387378c3

View File

@ -343,11 +343,10 @@ class Harness:
for bundle in items.values(): for bundle in items.values():
# add each wire from each bundle to the wirelist # add each wire from each bundle to the wirelist
for index, color in enumerate(bundle.colors, 0): for index, color in enumerate(bundle.colors, 0):
wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name, wirelist.append({'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name,
'manufacturer': bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None, 'manufacturer': bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None,
'manufacturer part number': bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None, 'manufacturer part number': bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None,
'internal part number': bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None} 'internal part number': bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None})
wirelist.append(wireinfo)
# join similar wires from all the bundles to a single BOM item # join similar wires from all the bundles to a single BOM item
wire_group = lambda w: (w.get('type', None), w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number']) wire_group = lambda w: (w.get('type', None), w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number'])
groups = Counter([wire_group(v) for v in wirelist]) groups = Counter([wire_group(v) for v in wirelist])
@ -379,10 +378,7 @@ class Harness:
bom_list.append([k.capitalize() for k in keys]) # create header row with keys bom_list.append([k.capitalize() for k in keys]) # create header row with keys
for item in bom: for item in bom:
item_list = [item.get(key, '') for key in keys] # fill missing values with blanks item_list = [item.get(key, '') for key in keys] # fill missing values with blanks
for i, subitem in enumerate(item_list): item_list = [', '.join(subitem) if isinstance(subitem, List) else subitem for subitem in item_list] # convert any lists into comma separated strings
if isinstance(subitem, List): # convert any lists into comma separated strings item_list = ['' if subitem is None else subitem for subitem in item_list] # if a field is missing for some (but not all) BOM items
item_list[i] = ', '.join(subitem)
if subitem is None: # if a field is missing for some (but not all) BOM items
item_list[i] = ''
bom_list.append(item_list) bom_list.append(item_list)
return bom_list return bom_list